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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.