Forum: Mikrocontroller und Digitale Elektronik MEGA164P läuft nicht an


von 900ss (900ss)


Lesenswert?

Hallo,
ich habe ein Problem, was ich im Moment nicht gelöst bekomme.
Habe leider keine Schaltung, die ich hier anhängen könnte, darum 
beschreibe ich das mal.

Ich habe eine "AVR-Grundschaltung" mit einem MEGA164P auf Lochraster.
Von Reset geht ein 10k nach Vcc.
Einen 16MHz Quartz + zwei Keramik-Cs mit je 22pF nach Masse.
Versorgt wird das ganze über einen 7805 Festspannungsregler, der hat am 
Eingang wie am Ausgang je einen 100nF + einen 10uF Elko nach Masse.
Am MEGA ist an den Versorgungspins auch noch ein keramischer 100nF als 
Puffer.

Ds Programm sieht so aus.
1
#include <avr\io.h>
2
3
int main( void )
4
{
5
  DDRA = 0xFF;
6
7
  while(1)
8
  PORTA +=1;
9
}

Fuses:
Ext:  0xFC
High: 0xD1
Low : 0xD7

Ich messe mit dem Scope an den PORTA-Pins und erwarte ein 
Rechteck-Signal.

Das Problem: von 4 Megas laufen 2 nicht an. Einer der beiden läuft an, 
wenn ich mit der Scopetastkopfspitze ein XTAL-Beinchen des Megas 
antippe.
Der andere Mega läuft nie an. Ich habe bei beiden auch schon mal die 
CKOUT-Fuse gesetzt, es ist immer ein Clock zu sehen. Ob sie anlaufen 
oder nicht. Also der Oszillator scheint zu schwingen.
Ich habe auch schon ein 100nF von Reset nach Masse gelötet. Keine 
Wirkung.
Ich habe die beiden 22pF am Quartz gegen 18pF getauscht. Keine Änderung.

Mit verschiedenen Fuse-Einstellungen habe ich auch schon experimentiert. 
Keine Wirkung.
Und nun weiß ich nicht mehr weiter und wollte Euch mal bitten mir einen 
Tip zu geben, was es sein könnte.

Das blöde ist, dass nicht mal die ISP-Schnittstelle auf dem 
Lochrasteraufbau vorhanden ist. Ich muß den Mega immer aus der Fassung 
quälen :-( Äh ja, der Aufbau ist nicht von mir, aber ich darf ihn zum 
laufen bringen :-/

Edit:
Die beiden Megas, die Probleme machen laufen in meinem STK500 immer an. 
Was ist da nur los?

Danke für ein paar Tips.

von Daniel (Gast)


Lesenswert?

naja genau in solchen sitautionen wäre es interessante eine ISP 
schnittstelle direkt auf dem aufbau zu haben :-)

läuft auf der lochrasterschaltung alles sauber wenn du den atmega164p 
mit dem internen rc osszi laufen lässt?

sind die pegel des quarzes i.O.? hast du den quarz schon mal getauscht?

hast du die fuse wirklich richtig gesetzt (quarz >8MHz?)

bin mir jetzt nicht 100% sicher, aber soweit ich mich erinnere, ist auf 
den xtal pins kein entsprechendes signal zu sehen, wenn der atmega nicht 
anläuft (war bei mir mal so, als ich ohne einen hv programmer zu 
besitzen den atmega fuse-mässig getötet habe...)

von Helmut L. (helmi1)


Lesenswert?

Du sagst du haettest den Pegel am Quarz gemessen. Wie hoch ist der Pegel 
dort und hast du das schon mal mit dem STK500 verglichen. Auch die Fuses 
fuer Full Swing Oszillator gesetzt ?

Gruss Helmi

von 900ss (900ss)


Lesenswert?

@Daniel
Den Quartz, wie auch die Cs habe ich getauscht.
Wenn der Mega nicht anläuft, messe ich trotzdem ein Signal mit 16MHz an 
den XTAL-Pins.
Internen Oszillator habe ich noch nicht probiert. Muß ich mal machen.
Die Fuses stehen meiner Meinung nach richtig. Vielleicht schaut sich das 
auch mal jemand an?

von 900ss (900ss)


Lesenswert?

@Helmi:

Die Fuses stehen standen/stehen (weiß ich gerade nicht) auf Full Swing 
Oscillator. Habe ich auf jedenfall probiert. Pegel habe ich gerade nicht 
im Kopf, aber sie sind beim STK500 genauso. -grummel-

von 900ss (900ss)


Lesenswert?

Ach ja, ein Reset hilft auch nicht weiter. Der Mega bleibt in seinem 
Zustand.

Die Pegel sind an den XTAL-Pins habe ich eben gemessen. Es sind knapp 
4Vss an beiden Pins.

von Daniel (Gast)


Lesenswert?

@900ss
würde fast auf deine sonstige externe beschaltung tippen... mit internem 
rc-osszi laufen lassen...

ist es möglich, dass die atmega164p allenfalls defekt sind (mal die 2 
die nicht furzen), hast du mal kurzschlüsse, etc produziert? (hatt schon 
die lustigsten phänomene...) (gerade beim 164p, wo man gemütlich mit den 
ko messpitzen auf die pins gehen kann und natürlich nach x-messungen am 
falschen ort abrutscht), sprich hast du die möglichkeit jene die nicht 
einwandfrei funktionieren einem funktionscheck zu unterziehen, oder 
weitere von denen du sicher bist zu testen?

intuitiv würd ich das programm das drauf läuft ändern, wobei du bei 
deinen eigentlich korrekten paar zeilen kaum ne mölichkeit besteht (naja 
ab und zu hilfts das unmögliche in frage zu stellen... ggg)

von 900ss (900ss)


Lesenswert?

Beide funktionieren einwandfrei im STK500. Und nun? :-(

von Magnus Müller (Gast)


Lesenswert?

Evtl. ist VCC auf der Lochrasterplatine zu niedrig und bei den 
betreffenden AVRs ist BOD eingeschaltet...

von Uwe .. (uwegw)


Lesenswert?

Im STK500 läuft die Takterzeugung völlig anders als bei deinem Aufbau. 
Wegen der großen Leitungslänge wird der Quarzsockel des STK für einen 
externen Oszillator genutzt, der dann an XTAl1 eingespeist wird. Du 
kannst es also nicht mit nem direkt angeschlossenen Quarz vergleichen.

von 900ss (900ss)


Lesenswert?

Ich habe weiter geforscht.
VCC auf dem Lochrasterboard direkt an den Pins des Megas gemessen = 
5.00V.
Also OK. BOD steht auf 4.7V.
Fuses für "Full Swing with BOD enabled" gesetzt.

Habe dann mein Steckbrett genommen und dort das ganze aufgebaut. Und 
siehe da, alle Megas OK. Habe allerdings die 5V direkt aus dem 
Labornetzteil genommen. Habe dann das Steckbrett mit einem 7805 + 
Kondensatoren versehen. Und siehe da, es funktioniert nicht mehr. Danach 
die Schaltung wieder mit dem Labornetzteil direkt versorgt und mit der 
Spannung gespielt.
Ein sicheres Anlaufen bei ALLEN Megas erst zwischen 4.97V-5.05V. Also 
einige erst bei über 5V! Hier steht ein 6 stelliges HP Tischmultimeter 
und dem glaube ich mal.

Wenn die Megas anliefen und ich die Spannung auf 4.9V runterdrehte, dann 
waren die Dinger plötzlich tot.

BOD auf 2.7V gesetzt. Danach alles OK. Unter 3.3V starben die Dinger 
dann allerdings auch. OK, bei 16MHz sollen sie laut Datenblatt mind. 
4.5V haben.
Das ließe sich noch erklären.

Kann mir das einer erklären? Ich weiß nicht wo da der Fehler sein soll.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Ein sicheres Anlaufen bei ALLEN Megas erst zwischen 4.97V-5.05V. Also
>einige erst bei über 5V! Hier steht ein 6 stelliges HP Tischmultimeter
>und dem glaube ich mal.

Das ist schlichtweg blanker Unsinn. Alle ATMEGAs laufen weit unter 3 
Volt an, manche neuen sogar unter 1,8V.

>BOD steht auf 4.7V.

Mag ich bezweifeln. 4.3V meinst Du. In dem Fall startet der Controller 
auch um und bei 4.3V und nicht erst bei 5.

>Kann mir das einer erklären? Ich weiß nicht wo da der Fehler sein soll.

Meßfehler. Und mindestens einer in der Verdrahtung.

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


Lesenswert?

Beim ATmega164P kann selbst der low-power crystal oscillator bis zur
maximalen Einsatzfrequenz von 16 MHz benutzt werden.

Da dein Oszillator ja schwingt, wäre die einzige Erklärung eigentlich,
dass du ihm zu wenig startup time gegönnt hast.  Dadurch wird der
ROM-Code bereits zu einem Zeitpunkt gelesen, da das Oszillatorsignal
eigentlich noch nicht brauchbar ist, und das Programm ,,verheddert''
sich.

Ansonsten könntest du natürlich noch probieren, einen externen
Oszillator mal testhalber dran zu hängen, und/oder Quarz + Cs durch
einen Keramikresonator zu ersetzen.

Mehr Ideen hätte ich leider auch nicht.  Diese Symptome verstärken
mal wieder meine Abneigung gegen Provisorien wie Lochraster. ;-)

von 900ss (900ss)


Lesenswert?

Travel Rec. wrote:
>>Ein sicheres Anlaufen bei ALLEN Megas erst zwischen 4.97V-5.05V. Also
>>einige erst bei über 5V! Hier steht ein 6 stelliges HP Tischmultimeter
>>und dem glaube ich mal.
>
> Das ist schlichtweg blanker Unsinn. Alle ATMEGAs laufen weit unter 3
> Volt an, manche neuen sogar unter 1,8V.

Es ist kein Unsinn. Behaupte nichts, was du nicht weißt. Hier läuft das 
Ding erst bei ~5V an. PUNKT!

> Mag ich bezweifeln. 4.3V meinst Du. In dem Fall startet der Controller
> auch um und bei 4.3V und nicht erst bei 5.

Stimmt, BOD = 4.3V.

> Meßfehler. Und mindestens einer in der Verdrahtung.

Meßfehler. Klar! Ich meine es könnte sicher sein, aber das so stumpf zu 
behaupten? Nun ja, ist jedenfalls kein Meßfehler.

Aber ich habe die Erklärung. AVR-Grundschaltung. Ich hatte noch eine im 
Kopf, wo nur ein Quartz mit 2 Cs, ein Widerstand nach Plus für Reset und 
GND + VCC natürlich und das war es. Am Telefon habe ich mich eben mit 
einem Freund drüber unterhalten. Und da viel es mir ein, die Pins AGND, 
AVCC sind nicht beschaltet und meine Vermutung liegt wohl richtig. Das 
ist scheinbar notwendig, wenn man BOD nutzen möchte. Hab die Beschaltung 
jetzt gemacht. Nun geht es. Scheinbar ist für BOD die Beschaltung so 
notwendig. Habe es mir eben noch nicht im Datenblatt angesehen.
Wieso pinselt auch einer eine "Grundschaltung" ohne die Beschaltung AVCC 
und AGND ins Netz? Und wieso glaube ich dem so? Was für ein Mist.

Ich danke allen, die hier ihre Zeit geopfert habe.

Mir mal vor die Stirn klatsche ;-)

von 900ss (900ss)


Lesenswert?

Jörg, Du hast mich überholt ;-)

Jörg Wunsch wrote:
> Beim ATmega164P kann selbst der low-power crystal oscillator bis zur
> maximalen Einsatzfrequenz von 16 MHz benutzt werden.

Hmmmm..... wenn man alles richtig macht (s.o.) :-)

> Mehr Ideen hätte ich leider auch nicht.  Diese Symptome verstärken
> mal wieder meine Abneigung gegen Provisorien wie Lochraster. ;-)

Na na :-) Hatte ja nichts damit zu tun. Danke das du auch geschaut hast.

von 900ss (900ss)


Lesenswert?

Hmmm... im Datenblatt habe ich zumindest nichts gefunden, was darauf 
hinweist, dass BOD ohne Beschaltung von AVCC und AGND nicht 
funktioniert. Nur das man diese Pins beschalten sollte auch wenn der ADC 
nicht genutzt wird. Hat von Euch eine die Stelle vielleicht im Kopf :-)

von Magnus Müller (Gast)


Lesenswert?

...immerhin lag ich mit BOD richtig ;)

von 900ss (900ss)


Lesenswert?

Magnus Müller wrote:
> ...immerhin lag ich mit BOD richtig ;)

Wollte ich ja auch nutzen. So was blödes :-)

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


Lesenswert?

900ss D. wrote:

> Hmmm... im Datenblatt habe ich zumindest nichts gefunden, was darauf
> hinweist, dass BOD ohne Beschaltung von AVCC und AGND nicht
> funktioniert. Nur das man diese Pins beschalten sollte auch wenn der ADC
> nicht genutzt wird.

Es steht aber auch da, dass der IC kaputt gehen kann, wenn AVcc unter
Vcc - 0,5 V (oder so) sinkt... das ist bei fehlender Beschaltung
nahezu zwangsläufig der Fall.

Eine Vermutung habe ich nur: die interne bandgap-Referenz, die natürlich
auch fürs BOD gebraucht wird, könnte von AVcc gespeist werden.  AGND
ist meiner Meinung nach nicht ganz so kritisch, der dürfte intern
an einer Stelle schon mit GND verbunden sein, aber die Verbindung für
AVcc muss man extern herstellen (sonst könnte man sie nicht bei Bedarf
mit einer Drossel verblocken).

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.