Avatar uživatele
djpapa

ATmega8 USART. Pomoc, vrací nesmyslné znaky.

Zdravím,
po večerech se bavím programováním a tohle mi nedá spát. Chci používat usart komunikaci s atmegou8. Mám tam MAX232CPE a pokud za tímto obvodem spojím RxD a TxD, tak se logicky vrátí hodnota, kterou jsem odeslal, což by mělo značit, že je vše správně zapojeno. Ale když připojím MAX232CPE k atmega8 a spustím terminál začne se mi vracet směs nesmyslných znaků. Čím to může být?

Kód, který používám.

#include <avr/io.h>

// get char
unsigned char uart_getc( void )
{
/* Wait for data to be received /
while ( !(UCSRA & (1<<RXC)) )
;
/
Get and return received data from buffer */
return UDR;
}

// send char
void uart_putc(unsigned char data )
{
while ( !( UCSRA & (1<<UDRE)) )
;
UDR = data;
}

int main(void)
{
char znak;

/***** inicializace uart *****/
UCSRA = 0×00;
UBRRH = 0×00; // nastaveni rychlosti pro krystal 1 MHz
UBRRL = 0×33; // (v pripade taktovani 8 MHz zde pouzijte UBRRL = 0×33; )
UCSRB = 0×18; // povolit vysilani a prijem
UCSRC = 0×86; // ramec dat: 8 datovych, 1 stop bit, bez parity

while(1)
{
znak = uart_getc();

uart_putc(znak);
}

}

Uzamčená otázka

ohodnoťte nejlepší odpověď symbolem palce

Zajímavá 0 před 3981 dny Sledovat Nahlásit



Otázka ještě nemá žádnou odpověď.



Diskuze k otázce

U otázky nebylo diskutováno.

Nový příspěvek
Zajímavé otázky v kategorii Počítače a internet