Hallo, Bitte zerfetzt mich jetzt nicht. Ich bin auf dem gebiet ein Absoluter Neuling. Ich habe ein PRogramm geschrieben das die LED auf den Ausgängen immer nach einer gewissen Zeit umschalten sollen. Mit hilfe des Stack möchte ich gerne ein Unterprogramm mit der Zeitverzögeung aufrufen. Habe folgenden code zusammengestellt. .include "m8def.inc" .def temp = r16 ldi temp, HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse out SPH, temp ldi temp, LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse out SPL, temp ldi r20, 0xFF ; out DDRB, r20 ;r20 als mein Ausgang an Port B Einstellen start: ldi r20, 0b00000001 ;r20 neu beschreiben out PORTB, r20 rcall sub1 ; sub1 aufrufen ldi r20, 0b00000111 ;r20 neu beschreiben out PORTB, r20 rcall sub1 rjmp start ;und alles wieder von vorne ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++ sub1: ;0.25 sek warten und dann weiter ldi R21, $09 WGLOOP0: ldi R22, $BC WGLOOP1: ldi R23, $C4 WGLOOP2: dec R23 brne WGLOOP2 dec R22 brne WGLOOP1 dec R21 brne WGLOOP0 ret ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++ Leider funktioniert mir das Programm nicht. Die ausgängen bleiben in der Position 0b00000001 stehen. Im AVR Simulator kommt die meldung:"AVR Simulator: Uninitialized stack pointer used at 0x0008" Könnt ihr mir Bitte weiterhelfen? Danke.
> Beginner Stack Problem mit ATMEGA 8515 ^^^^^^^^^^^ > .include "m8def.inc" ^^
Hi >Leider funktioniert mir das Programm nicht. >Die ausgängen bleiben in der Position 0b00000001 stehen. >Im AVR Simulator kommt die meldung:"AVR Simulator: Uninitialized stack >pointer used at 0x0008" Bei mir läuft das im Simulator problemlos. Hast du den richtigen Controller für den Simulator eingestellt? MfG Spess
Ja den Atmega8515. Kann es sein das mir es deshalb nicht funktioniert weil ich den Atmel mit 4 MHZ ansteuerere und für 0.25 sek im Stack den Zyklus 1000000 durlaufen lasse obwohl der Stack im Grunde nur 16 Bit hat?!?
Hi Wie Stefan schon bemerkt hat, benutzt du das Includefile vom ATMega8. Wenn du einen ATMega8515 hast, muss die erste Zeile .include "m8515def.inc" heißen. MfG Spess
Thomas Gruber schrieb: > Kann es sein das mir es deshalb nicht funktioniert weil ich den Atmel > mit 4 MHZ ansteuerere und für 0.25 sek im Stack den Zyklus 1000000 > durlaufen lasse obwohl der Stack im Grunde nur 16 Bit hat?!? nein ganz bestimmt nicht. Schau doch einfach mal nach welchen Wert der Stackpointer hat, wenn die Fehlermeldung kommt.
Thomas Gruber schrieb: > ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++ > > sub1: ;0.25 sek warten und dann weiter > ldi R21, $09 > WGLOOP0: ldi R22, $BC > WGLOOP1: ldi R23, $C4 > WGLOOP2: dec R23 > brne WGLOOP2 > dec R22 > brne WGLOOP1 > dec R21 > brne WGLOOP0 > > ret > ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++ Danke!!! Genau das war der Fehler läuft jetzt. Danke!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.