Forum: Mikrocontroller und Digitale Elektronik ATMega168 gibt Spannung aus VCC bei 5V am TXD/RXD


von Björn G. (tueftler)


Lesenswert?

Hallo.

Habe hier einen Atmel Mega 168 am laufen der sich ein wenig merkwürdig 
verhält.

Er gibt aus VCC ca. 2,5V aus, wenn ich in die Pins TXD/RXD einen 
TTL-Pegel gebe.
Dadurch werden sogar die LEDs getrieben, die eigentlich "VCC OK" 
signalisieren sollen.

Das ist nun natürlich unschön.

Was auch merkwürdig ist, wenn ich bei eingeschalteten uC per UART etwas 
drauf schreibe, fängt er von vorne an und hört dann auch nicht mehr 
damit auf.
Per Debugger konnte ich sehen, dass er immer genau bis zu sei() läuft 
und dann wieder beim main() anfängt.

Ich denke hier hat wohl der IC nen Schaden :-)

BOT ist disabled und ansonsten sollte er auch kein Reset bekommen.

Björn

von Benedikt K. (benedikt)


Lesenswert?

Björn G. schrieb:

> Er gibt aus VCC ca. 2,5V aus, wenn ich in die Pins TXD/RXD einen
> TTL-Pegel gebe.

Thema Schutzdioden: Von jedem Pin gegen GND bzw. Vcc liegt eine Diode. 
Ist ganz normal das Verhalten.

von André (Gast)


Lesenswert?

Das eigentlich unschoene ist, dass du an einen IC-Pin eine Spannung 
anlegst, obwohl der IC selbst aus ist. Sowas macht man nicht :)

Gruessle

von Björn G. (tueftler)


Lesenswert?

Blöde Sache das.

An dem ATMega ist ein FT232R angeschlossen dessen TX/RX immer auf high 
ist, auch wenn er den PowerOn-Pin noch nicht aktiviert hat (bzw. auf low 
gezogen hat).

D.h. durch den PFet bekommt der uC noch kein Strom, aber die 
Datenleitungen haben schon Saft.
Der POn schaltet erst durch, wenn der FTDI am PC richtig angemeldet ist 
was nun diesen Zustand mit sich bringt.

Aber schon merkwürdig, dass der Atmel bei UART-Daten einfach mal so 
einen Reset durchführt.

Irgendwas ist doch hier total fischig.

Björn

von me (Gast)


Lesenswert?

Mach doch einfach in die Datenleitung welche zum Avr geht ein Widerstand 
rein. So 1k - 10k dann sollte die Spannung einbrechen und den Avr bzw 
die LEDs nicht mehr treiben können - ohne VCC.

lg

von Björn G. (tueftler)


Lesenswert?

Auf sowas muß ich wohl zurück greifen.
Leider ist die Platine schon fertig.
Aber zumindest nur der Prototyp.

An diese Möglichkeit habe ich nun wirklich nicht gedacht :-)

Björn

von Michael U. (amiga)


Lesenswert?

Hallo,

der FTDI hat in der Beziehung ein etwas unschönes Verhalten. Ich habe 
dann bei einer ähnlichen Geschichte dann folgende Lösung genutzt:
VccIO an der AVR-Spannung, Vcc an ein Port-Pin des AVR und abgeschaltet, 
wenn nicht gebraucht. Ub vom USB geht an ein AVR-Portpin und der 
schaltet den ganzen Kram ein, wenn der USB-Anschluß hergestellt wird.

Zumindest war dann die Stromaufnahme im Sleep so, wie erhofft.

Gruß aus Berlin
Michael

von Benedikt K. (benedikt)


Lesenswert?

Darf man VccIO vom FT2xx komplett auf 0V legen? Das Datenblatt erlaubt 
dies nirgends explizit, allerdings steht auch nirgends, dass man das 
nicht darf. Man könnte den Bereich 1,8V-5,2V allerdings so auslegen...
Ich habe daher bisher immer zu der Widerstandslösung gegriffen, bzw. den 
AVR laufen lassen, nur den Rest hinter dem AVR per AVR abgeschaltet.

von Andreas V. (tico)


Lesenswert?

Björn G. schrieb:
> Per Debugger konnte ich sehen, dass er immer genau bis zu sei() läuft
> und dann wieder beim main() anfängt.
>
> Ich denke hier hat wohl der IC nen Schaden :-)

Das ist wenig wahrscheinlich. Vermutlich hat eher Dein Code einen 
Schaden. Wenn man z.B. Interrupts einschaltet, für die es keine 
Interruptfunktion gibt, kann es leicht zu dem von Dir beschriebenen 
Verhalten kommen.

von Peter D. (peda)


Lesenswert?

Björn G. schrieb:
> Er gibt aus VCC ca. 2,5V aus, wenn ich in die Pins TXD/RXD einen
> TTL-Pegel gebe.

Einfach mal das AVR-Datenblatt lesen.
Da gibt es maximale Eingangspegel bezogen auf den VCC-Anschluß!

D.h. VCC muß immer zuerst anlegt werden!


Peter

von Björn G. (tueftler)


Lesenswert?

Hi Ihr da.

@Michael: Ja, das ist wirklich nicht so schick gelöst was FTDI da 
gemacht hat. Normalerweise gehörten TX/RX im unangemeldeten Zustand auf 
Tristate und nicht einfach auf high.

@Andreas: Du hattest recht mit Deiner Vermutung in Sachen falschem 
ISR-Namen. Hatte leichtgläubig den UART-ISRNamen eines Mega1280 benutzt 
was hier nicht zu traf. Ist mir bisher noch nicht aufgefallen, dass der 
uC dann so reagiert :-)
Nun funktioniert alles wie es sollte.

@Peter: Mir war schon klar dass das nicht die feine Art ist einen IC zu 
betreiben. Wie oben beschrieben ist bisher nie diese "Arbeitsweise" des 
FTDIs bei meinen Platinen aufgefallen. Blöde Sache das.

...wieder was dazu gelernt.

Schönen Abend noch,
Björn

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.