witam ponownie, mam taki drobny problem a atmega8 niby wszystko mam dobrze poustawiane , predkosci, bity, oscylatory zewn. i wewnetrzne a i nie dziala. wysylam z procka liczne 0x31 a w PC otrzymuje 7 liczb 0x00 sprawdzalem z zewn. i wewn. oscylatorem, sprawdzalem na tranzystorowym konwerterze napiec i na max`ie , wszedzie to samo , juz nie mam wiecej pomysłow , funkcje przepisane z podrecznika atmegi , ktos moze ma jakis pomysl ? pewnie to jakas glupota albo nie wiem.z gory dziękuje.
moj prosty program :
#define AVR_ATmega8 #include <avr/io.h>
#include <avr/interrupt.h>
#define FOSC 8000000 #define BAUD 9600 #define MYUBRR FOSC/16/BAUD-1
void USART_Init(unsigned int ubrr) { UBRRH = (unsigned char)(ubrr>>8); UBRRL = (unsigned char) ubrr; UCSRB = (1<<RXEN)|(1<<TXEN); UCSRC = (1<<UMSEL)|(1<<USBS)|(1<<UPM1)|(1<<UCSZ1); };
void USART_Transmit( unsigned char data ) { while ( !( UCSRA & (1<<UDRE)) ) ; UDR = data; };
unsigned char USART_Receive( void ) { while ( !(UCSRA & (1<<RXC)) ); return UDR; };
int main ( void ) { cli(); USART_Init (MYUBRR); sei();
USART_Transmit(0x31); while (1) { USART_Transmit(USART_Receive()); }; };