phucuong23192
Thành Viên PIF
Vòng While(1) sai chỗ nào vậy anh, em debug chạy bình thường màcode trên của em cũng có vấn đề nữa kìa. trong vòng lặp while(1) ấy. em xem lại.
Vòng While(1) sai chỗ nào vậy anh, em debug chạy bình thường màcode trên của em cũng có vấn đề nữa kìa. trong vòng lặp while(1) ấy. em xem lại.
cho cái hình lên xem mới tìm cách giúp bạn đc chứmà sao hiện được chữ rùi mà nó nhòa có cách nào giải quyết ko.tks
Có trở kéo chân RST lên nguồn chưa ? Bạn xem lại hệ thống tụ chống nhiểu xem sao.mấy anh chị cho hỏi về con msp430 28 chân dán. e nạp code vào nó chạy bình thường, nhưng khi rút dây nạp ra nó im ru, chạm tay vào chân RST nó mới chạy, không chạm tay nó câm nín. lỗi vậy là lỗi gì, cách khắc phục. thankssss
Nghe y chang bên thớt này: http://www.diendanti.com/showthread.php?317-Lỗi-Reset-MSP-430&p=4627#post4627mấy anh chị cho hỏi về con msp430 28 chân dán. e nạp code vào nó chạy bình thường, nhưng khi rút dây nạp ra nó im ru, chạm tay vào chân RST nó mới chạy, không chạm tay nó câm nín. lỗi vậy là lỗi gì, cách khắc phục. thankssss
chắc là thiếu trở kéo lên vcc rồi.mấy anh chị cho hỏi về con msp430 28 chân dán. e nạp code vào nó chạy bình thường, nhưng khi rút dây nạp ra nó im ru, chạm tay vào chân RST nó mới chạy, không chạm tay nó câm nín. lỗi vậy là lỗi gì, cách khắc phục. thankssss
Đưa code lên mới nghiên cứu được chứ !Sao mà chữ bị nhòa và không ổn định. Có ai biết lý do bị sao ko
Bạn nên kiểm tra xem vị trí xảy ra ngắt (phần cứng) có bị thay đổi do độ rung của motor khi quay hay ko?Sao mà chữ bị nhòa và không ổn định. Có ai biết lý do bị sao ko
code đây mọi ng nghiên cứu hoàn thành giúp thửBạn nên kiểm tra xem vị trí xảy ra ngắt (phần cứng) có bị thay đổi do độ rung của motor khi quay hay ko?Sao mà chữ bị nhòa và không ổn định. Có ai biết lý do bị sao ko
Về phần code, bạn xem lại phần thuật toán để chắc chắn việc khi xảy ra ngắt, hình ảnh của 1 vòng quay mới đc bắt đầu xuất ra (tức hình ảnh của vòng quay trước không bị chồng sang vòng quay sau)
Mình thấy việc nó bị nhòa có bị ảnh hưởng của phần code. Bạn thử làm theo cách ở phần trên mình nói nhacode đây mọi ng nghiên cứu hoàn thành giúp thửBạn nên kiểm tra xem vị trí xảy ra ngắt (phần cứng) có bị thay đổi do độ rung của motor khi quay hay ko?Sao mà chữ bị nhòa và không ổn định. Có ai biết lý do bị sao ko
Về phần code, bạn xem lại phần thuật toán để chắc chắn việc khi xảy ra ngắt, hình ảnh của 1 vòng quay mới đc bắt đầu xuất ra (tức hình ảnh của vòng quay trước không bị chồng sang vòng quay sau)
#include <msp430g2553.h>
#include "Basic_config.h"
unsigned char Data[100] = {0x00 ,0x00,0x00,0xe7,0xe7,0xe7,0x07,0x07,0xff,0xff,0xff,0x07,0x07,0x27,0x27,0x00,0x00,0xff,0xff,0xff,0x07,0x07,0x27,0x27,0x00,0x00,0xff,0xff,0xff,0xc0,0x80,0x73,0x73,0x80,0xc0,0xff,0xff,0xff,0x00, 0x00, 0xe7, 0xe7, 0xe7, 0x00, 0x00,0xff,0xff,0xff};
unsigned long count = 0, cycle,temp=0;//Counter, Rotating cycle variable
void Timera0_init();
void main (void)
{
WDTCTL = WDTPW + WDTHOLD;//Stop Watchdog Timer
P2SEL = 0;
P2SEL2 = 0;
P2DIR = 0xff;//Configure Port 2 as Output
P1IE |= BIT0;// Enable P1.0 Interrupt
P1IES |= BIT0;// Falling Edge Interrupt
P1IFG &= ~BIT0;// Clear Interrupt Flag
__enable_interrupt();// Enable Masketable Interrupt
TA0CTL = TASSEL_2 + MC_2 + ID_3+ TAIE ;
//Source Clock : SMCLK
//Divided by 8
//Continuous Mode
//Enable Overflow Interrupt
while (1)
{
if (count < 47)
P2OUT = Data[count];
else
P2OUT = 0xFF;
delay_us(cycle/200);
count++;//count is reset by an interrupt program
}
}
#pragma vector = TIMER0_A1_VECTOR
__interrupt void TAIV_Interrupt (void)
{
temp++;//Count number of overflow
TA0CTL &=~TAIFG;
}
#pragma vector = PORT1_VECTOR
__interrupt void P1_ISR (void)
{
count = 0;//Reset counter
temp <<= 16;
cycle = temp | TA0R;
TA0R = 0; // reset result
P1IFG &= ~BIT0;// Clear P1.0 interrupt flag
temp = 0;
}
là cách gì nói ko hiểu lắmMình thấy việc nó bị nhòa có bị ảnh hưởng của phần code. Bạn thử làm theo cách ở phần trên mình nói nhacode đây mọi ng nghiên cứu hoàn thành giúp thửBạn nên kiểm tra xem vị trí xảy ra ngắt (phần cứng) có bị thay đổi do độ rung của motor khi quay hay ko?
Về phần code, bạn xem lại phần thuật toán để chắc chắn việc khi xảy ra ngắt, hình ảnh của 1 vòng quay mới đc bắt đầu xuất ra (tức hình ảnh của vòng quay trước không bị chồng sang vòng quay sau)
#include <msp430g2553.h>
#include "Basic_config.h"
unsigned char Data[100] = {0x00 ,0x00,0x00,0xe7,0xe7,0xe7,0x07,0x07,0xff,0xff,0xff,0x07,0x07,0x27,0x27,0x00,0x00,0xff,0xff,0xff,0x07,0x07,0x27,0x27,0x00,0x00,0xff,0xff,0xff,0xc0,0x80,0x73,0x73,0x80,0xc0,0xff,0xff,0xff,0x00, 0x00, 0xe7, 0xe7, 0xe7, 0x00, 0x00,0xff,0xff,0xff};
unsigned long count = 0, cycle,temp=0;//Counter, Rotating cycle variable
void Timera0_init();
void main (void)
{
WDTCTL = WDTPW + WDTHOLD;//Stop Watchdog Timer
P2SEL = 0;
P2SEL2 = 0;
P2DIR = 0xff;//Configure Port 2 as Output
P1IE |= BIT0;// Enable P1.0 Interrupt
P1IES |= BIT0;// Falling Edge Interrupt
P1IFG &= ~BIT0;// Clear Interrupt Flag
__enable_interrupt();// Enable Masketable Interrupt
TA0CTL = TASSEL_2 + MC_2 + ID_3+ TAIE ;
//Source Clock : SMCLK
//Divided by 8
//Continuous Mode
//Enable Overflow Interrupt
while (1)
{
if (count < 47)
P2OUT = Data[count];
else
P2OUT = 0xFF;
delay_us(cycle/200);
count++;//count is reset by an interrupt program
}
}
#pragma vector = TIMER0_A1_VECTOR
__interrupt void TAIV_Interrupt (void)
{
temp++;//Count number of overflow
TA0CTL &=~TAIFG;
}
#pragma vector = PORT1_VECTOR
__interrupt void P1_ISR (void)
{
count = 0;//Reset counter
temp <<= 16;
cycle = temp | TA0R;
TA0R = 0; // reset result
P1IFG &= ~BIT0;// Clear P1.0 interrupt flag
temp = 0;
}
Tức là bạn phải làm sao cho khi có tín hiệu ngắt, MCU lập tức chuyển sang xuất dữ liệu cho 1 vòng quay mớilà cách gì nói ko hiểu lắm
Nếu hết một vòng quay mà vẫn còn xuất tiếp dữ liệu của vòng cũ thì nó sẽ hiện tầm bậy. Bạn viết sao cho cứ có ngắt hồng ngoại (tức trọn 1 vòng) là xuất lại dữ liệu từ đầu hoặc xuất tiếp dữ liệu khác.là cách gì nói ko hiểu lắm
Thì mỗi lần có tín hiệu ngắt em cho count=0 tức là xuất dữ liệu cho vòng quay mới rồi màTức là bạn phải làm sao cho khi có tín hiệu ngắt, MCU lập tức chuyển sang xuất dữ liệu cho 1 vòng quay mớilà cách gì nói ko hiểu lắm