Forum: Mikrocontroller und Digitale Elektronik ATMega anfänger Probleme


von Matthias S. (bruteforce)


Lesenswert?

Hallo!

Ich versuche grade ein bisschen mit den Ports zu arbeiten und habe zu
Testzwecken folgendes auf einem Breadboard aufgebaut:

An PortA:
PinX---R 240 Ohm---LED---Vcc

und an PortC:
PinX---R 12k Ohm---Vcc
     \
      --[  ]-------GND
       (als Schalter sozusagen)

Nun habe ich folgendes Programm geschriben:
---
#include <avr/io.h>

int main()
{
  DDRA = 0xff;
  DDRC = 0;
  while (1)
  {
    PORTA=PINC;
  }
}
---
Wenn der Microkontroller nun läuft siehts so aus:

(kein "Schalter" geschlossen)

PA0: LED aus
PA1: LED aus
PA2: LED an
PA3: LED an
PA4: LED an
PA5: LED an
PA6: LED aus
PA7: LED aus

Beim schließen der Schalter 2-5 an PortC passiert nichts. Wenn man
0,1,6 oder 7 auf GND zieht, gehen die entsprechenden LEDs an (Wobei ich
ab und zu schon erlebt habe das wenn ich PC0 gegen GND ziehe, PA0 und
PA1 an gehen. Das mag aber evtl auch an der Breadboard konstruktion
liegen)

Nun habe ich erstmal probiert ein bestimmtes Bitmuster auf PortA
auszugeben, was auch korrekt funktionierte. Deshalb gehe ich mal davon
aus, dass da beim Eingang etwas nicht korrekt läuft. Die Schaltung
läuft an einem Labornetzgerät auf genau 5V.

Könnte mir da vielleicht jemand helfen?

CU
Matthias

von A.K. (Gast)


Lesenswert?

Lass mich raten: Meta16/32 und JTAG-Fuse nicht abgeschaltet?

von Christoph W. (christoph)


Lesenswert?

Übrigens ... den 12KOhm Widerstand kannst du auch weglassen. Intern ist
in allen AVRs ein Pull-up Widerstand eingebaut, den man bei Bedarf
zuschalten kann. (Pin als Eingang mit PORTC.X = 1).

Zum Problem : bei Megas muss man das JTAG abschalten, um den kompletten
PORTC verwenden zu können. (war auch mein erstes AVR-Problem ;)

von Matthias S. (bruteforce)


Lesenswert?

Jau super!
An die Fuses hab ich mich noch nicht rangetraut... ;)
Die Pins 2-5 gehen jetzt.

Besten Dank!

von Hannes L. (hannes)


Lesenswert?

Das Abschalten des JTAG-Interfaces geht auch ohne Manipulation an den
Fuses. Einfach zweimal hintereinander JTD in MCUCSR setzen.

...

von Martin (Gast)


Lesenswert?

Da sieht man mal wieder wie hilfreich Foren sind!

ich hatte genau das selbe problem.
hab dann das fuse bit gelöscht und nu geht es..
da soll soll erstmal einer draufkommen... im datenblatt steht zwar dass
des net geht wenn JATG enabled ist, aber man geht ja nicht davon aus,
dass diesen bit dafaultmäßig gesetzt ist und sucht stundenlang nach
anderen fehlern..

ein hoch auf mikrokontroller.net
gruß martin

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.