Dobrý den,
dle návodu na těchto stránkách http://programujte.com/index.php?akce=clanek&cl=2006112102-avr-%96-usart-ii jsem v C sestavil program pro komunikaci mezi PC a ATmega16 prostřednictvím sériové linky.
POPIS FUNKCE:
- mikrokontrolér očekává znak zaslaný z PC
- přijatý znak mikrokontrolér pošle zpět do PC
#include <mega16.h>
#include <stdio.h>
void main(void)
{
unsigned char k;
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x07;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x0C;
ACSR=0x80;
SFIOR=0x00;
/*********************************/
k = 0xFF;
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
k = getchar(); /* !!!!!!!! AVR VZDY PRIJME 0x00 !!!!!!!! */
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
putchar(k); /* AVR POSLE DO PC 0x00 */
}
Problém je v tom, že mikrokontrolér sice znak přijme, ale do proměnné k vloží vždy hodnotu 0x00, kterou poté pošle do PC.
Můžete mi prosím poradit, kde může být problém? (Hardware je na 100% funkční, tam chyba není - odzkoušeno)
Děkuji