www.mikrocontroller.net

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


Autor: Juergen Perthold (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: René König (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

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

ldi     temp, RAMEND
out     sp, temp

Gruß,
René

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

> Du hast den Stackpointer nicht initialisiert.

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

MfG
Andreas

Autor: Juergen Perthold (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

>Du hast den Stackpointer nicht initialisiert.

*Patsch!*

 Danke :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.