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 = 0x00;
UBRRH = 0x00; // nastaveni rychlosti pro krystal 1 MHz
UBRRL = 0x33; // (v pripade taktovani 8 MHz zde pouzijte UBRRL = 0x33; )
UCSRB = 0x18; // povolit vysilani a prijem
UCSRC = 0x86; // 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 2493 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