Atmega162 außerhalb von STK500 geht nicht

Gast #2095178
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
Angehängte Dateien:
Gast #2095267
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
Gast #2095279
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.
Gast #2095829
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
Gast #2095897
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
Gast #2095968
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.
Gast #2096000
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
Gast #2096089
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
Gast #2096135
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.
Gast #2096155
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
Gast #2096231
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren