Forum: Mikrocontroller und Digitale Elektronik ATMEGA16 läuft nicht


von Christoph Wagner (Gast)


Lesenswert?

Hallo.

Mein ATMEGA16 funktioniert nicht. Selbst angeschlossene LEDs leuchten
nicht auf, wenn ich diese direkt BEIM RESET anschalte (Quellcode dafür
100% OK). ergo : Die Ports werden gar nicht gesetzt, was ein Rundgang
mit dem Spannungsmesser und Oszillographen bewiesen hat.

Nun gege ich von der Annahme aus, dass der Chip überhaupt nicht mit der
Programmverarbeitung beginnt. Programmieren lässt er sich seltsamerweise
aber. (?)

Zur schaltung:

Einen Stromlaufplan kann ich leider nicht vollständig zur Verfügung
stellen, da Target 3001! in der freien Version nur 100 Pins zulässt und
das Layout mehr oder weniger gezeichnet wurde :-|. Als
Spannungsversorgung schließe ich ein Netzteil (13,5V 265ma) an den
Spannungswandler, zu beiden Seiten durch 10µF gepuffert. Da der eine
Kondensator so und so Leiterbahntechnisch direkt neben Vcc und GND
liegt, habe ich auf den 100nF verzichtet. ARef, XTAL1 und XTAL2 habe
ich komplett unbeschalten gelassen, da im Datenblatt steht : ARef wäre
egal, und im Internet, dass man das beim internen Oszi mit XTAL1 und 2
auch tun könnte.

Kurzschluss, etc. ist natürlich nicht vorhanden, auf diese
Möglichkeiten hin, sowie auf Funktionalität anderer Baugruppen wurde
hinreichend getestet.

Ist nun mein AT defekt, muss ich diese Pins auch noch beschalten, ist
der Kondensator ungeschickt, oder ist es irgend etwas anderes ???

Vielen Dank an alle, die sich diesen langen Text durchgelesen haben,
und mir trotzdem helfen wollen. ;-)

MfG

Christoph

von Thomas (Gast)


Lesenswert?

Fuse bits gecheckt ?

von Christoph Wagner (Gast)


Lesenswert?

Ja.

SInd alle original werkseitig eingestellt. In ein paar minuten schreib
ich die einstellung (muss erst nachschauen)

von Siggi (Gast)


Lesenswert?

Servus
Liegen am Reset 5 V an nach der Programmierung?

von Christoph Wagner (Gast)


Lesenswert?

So.... hier sind sie :

Locks : alle 0

OCDEN    0
JTAGEN   1
SPIEN    1
CKOPT    0
EESAVE   0
BOOTSZ1  1
BOOTSZ0  1
BOOTRST  0
BODLEVEL 0
BODEN    0
SUT1     0
SUT0     1
CKSEL3   1
CKSEL2   1
CKSEL1   1
CKSEL0   0

PS: könnte mir einer folgende Fuses näher erläutern ???
BOOTRST
BOOTSZ1/0
EESAVE
CKOPT
OCDEN
JTAGEN - muss ich den Ausschalten, um PC2-5 zu verwenden

von Christoph Wagner (Gast)


Lesenswert?

Ja, es liegen 5V an. Außerdem geht von RESET an Vcc(+5V) ein 10KOhm
wiederstand und an GND ein 47pF Kondensator

von Thomas (Gast)


Lesenswert?

hast du noch einen anderen Mega16 er zum testen ?

von Christoph Wagner (Gast)


Lesenswert?

Nein. ab nur den einen.
Kann der etwa defekt sein ?
Ich hab aber bis jetz nichts "schlimmes" mit dem angestellt. Immer
wenn er nicht in der Fassung ist, war er in antistatischem Schaumstoff,
und einen Kurzschluss gabs auch nicht. (genauso wie überspannung)

von Thomas (Gast)


Lesenswert?

Was hast du fr wiederstände an deinen LEDs dran ? vielleicht hast du
deine Ports ja schon gegrillt.

von Thomas (Gast)


Lesenswert?

hast du auch AVCC und AGND spannung dran ?

von Thomas (Gast)


Lesenswert?

DDR Richtig gesetzt ?
PORTS richtig gesetzt ?
LEDs über widerstand an VCC oder an GND ?

von Christoph Wagner (Gast)


Lesenswert?

an PortA hab ich den 74HC541N als Treiber. Danach gehen die Ausgänge
über je einen 180 Ohm Wiederstand an zwei 7segment Anzeigen
parallel(segmente untereinander verbunden). Die gemeinsamen Kathoden
gehen an den Kollektor von NPN-Transistoren, deren Emitter an GND
liegt. Die Basis ist mit je einem 3,0KOhm wiederstand an PortC.0 und
C.1 angeschlossen. Ohne den ATMEGA eingesetzt funktioniert das
tadellos, wenn ich die Leitung künstlich auf wunschpegel setze.

von Christoph Wagner (Gast)


Lesenswert?

AVcc und AGND sind korrekt angeschlossen.
DDRA ist 0xFF (Ausgänge)
DDRC ist 0xFF (ebenfalls)
PORTA ist 0b10101010 (4 sollten auf alle Fälle leuchten)
PORTC ist 0b00000010 (linke 7segment anzeige. PORTC.1 = 5V)
LEDs in 7segment anzeige sind siehe oben über einen Puffer und
Vorwiederstand an Vcc.

von Thomas (Gast)


Lesenswert?

Versuchs mal mit nem anderen PORT.
kann sein dass du irgendwie denport C zerschossen hast.

von Thomas (Gast)


Lesenswert?

sett mal einen freien port auf high und mess die spannung.

von Christoph Wagner (Gast)


Lesenswert?

Einen anderen Port kann ich nicht verwenden. Der Chip sitzt auf seinem
Thron (Sockel) in einer fertig aufgebauten Platine. Mir ist nicht
bewusst, dass ich den PortC zerschossen habe. Der Chip ist keine Woche
alt, und vor dieser Platine nie im Einsatz gewesen. Könnte den die
Schaltungsanordnung wie oben beschrieben den PortC durchrauchen ?.
Aber erst mal grundsätzlich : oben hab ich gefragt, ob es OK ist, XTAL1
und XTAL2 unbeschaltet zu lassen, genauso wie ARef. Ich vermute nämlich
immernoch stark, dass der ATMEGA gar nichts macht, wenn ich saft
anlege.

von Christoph Wagner (Gast)


Lesenswert?

Einen freien Port auf HIGH setzen bringt nichts, da sich der ATMEGA
scheinbar nicht regt. (programmieren lässt er sich), doch bei jeder
inbetriebnahme macht er nichts. Kann das daran liegen, dass die 10µF zu
groß sind, und ich den 10uF neben dem Chip gegen einen 100nF austauschen
sollte ?

von Thomas (Gast)


Lesenswert?

ich hab bei meinem XTAL1, XTAL2 , ARef immer unbeschaltet.

von Christoph Wagner (Gast)


Lesenswert?

Kann es dann villeicht an der JTAGEN Fuse liegen, dass die den PORTC
reserviert ? Die ist laut PONYProg nämlich 1 (Häkchen im Kästchen)

von Thomas (Gast)


Lesenswert?

ich hab gedacht, dass du ihn auf low setzt weil du

JTAGEN - muss ich den Ausschalten, um PC2-5 zu verwenden

geschrieben hast.

setz ihn halt mal auf 0.

von Thomas (Gast)


Lesenswert?

ob der µC läuft kannst du so testen:
byte in das eeprom schreiben (per software auf dem µC)
und dann das eeprom mit ponyprog auslesen.

von Christoph Wagner (Gast)


Lesenswert?

Könnte es sein, dass ich die Falsche Datei unter .include angeben
(AVR-Studio Assembler)

ich schreibe immer :
.include m16def.inc
aber es gibt auch noch m{161,162,163,169}def.inc
und in jeder steht eine andere Register - IO register belegung

Auf meinem Chip steht genau :
"ATMEGA 16"
"16PI"
"0439J"
welche soll ich verwenden ?

von Thomas (Gast)


Lesenswert?

die m16def.inc ist die richtige.

von Thomas (Gast)


Lesenswert?

setze einfach mal nen anderen port auf high und heb n oszi /
spannungsmesser dran.

von Christoph Wagner (Gast)


Lesenswert?

Könnte mir einer bitte ein Codebeispiel schreiben, wie man ein Byte in
den EEPROM schreibt ? (Hab gerade kein Datenblatt zur Hand)

von Christoph Wagner (Gast)


Lesenswert?

OK. die Ports funktionieren einzeln (PORTD,PORTC,PORTB), aber für PortA
kriege ich kein genaues ergebnis. (Sprich : der Oszillator geht auch.)

von Chris (Gast)


Lesenswert?

Du hast oben gesagt, AVCC ist "korrekt angeschlossen". Wie ist es
genau angeschlossen, einfach mit VCC verbunden?

von Gunter (Gast)


Lesenswert?

Hi Christoph,

>Kann es dann villeicht an der JTAGEN Fuse liegen, dass die den PORTC
>reserviert ? Die ist laut PONYProg nämlich 1 (Häkchen im Kästchen)

"Häkchen im Kästchen" heißt _aktiv_ und
_aktiv_ heißt Null !!!

hth
Gunter

von Christoph Wagner (Gast)


Lesenswert?

AVcc ist mit Vcc verbunden.
Das JTAGEN-Problem (soweit wie es ein Problem war) ist gelöst. Die
Ports B,C,D funktionieren einwandfrei, jedoch einzig udn allein bei
Port A tritt beim beschreiben mit dem Bitmuster 10101010 an sämtlichen
Ausgängen eine Spannung von ~0,5V auf. Hat der Port A etwa auch noch
eine Funktion, die man erst abschalten muss ?

von Chris (Gast)


Lesenswert?

> Hat der Port A etwa auch noch eine Funktion,
> die man erst abschalten muss ?

Jein. Port A wird von AVCC gespeist, nicht von VCC. Deswegen spricht
das beschriebene Sympton sehr stark dafür, dass AVCC bei dir eben doch
nicht richtig angeschlossen ist.

von Chris (Gast)


Lesenswert?

> AVcc ist mit Vcc verbunden.

Sorry, hatte das übersehen. Dann weiß ichs auch nicht (ich würde aber
die AVCC-Verbindung nochmal überprüfen, sicher ist sicher).

von ...HanneS... (Gast)


Lesenswert?

Mach erstmal die 100nF-Keramik-C's dran. Ohne die wird dein
Spannungsregler schwingen. Und weitere 100nF direkt an den AVR.

Und dann poste mal dein Programm, vielleicht ist es ja doch nicht 100%
in Ordnung.

...

von madmaxx (Gast)


Lesenswert?

Hardwareaufbau weiter kontrollieren (LED-Verpolung ?), wenn Software
"anscheinend" okay, dann probiers erstmal damit.

von Christoph Wagner (Gast)


Lesenswert?

Das Teil funzt nun. Ich hatte zwei Drahtbrückenenden, die nebeneinander
liegen falsch eingelötet, und damit AVcc mit GND verbunden. Jetzt läuft
alles wunderbar.


Ich sehe diesen Thread hiermit als geschlossen an. (Problem gelöst)


PS:
@ ...HanneS...
Der Spannungwandler ist mit 10µF beschaltet, wovon einer wegen der Nähe
zum AVR den 100nF ersetzt. (s.o.)

von Chris (Gast)


Lesenswert?

> und damit AVcc mit GND verbunden.

Hättest du mal besser gleich nachgemessen, nach so vielen Hinweisen. ;)

von ...HanneS... (Gast)


Lesenswert?

10µF ist sicherlich ein Elko. Der kann den 100nF Keramik nicht ersetzen,
da er zu langsam ist. Ohne die Keramik-C's kann es gehen, muss aber
nicht. Manche Spannungsregler schwingen dann.

...

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.