Forum: Mikrocontroller und Digitale Elektronik Atmega162 außerhalb von STK500 geht nicht


von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

im STK 500 läuft der atmega 162 prima:

LED1 Betriebsanzeige
LED2 Impulsanzeige
LED3 Warnanzeige

Nun habe ich zum Testen den µC auf ein Steckbrett nach obigem Schaltplan
aufgebaut. Es tut sich aber gar nichts. Spannung von 5V liegt an.

Kann mir jemand einen Tipp geben, was ich falsch gemacht habe?

Vielen Dank
Thomas

von M. M. (miszou)


Lesenswert?

Hi

Reset mit einem 10k Pull Up Widerstand nach VCC vergessen.

Gruß MISZOU

von Thomas (Gast)


Lesenswert?

vielen Dank für die Antwort,
allerdings ändert der 10K von VCC an Reset nichts. Geht immer noch 
nicht.
Woran könnte es sonst noch liegen?

Gruß

Thomas

von spess53 (Gast)


Lesenswert?

Hi

>Woran könnte es sonst noch liegen?

Hast du den Quarz-Oszillator per Fuses aktiviert?

MfG Spess

von Thomas (Gast)


Lesenswert?

@spess
ja, habe ich.

Gruß

Thomas

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
 hier nochmal der geänderte Schaltplan.

Bei den Fuses hatte ich noch CKDIV8 und JTAG rausgenommen.

Habe auch unter Minimalbeschaltung Atmega geschaut. Wenn der µC Saft hat 
müsste er doch laufen......

Gruß

Thomas

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Auf dem STK500 hängen die LEDs übrigens mit der Anode an VCC und werden 
mittels LOW-Pegel vom AVR zum leuchten gebracht.

Gruß,
Magnetus

von Thomas (Gast)


Lesenswert?

@magnetus

habe ich im manual für das STK500 gelesen. Da sitzen noch Transistoren 
dran, damit die LED immer die selbe Betriebsspannung haben.

Aber man kann doch trotzdem mit dem µC LED direkt ansteuern? Das heißt 
dass in meinem Beispiel zumindest irgendeine LED angehen muss.

Habe mal die Spannungen an den Portpins gemessen: Im STK 500 4,4V High, 
LED aus.

Beim µC auf dem Steckbrett ist aber keiner der PIN s auf High, obwohl an 
VCC 5 V anliegen..... wenn ich ihn ins STK 500 stecke, arbeitet er aber 
ganz normal...

ich fürchte ich steh da mächtig auf dem Schlauch ;-((

Gruß

Thomas

von MWS (Gast)


Lesenswert?

Thomas schrieb:
> Da sitzen noch Transistoren
> dran, damit die LED immer die selbe Betriebsspannung haben.

Denselben Betriebsstrom.

Thomas schrieb:
> Habe mal die Spannungen an den Portpins gemessen: Im STK 500 4,4V High,
> LED aus.

Kann von den Transistoren kommen.
Wo ist der Code ? Im recht unwahrscheinlichen Fall würden die Pins 
Tristate gesteuert, d.h. aktiv Low oder offen, das würde so ein 
Fehlerbild ergeben.

von Mark L. (m2k10) Benutzerseite


Lesenswert?

Vielleicht schwingt der Quarz nicht richtig an, Du könntest mal den 
internen Osci aktivieren, wenn's dann läuft liegt der Fehler nicht an 
der Schaltung oder Software..
Gruß
Mark

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

ja, sorry Betriebsstrom..

Habe den Code angehängt.

Gruß

Thomas

von Thomas (Gast)


Lesenswert?

@m2k10

werde ich nachher mal probieren, Danke.

Gruß

Thomas

von Thomas (Gast)


Lesenswert?

Hallo,

habe jetzt den externen Quarz entfernt und die Fuse auf int Oszi 
gestellt.
Aber der µC macht immer noch nichts!!!!

Unter Minimalbeschaltung habe ich bei

www.rn-wissen.de/index.php/Atmel_Controller_Mega8

gesehen, wie jemand den Atmega 8 nur mit VCC, GND, Reset-10k-VCC drei 
LEDs zum Leuchten bringt.


Was braucht denn der Atmega 162 anderes?? Im Datenblatt habe ich 
definitiv nur gefunden, dass er von 1.8 V bis 5.5 V betrieben werden 
kann.

es muss doch was ganz Fundamentales sein, was hier nicht funktioniert. 
Habe auch berücksichtigt, dass ein µC kaputt sein könnte und zweimal 
ausgetauscht.

Es geht einfach nicht.;-((

Hat irgendjemand eine Idee, was ich noch probieren könnte??

Gruß

Thomas

von cskulkw (Gast)


Lesenswert?

Im STK ist der Reset definiert.

Ich glaube nicht, dass es reicht, am Reset nur einen Pullup-widerstand 
anzuschließen. Da sollte mindestens noch ein 1 µF- Kondendator dran. 
Damit ein Reset über den PIN bei jedem Spannungeinschalten auch 
durchgeführt wird. Im STK ist eine Pulldown-Kondensator vorgesehen...

Vielleicht ist es das ja schon.

Lass doch mal eine Kontroll_LED in der äußeren While-Schleife blinken. 
Entsprechend verzögern.

Aber sag mal, führst Du da eine int32-Berechnung durch? Wofür ist die 
gut, wenn Da nur ein paar LED-blinken sollten.

Viel Erfolg

von Serieller (Gast)


Lesenswert?

Hast du ein Multimeter?

Falls ja, verbinde die Minus-Leitung (schwarz, COM) mit Pin 20 (GND) des 
Atmega162. Dann messe mit der Plus-Leitung (rot) folgende Spannungen und 
berichte die Messwerte:

Pin 40:
Pin 9:
Pin 37:
Pin 38:
Pin 39:

Pinlayout wie in
http://www.atmel.com/dyn/resources/prod_documents/doc2513.pdf

von Daniel (Gast)


Lesenswert?

Kann es sein, dass du den Chip verkehrt herum eingesteckt hast? Er ist 
in deinem Bild nämlich mit Kerbe nach unten gezeichnet...

von Serieller (Gast)


Lesenswert?

> Pinlayout wie in
> http://www.atmel.com/dyn/resources/prod_documents/...

Wichtig! Weil deine Skizze eine sehr ungewöhnliche Anordnung der Pins 
hat und großes Potential für Verwechselungen.

von 900ss (900ss)


Lesenswert?

Benutzt du BOD (siehe Fuses)?

Wenn ich das richtig überblicke, dann fehlt bei deiner Beschaltung noch 
was.
Bei mir hat es sich damals genauso verhalten. STK geht, extern nicht.
Siehe auch hier: Beitrag "MEGA164P läuft nicht an"

von MWS (Gast)


Lesenswert?

Na, ist kein Wunder, schau' Dir den Code nochmal an, genau wie ich 
vermutet hab' :D

Die PortA-Pins werden über DDRA gesteuert. Damit sind sie entweder Low 
oder offen. Damit funktioniert eine Led gegen GND natürlich nicht. Warum 
eigentlich diese eher ungewöhnliche Verwendung des DDR-Registers ?

Es gibt Dinge bei denen Tri-State Sinn macht, aber in dieser Schaltung 
nicht.

Wer hat den Code geschrieben ? Wär' der von Dir, hätte es Dir eigentlich 
sofort klar sein müssen, wo's hakt.

von Thomas (Gast)


Lesenswert?

@cskulkw

habe keinen 105er (1µF);-( Tuts zum probieren auch ein 0.1µF?
Die int32 Berechnung brauche ich für die Erzeugung von Harmonischen die 
ziemlich genau
mit extern gemessenen Harmonischen übereinstimmen sollen (Resonanz)

@Serieller
PIN40 5,05 V
PIN9  5,05 V
ohne LEDs:
PIN37 0,7 V
PIN38 0,5V
PIN39 1,2 V

mit LEDs:
PIN37 0,2 V
PIN38 0,05 V
PIN39 0,43 V

@ Daniel
der µC steckt richtig rum! Habe ihn nur deswegen gedreht, weil er in 
einem
Platinenlayout (nicht gepostet) so günstiger zum routen liegt.

@Serieller
Habe das Datenblatt ausgedruckt, die Pinansicht vergrößert und an die 
Wand genagelt;-))

Danke für die Antworten

Thomas

von Thomas (Gast)


Lesenswert?

@MWS
bin Anfänger,Autodidakt und das ist einer meiner ersten Codes. War ganz 
stolz, dass er innerhalb des STK 500 genau das macht was ich möchte. 
Deswegen ist mir leider überhaupt nicht klar, dass ich hier Tri-state 
verwendet habe. Musste mir den Begriff auch erst mal im Wiki durchlesen 
;-((
Muss mir jetzt nochmal im Tutorial anschauen wie man eine LED ohne 
Tri-state
schaltet. Oder hast Du einen Tipp ?

vielen Dank
Gruß

Thomas

von MWS (Gast)


Lesenswert?

Thomas schrieb:
> Deswegen ist mir leider überhaupt nicht klar, dass ich hier Tri-state
> verwendet habe.

Du hast doch PortB auch richtig angesteuert, deswegen musste man fast 
von Absicht ausgehen ;-)

Das DDR = Data Direction Register legt fest, ob's der Portpin Ein- oder 
Ausgang ist. Der klassische Weg eine Led zu schalten, ist den Portpin 
über DDRx auf Ausgang und per PORTx den Zustand, High oder Low zu 
setzen.

Tristate dagegen ist: Offen - Low - High

Wenn man so etwas braucht, dann kann man über den Weg über's 
DDR-Register machen, etwas daß Du offenbar unabsichtlich gemacht hast.

Register PORTA wird nirgends initialisiert, ist aber nach dem Reset auf 
0. Ein Schreiben einer 1 auf ein Bit des DDRA bewirkt, daß der 
entsprechende Pin Ausgang wird, also Low, ein Schreiben einer 0 daß der 
Ausgang offen wird.

Er wird so aber nie High, d.h. Leds von VCC auf Portpin leuchten, aber 
Leds von Portpin gegen GND nie.

Thomas schrieb:
> Oder hast Du einen Tipp ?

Ja, statt hier:
1
DDRA^=(1<<PA2);
den PORTA beschreiben:
1
PORTA^=(1<<PA2);
und DDRA in der initPorts() passend setzen.

von Thomas (Gast)


Lesenswert?

@MWS

Super!!!! Vielen Dank für die ausführliche Erklärung!
Werde heute abend mal den Code entsprechend anpassen und dann schaun was 
passiert. Müsste aber, so wie Du es erklärt hast, laufen...


Gruß

Thomas

von Thomas (Gast)


Lesenswert?

Es läuft!!
Ursache war die der fehlerhafte Implementierung der LED Steuerung, wie 
MWS festgestellt hatte. Die von ihm vorgeschlagene Lösung hat das 
Problem behoben.

Vielen Dank an alle die geholfen haben,

Gruß

Thomas

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.