Falsche Spannung beim UART eines ATtiny2313

Gast #224585
Hallo

Ich habe mit einem ATtiny2313 das Problem, dass der UART keine
richtigen TTL-Pegel liefert. Bei einer logischen 1 liefert er an Pin 3
(TXD) 5.017 Volt, bei einer 0 immer noch 4.75 Volt, obwohl das hier
eher gegen 0 Volt gehen sollte. Das Signal geht nachher in einen
MAX232N, der so am Ausgang natürlich immer auf etwa demselben Pegel
bleibt und nicht wechselt. Der MAX232N hat aber keinen Einfluss, da der
ATtiny2313 gleich reagiert, wenn er nicht mit dem MAX232N verbunden ist.
Ich dachte auch, dass es aktive Pull-Ups sein könnten, die Aktivierung
des PUD-Bits (Pull-Up Disable) hat aber keine Verbesserung gebracht. Im
Anhang ist der verwendete Quellcode zu finden. Gibt es etwas, was ich
übersehen habe?

Vielen Dank,
Michael
Angehängte Dateien:
Gast
Pullups und das DDR Register wird bei Verwendung des UARTs übergangen.

Also entweder ist die UART Initialisierung nicht OK, ein Kurzschluss
vorhanden, oder der uC kaputt.
Das erste kann man ausschließen, da der Code OK ist.
Gast
Da es auf einem Breadboard aufgebaut ist glaube ich weniger an einen
Kurzschluss, womit es eigentlich nur ein defekter µC sein kann. Danke
für Deine Antwort!
Gast
Wie misst du denn den Pegel ? Mit nem Oszilloskop ?
Ein Voltmeter würde ja nicht viel bringen. Die UART Leitung ist ohne
Daten immer auf 1. Wenn du nun alle 100 ms kurz ein Byte sendest, dann
werden die entsprecenden Bits ja nur für einen Bruchteil einer Sekunde
übertragen (je nach Baudrate) und dann geht die Leitung wieder auf 1.
Gast
TravelRec: Ja, ich habe an Pin 3 (TXD) gemessen. Wie im Ursprungsbeitrag
beschrieben ist der Effekt derselbe, wenn die Verbindung zum MAX232N
nicht besteht.

Sascha: Mangels Oszilloskop nur mit einem digitalen Fluke-Multimeter.
Das hat mir bei I²C-Experimenten (auch einige hundert Hertz) jeweils
einen starken Ausschlag angegeben. Hier jedoch bleibt es immer über
vier Volt, dies habe ich auch mit der "Min"-Funktion nachgeprüft. Ich
weiss, dass dies nicht die optimale Messmethode ist, aber leider habe
ich nichts besseres zur Verfügung. Ich kann testweise mal lauter
Null-Bytes senden, was dann ja TTL-mässig sehr viele niedrige Pegel
sein sollten.
Gast
Dann deaktiviere doch mal kurz das UART und setze den Pin bewußt auf
Low. DDR nicht vergessen. Wenn das geht, ist der Porttreiber noch in
Ordnung. Andere Frage: Was heißt für Dich 0 am UART? Wenn Du per
Routine auf das UDR-Register eine 0 schreibst, so ist diese, wie Sascha
schon sagt, in "nullkommanix" aus dem Pin raus und danach ist alles
wieder 1. Schreibst Du die 0 andauernd, hängt es davon ab, wie oft jene
Routine, verglichen mit der Baudrate, durchlaufen wird. Somit stellt
sich eine Art PWM an dem Pin ein. Wenn Du jetzt mal nichts machst,
außer die Baudrate bei der UART-Init zu verringern, müßte die
"Spannung" an dem Pin von 4,75 V weiter absinken. Wenn das der Fall
ist, dann ist Dein UART okay und Du mußt nur noch das senden, was Du
möchtest.
Gast
>>Mangels Oszilloskop nur mit einem digitalen Fluke-Multimeter.

Dann hast Du nur eine Chance, wenn Du permanent (über UART transmission
interrupt) 0x00 sendest. Über kurze Signale integriert das DMM weg. Oder
häng mal eine LED gegen VCC mit Vorwiderstand ran, die siehst Du
blitzen.

Sven
Gast
Meine Theorie des defekten UART war falsch, der funktioniert nämlich
wunderprächtig. Jedoch kommen leider auf der Empfangsseite nur lauter
«À» an. Hat es ggf. in meinem Programm aus dem ersten Beitrag (test.c)
doch noch einen Fehler?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.