Atmega329P + SoftUART - Timing ?

Gast #1819965
Lesenswert?

Hallo Forum,

ich versuche seit einiger Zeit auf dem Atmega328 einen Software-UART zu 
betreiben. Ich verwende den Code, welchen Atmel bereitstellt(AVR304: 
Half Duplex Interrupt Driven Software UART on tinyAVR and megaAVR 
devices, siehe Anhang). Der Code ist ursprünglich für 8MHz, ich betreibe 
den ATmega aber mit 16MHz und den UART mit 38400 Baud. Folgender Code 
ist für das Timing zuständig:
1
#ifdef  BR_38400
2
    #define TICKS2COUNT          25  //!< Ticks between two bits.
3
    #define TICKS2WAITONE        25  //!< Wait one bit period.
4
    #define TICKS2WAITONE_HALF   38  //!< Wait one and a half bit period.
5
#endif
Jetzt habe diese Werte einfach verdoppelt (wegen der doppelten 
Taktrate), aber HTerm bringt nur Mist. Auch wenn ich den Atmega mit dem 
internen Takt bei 8MHz betreibe bekomme ich nur Schrott. Wenn ich das 
Oszi dranhänge, sehe ich, dass etwas gesendet wird. Es kommt mir aber so 
vor als ob nur ein Zeichen gesendet wird, obwohl ich in einer Schleife 
jeweils 10 Zeichen senden will.
Ich weiss einfach nicht mehr weiter. Vielleicht kann mir von Euch jemand 
erklären, was ich falsch mache.

Vielen Dank im Voraus.

Andreas
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren