Hallo, ich habe einige unerklärliche Schwierigkeiten mit dem AVR90LS4433. Eine Simulation mit dem AVR Studio ergab keine Lösung. Das angehängte Programm führt nach dem Programmieren des AVRs zu keiner vernünftigen Reaktion. Wird aber die Zeile mit dem Befehl "rcall wait_proc" entfernt und durch den unter diesem Label stehende Code ersetzt, dann funktioniert das Programm ohne Probleme. Wie ist das zu erklären ? Ist bei Aufrufen von Unterprogrammen irgend etwas spezielles zu beachten ? Danke für jede Hilfe Jürgen ---------------------------------- ;*** Hochzählen/blinken von Port D *** .nolist .include "4433def.inc" .list .def temp = r16 .def count = r17 .def count2 = r18 ;***** Interrupt vector table rjmp RESET ; Reset handle reti ; External Interrupt0 handle reti ; Overflow0 Interrupt handle reti ; Analog Comparator Int. handle ;***** Main RESET: ldi temp, $FF out DDRD,temp ; PORTD = all outputs ldi count,$FF ; Zählregister laden loop: out PORTD,count ; Zählregister auf Ausgang rcall wait_proc dec count ; Zählregister für Portausgabe dekrementieren rjmp loop ; Repeat forever wait_proc: ldi count2, $FF ; Zähler für Warteschleife 2 wait2: ldi temp, $FF ; Zähler für Warteschleife 1 wait: dec temp ; Zähler dekrementieren cpi temp, 0 ; Zählerstand mit 0 vergleichen brne wait ; Falls nicht 0, dann weiter abziehen dec count2 ; Zählerstand 2 dekrementieren cpi count2, 0 ; Zählerstand 2 mit 0 vergleichen brne wait2 ; Falls nicht 0 weiter abziehen ret
Hallo! Du hast den Stackpointer nicht initialisiert. Dieses sollte direkt am Anfang des Programmes geschehen: ldi temp, RAMEND out sp, temp Gruß, René
Hallo! > Du hast den Stackpointer nicht initialisiert. Siehe auch http://www.mikrocontroller.net/tutorial3.htm! MfG Andreas
Hallo,
>Du hast den Stackpointer nicht initialisiert.
*Patsch!*
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.