www.mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Falsche Spannung beim UART eines ATtiny2313


Autor: hansmi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: hansmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du den Pin am Tiny mal ohne MAX... gemessen? Ist´s der richtige Pin
(nicht mit RXD verwechselt)?

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: hansmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>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

Autor: hansmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke vielmals für die Tipps, ich muss die morgen mal ausprobieren.

Autor: hansmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: hansmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt tut es. Es lag an der Zuweisung von UBRRH und UBRRL. Sobald ich
diese fix auf 0 bzw. 47 setze funktioniert es. Danke für Eure Hilfe.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na das freut doch den Anwender ;-)!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.