PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATMEGA8/UART/FLEURY



rico65
31.10.2006, 17:38
Ich hatte einen Atmaga168 mit der Fleury-Uart-Library betrieben und
das klappte auf Anhieb. Nun möchte ich dasselbe auf einem
ATMega8 mit internem Takt machen.
Allerdings kommt jetzt beim Senden nichts raus (empfangen habe ich gar nicht probiert); wenn ich es aber ausprogrammiere (u.a. ohne
Interrupt beim Senden) geht es (allerdings nur 1200 Baud):
UCSRB |= (1 << TXEN) | ( 1 << RXEN ); // UART TX, RX einschalten
UCSRC |= ( 1 << URSEL )|( 3<<UCSZ0 ); // Asynchron 8N1
UBRRH = (uint8_t) (UBRR_BAUD>>8); // USART Baud
UBRRL = (uint8_t) UBRR_BAUD;
uart_puts( "**** ATMega8 ****\n\r" );

Wie gesagt, dann mit Fleury geht nichts mehr. Habe den Eindruck, dass das Programm bis 32 Zeichen in einen Buffer schreibt, dann hängt.

Liegt das wohl am internen (ungenauen) Takt, am Interrupt des
Atmega8 oder sonst was ? Danke.

SprinterSB
31.10.2006, 18:58
Kommt auf die F_CPU an. Bei F_CPU = 16MHz sind 38400 Baud kein Problem (was nicht unbedingt auf deine Software zutrifft, die Hardware bringt's jedenfalls).

ogni42
31.10.2006, 19:02
Hast Du auch den richtigen Chip gewählt? Beim MEga8 sind einige Register anders als beim 168

rico65
31.10.2006, 19:11
Danke für eure Antworten.

Ja, der Chip ist richtig eingestellt.

Was man dem (funktionierenden) Beispielcode
nicht ansieht: Ich habe auf 1 Mhz gestellt und
kommuniziere mit 1200 Baud.

ogni42
31.10.2006, 19:22
Probier mal 8MHz und 1200.

rico65
31.10.2006, 19:36
Hallo <Roboter Genie>, Du meinst also die Fusebits
auf 8 Mhz ändern (nicht nur die Konstante im Code) ?

SprinterSB
31.10.2006, 23:37
Die Konstante im Code muss *immer* mit deiner wirklichen CPU-Frequenz übereinstimmen.

rico65
31.10.2006, 23:42
Ich habe die interne CPU-Frequenz auf 8 Mhz umgestellt
und mit 1200 Baud probiert, geht ohne Fleury aber mit Fleury
auch nicht (also wie bei 1 Mhz).
Danke gleichwohl für die Idee.

Hubert.G
01.11.2006, 10:20
Ich betreibe den UART von Fleury mit 115000 Mega8 allerdings mit mit 7,3728MHz Quarz. Mit dem internen Takt habe ich es noch nie probiert.