Forum: Mikrocontroller und Digitale Elektronik Unerklärliche Schwierigkeiten mit AVR90LS4433


von Juergen Perthold (Gast)


Lesenswert?

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

von René König (Gast)


Lesenswert?

Hallo!

Du hast den Stackpointer nicht initialisiert.
Dieses sollte direkt am Anfang des Programmes geschehen:

ldi     temp, RAMEND
out     sp, temp

Gruß,
René

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hallo!

> Du hast den Stackpointer nicht initialisiert.

Siehe auch http://www.mikrocontroller.net/tutorial3.htm!

MfG
Andreas

von Juergen Perthold (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.