Guten Tag, ich habe einen ATmega162, und wollte alle I/O Ports als Ausgang deklarieren und auf high setzen (meine persönliche Art der Funktionsprüfung). Habe, wie es sich gehört, alle DDRx-Register und alle PORTx-Register auf high gesetzt (Nebenbei: JTAG habe ich abgeschaltet, um diese Ports auch nutzen zu können). Nun das Problem: Messe ich an den Ausgängen die Spannung mittels Multimeter, zeigt mir das Messgerät 4,95V an. Schließe ich an einen Ausgang eine LED (1.9V, 2mA) mit Vorwiderstand (R=1,5kΩ) an, sinkt die Spannung auf ca. 1,8V ab. Dies ist aber nur bei den Ports PA, PB, PC und PD so, der Port PE bleibt stabil. Habe es auch mit einem anderen – auch ATmega162 – versucht. Bei ihm das gleiche Problem. Mit einem ATmega16 habe ich es auch versucht. Der hat zwar kein Port PE, aber ansonsten genau das Gleiche. Die Versorgungsspannung bleibt stabil (Netzteil: 5V, 5A). Der Sourcecode ist natürlich relativ simpel. Woran liegt das und was muss ich machen?
Schaltplan? Sonst geraten: Versorgungsspannung korrekt anschließen.
...hast Du diese !%$"§ Kompatibilitäts-Fuse vergessen umzuprogrammieren?
Code schickt man als ASM, nicht als PNG. Zeig mal das Assemblerlisting. Peter
Was sind !%$“§ Kompatibilitäts-Fuse und was ist ein assemblerlisting?
Zeig uns mal die Schaltung. Hoert sich eigentlich nach Ueberlast an, aber es koennte natuerlich auch noch andere Ursachen haben.
Der mit den Bytes tanzt schrieb:
> Was sind !%$“§ Kompatibilitäts-Fuse und ...?
Sorry, da war ich gerade mit den Fingern schneller als mit dem
Datenblatt Lesen: Die Mega162 haben zwar eine '161-compatibility Fuse,
womit der extended-IO-Bereich dem RAM zugewiesen werden kann, aber die
ist von Hause aus unprogrammiert (anders als die 'berüchtigte'
'103er-Kompatibilität beim Mega64).
Die Schaltung, die einige von euch sehen wollen, ist auch ganz simpel. Zur Erinnerung: Die LED-Schaltung, die ich anschließe, zieht ca. 2mA. Ich schließe jeweils auch immer nur eine LED an. Zudem kann ein Ausgang, laut Datenblatt Seite 264, jeweils 40mA liefern.
Ist das Teil auch mal nach dem Start resettet worden? So, wie der Reset beschaltet ist, wird jedenfalls beim Anlegen der Betriebsspannung kein Reset durchgeführt. Ansonsten würde ich der (Über-)Korrektheit halber bei Ausgängen erst die Ports auf einen definierten Startwert setzen und danach die Ports als Ausgänge konfigurieren.
Ich habe was Wichtiges hinzuzufügen. Ich habe mittels des PUD-Bit
(SFIOR-Register) ALLE Pull-Ups abgeschaltet. Beim Messen an den Ports
lag dann nicht mehr das erhoffte Potential von ca. 5V an, sondern ca.
0,1V – also Low-Pegel. Ich habe den Source-Code so gelassen, wie vorher;
aber habe halt, wie gesagt, die Pull-Ups „gesondert“ abgeschaltet. Das
heißt, irgendwie funktioniert das mit dem Ausgang-Deklarieren nicht
(denke ich mal).
@Michael S. : Ja, ich resete – mittels Drahtbrücke – jedes Mal.
> bei Ausgängen erst die Ports auf einen definierten Startwert setzen
Wie geht dieses „auf definierten Startwert setzen“?
Michael S. schrieb: > Ist das Teil auch mal nach dem Start resettet worden? So, wie der Reset > beschaltet ist, wird jedenfalls beim Anlegen der Betriebsspannung kein > Reset durchgeführt. Doch, der Kondensator ist optional.
Hallo, da hier letztens schon so eine Kuriosität mit angeblich falschen Daten auftauchte: die m162def.inc ist 100% ok? Gruß aus Berlin Michael
Nein, die Widerstände sind korrekt gewählt, die Platine hat auch keine Kurzschlüsse usw. Ich habe den Strom, der durch die LEDs fließt, schon zu Beginn gemessen. Beim Anlegen von 5V an die LED-Widerstand-Schaltung, fließen ca. 2,16mA.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.