Forum: Mikrocontroller und Digitale Elektronik ATmega64 PortG merkwürdiges Verhalten


von Schnulli (Gast)


Lesenswert?

Erstmal vorbeugen: ATmega103 compatibility mode ist ausgeschaltet!

Mein Problem:
Über einen 40106 Schmitt-Trigger habe ich 5 Tasten entprellt und die 
ST-Ausgänge an Port G4..0 angeschlossen.

Pull-Ups gesetzt:
PG1 und PG4 funktionieren normal. Erkennung funktioniert.
Taster losgelassen: 5V
Taster gedrückt:    0V

PG0, PG2 und PG3 verhalten sich komisch.
Taster losgelassen: 5V
Taster gedrückt:    4,85V

Wenn ich die Pins PG0, PG2 und PG3 direkt auf Masse lege, fliessen 90mA 
Strom aus dem Controller heraus (pro Pin!).

DDRG = 0x00; PORTG = 0xff;

Kennt jemand dieses Phänomen und hat es lösen können? Habe inzwischen 2 
Chips ausprobiert, beide das gleiche Verhalten. Wenn ich die Tasten an 
PORTC anschliesse, ist alles in Ordnung.

Gruß,
Schnulli

von Karl H. (kbuchegg)


Lesenswert?

Schau mal im Datenblatt nach, an welchem Port bei deinem µC-Typ das JTAG 
Interface liegt.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Hast du denn die Ports auch als Ports konfiguriert, oder haben sie
Sonderfunktionen?  In den Sonderfunktionen sind das alles Ausgänge...
(TOSC2, ALE, /WR).  Seltsam allerdings, dass PG1 (/RD) davon nicht
betroffen ist, denn der müsste bei aktiviertem XMEM-Interface
ebenfalls im Ruhezustand auf high liegen.

von Schnulli (Gast)


Lesenswert?

JTAG ist glaube ich PORTF. Ist aber per Fuse abgeschaltet. PORTF 
funktioniert bei mir normal. Dort benutze ich zwei Pins für ADC und vier 
für Display-Daten.

von Schnulli (Gast)


Lesenswert?

Nach Datenblatt könnten eigentlich nur die Bits AS0 in ASSRn und SRE in 
MCURC stören. Diese werden aber mit 0 standardmäßig initialisiert. Auch 
daran kann es demnach nicht liegen.

Wenn ich die Pull-Ups für PORTG abschalte, messe ich 150mV, nach 
Tastendruck wieder 0V. Die Differenz zum Tastendruck beträgt also immer 
150mV. Und auch dann sind es die gleichen Tasten, die funktionieren und 
die gleichen drei, die nicht funktionieren.

Der Schmitt-Trigger hat einen symmetrischen Ausgang, der sollte also 
stark genug sein. Wenn man die Ausgänge des Schmitt-Triggers 
zusammenschaltet, kann man einen schönen Kurzschluß provozieren. Das 
Problem liegt damit wohl eindeutig beim µC. 90mA Ausgangsstrom ist 
eindeutig zu viel.

von Hc Z. (mizch)


Lesenswert?

Was gar nicht passt, ist PORTG3.  Der kann als Sonderfunktion höchstens 
Input werden, Output nur durch DDR (Table 46 und Fig. 33 im DS).  Womit 
entweder Hardware oder Messergebnis verdächtig werden.

von Schnulli (Gast)


Lesenswert?

Einen kleinen Schritt bin ich weiter gekommen.

Es reicht scheinbar nicht, nach dem Reset einmal PORTG und DDRG zu 
setzen. Wenn ich vor jeder Tastenabfrage im Timer (25Hz) explizit 
PORTG=0xff und DDRG=0x00 setze, dann kann ich die Tasten alle lesen.

Wenn ich allerdings mit einem Voltmeter die Spannung an den Pins 
kontrollieren möchte, löse ich beim Berühren mit der Meßspitze schon 
einen Tastendruck aus und die Spannung schwankt extrem, ist quasi nicht 
meßbar.
Ich werde nochmal versuchen, das mit einem Oszilloskop zu messen.

von g457 (Gast)


Lesenswert?

Hallo Clemens,

bau doch zum testen mal ein kurzes Testprogramm, das ∗nichts∗ anderes 
macht, als DDR und PORT passend zu setzen. Wenn das funktioniert (also 
die Pins keine Stromquelle mehr sind), dann lass z.B. eine LED blinken 
wenn einer der Pins händisch(!) auf high/low gezogen wurde. Ohne timer, 
ohne Interrupt, einfach nur busy-waiting.

Ich vermute, dass Du irgendwo einen wildgewordenen Zeiger oder etwas 
ähnliches drin hast, der dir den Speicher von PORTG/DDRG regelmäßig mit 
Müll überschreibt.

HTH

von Schnulli (Gast)


Lesenswert?

Ja, so was scheint es zu sein.
Ich habe ein kleines Testprogramm geschrieben, bei dem ich einfach alle 
anderen Sourcen rausgeschmissen habe. Jetzt funktioniert erstmal alles. 
Es handelt also tatsächlich um ein Software-Problem.

Danke für Eure Hilfe.

Gruß,
Clemens

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.