Chào anh em…
Mình đang gặp 1 vấn đề “mệt mỏi” dám thỉnh ý của anh em đây. Trời ạ !!! anh em xem dùm mình xem mình bị sao nhé.
Mình đang dùng cổng COM để thực hiện truyền thông nối tiếp với VĐK Atmega8, nhưng ko hiểu sao con Atmega mình bị “ma ám ” hay nào ý.
Vấn đề như sau: Cổng com của mình thì ok, mình đã test thử, truyền nhận dữ liệu thì ngon. Còn VĐK thì mình cũng chưa chắc chắn có bị sao ko nhưng chắc cũng ko có vấn đề gì? Vậy mà khi thực hiện truyền thông thì chán quá, chẳng thấy con Atmega8 có động tĩnh gì cả? trước tiên mình truyền dữ liệu từ máy tính xuống và cho VĐk nhận và hiển thị bằng PORTC. Nhưng VĐK nhận dữ liệu rất lung tung và đương nhiên dẫn tới những ứng dụng điều khiển của mình đi theo “mây khói ” luôn.
Đây là vấn đề rất quan trọng đối với mình nên mình rất mong tham khảo ý kiến của các bạn trên diễn đàn.
À, đây là code của mình thực hiện việc nhận dữ liệu của VĐK và hiển thị bằng 8 đơn trên PORTC. Giả sử bạn đã có dữ liệu đưa xuống tù máy tính rùi nhé, các bạn thử xem
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
void UART_Trans(unsigned char i) // ham truyen du lieu len may tinh
{
while (( UCSRA & 0x20 ) == 0)
UDR = i;
}
unsigned char UART_Re() // ham nhan du lieu nhan ve
{
char data;
while((UCSRA & 0x80)==0);
data = UDR;
return data;
}
void main(void)
{
unsigned char nhan;
// Khoi tao PORTB
PORTB=0x00;
DDRB=0x00;
// Khoi tao PORTC
PORTC=0x00;
DDRC=0x7F;
// Khoi tao PORTD
PORTD=0x00;
DDRD=0xFE;
// Khoi tao Timer 0
TCCR0=0x00;
TCNT0=0x00;
// Khoi tao Timer 1
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Khoi tao Timer 2
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// Khoi tao ngat ngoai
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Khoi tao ngat Timer
TIMSK=0x00;
// Khoi tao USART khung truyen: 8 Data, 1 Stop, No Parity
// su dung truyen nhan USART
// toc do baud : 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x4D;
// khoi tao bo so sanh analog
ACSR=0x80;
SFIOR=0x00;
while (1)
{
nhan=UART_Re(); // gia tri nhan dc luu vao bien nhan
PORTC=nhan; // hien thi tren Led don cua PORTC
delay_ms(50);
};
}
Mình đang gặp 1 vấn đề “mệt mỏi” dám thỉnh ý của anh em đây. Trời ạ !!! anh em xem dùm mình xem mình bị sao nhé.
Mình đang dùng cổng COM để thực hiện truyền thông nối tiếp với VĐK Atmega8, nhưng ko hiểu sao con Atmega mình bị “ma ám ” hay nào ý.
Vấn đề như sau: Cổng com của mình thì ok, mình đã test thử, truyền nhận dữ liệu thì ngon. Còn VĐK thì mình cũng chưa chắc chắn có bị sao ko nhưng chắc cũng ko có vấn đề gì? Vậy mà khi thực hiện truyền thông thì chán quá, chẳng thấy con Atmega8 có động tĩnh gì cả? trước tiên mình truyền dữ liệu từ máy tính xuống và cho VĐk nhận và hiển thị bằng PORTC. Nhưng VĐK nhận dữ liệu rất lung tung và đương nhiên dẫn tới những ứng dụng điều khiển của mình đi theo “mây khói ” luôn.
Đây là vấn đề rất quan trọng đối với mình nên mình rất mong tham khảo ý kiến của các bạn trên diễn đàn.
À, đây là code của mình thực hiện việc nhận dữ liệu của VĐK và hiển thị bằng 8 đơn trên PORTC. Giả sử bạn đã có dữ liệu đưa xuống tù máy tính rùi nhé, các bạn thử xem
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
void UART_Trans(unsigned char i) // ham truyen du lieu len may tinh
{
while (( UCSRA & 0x20 ) == 0)
UDR = i;
}
unsigned char UART_Re() // ham nhan du lieu nhan ve
{
char data;
while((UCSRA & 0x80)==0);
data = UDR;
return data;
}
void main(void)
{
unsigned char nhan;
// Khoi tao PORTB
PORTB=0x00;
DDRB=0x00;
// Khoi tao PORTC
PORTC=0x00;
DDRC=0x7F;
// Khoi tao PORTD
PORTD=0x00;
DDRD=0xFE;
// Khoi tao Timer 0
TCCR0=0x00;
TCNT0=0x00;
// Khoi tao Timer 1
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Khoi tao Timer 2
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// Khoi tao ngat ngoai
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Khoi tao ngat Timer
TIMSK=0x00;
// Khoi tao USART khung truyen: 8 Data, 1 Stop, No Parity
// su dung truyen nhan USART
// toc do baud : 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x4D;
// khoi tao bo so sanh analog
ACSR=0x80;
SFIOR=0x00;
while (1)
{
nhan=UART_Re(); // gia tri nhan dc luu vao bien nhan
PORTC=nhan; // hien thi tren Led don cua PORTC
delay_ms(50);
};
}


Comment