mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verschachtelungen funktionieren nur im Simulator


Autor: Ortner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Schon sehr viel herumprobiert, aber über 2 Verschachtelungen 
funktionieren nicht=> nur im AVR-Studio.Es muss irgendwas mit SP zu tun 
haben. Bitte helfen Sie mir. Mikrokontroller :AT90S8515, AVR-Studio 3.2. 
Danke sehr.

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast SPH vergessen!

reset: ldi temp1, low(RAMEND) ;SP initialisieren
       out SPL, temp1
       ldi temp1, high(RAMEND)
       out SPH, temp1

Autor: Ortner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Danke sehr!
Mikki Merten.
Ich war überrascht wie schnell es ging! Es ist einfach klasse!
Der Mikrokontroller führt alles aus. Die zwei Balken am LCD Display 
verschwinden ,aber der Buchstabe "A" wird nicht angezeigt.Ich hab mit 
verschiedenen Dalay-Zeiten ausprobiert , aber es funktioniert nicht . 
Woran könnte es liegen ? Ich hab STK500. Danke im voraus. Daten im 
Anhang.

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht einfach zu finden: diesen Fehler hast Du gut versteckt!
Dein erster Timer-Int setzt das T-Flag. Ok, aber wo setzt Du es wieder 
zurück? Ich finde kein CLT, nirgendwo. Beim nächsten Aufruf ist deshalb 
das T-Flag schon gesetzt, bevor der Timer überläuft.

Die Konstruktion mit den Timer-Ints kannst Du Dir übrigens sparen. 
Einfach immer das I-Flag im SREG auf Null lassen und statt der Setzerei 
mit dem T-Flag im Int das entsprechende Timer0-Int-Flag abfragen. Wenn 
das I-Flag im SREG nicht gesetzt ist, dann bleibt das Timer-Int-Flag 
immer gesetzt und Du kannst es auch ohne Int-Routine auslesen. So wie 
die Timer-Ints bei Dir gestrickt sind, kannst Du sowieso keine Ints auch 
noch für andere Zwecke verwenden.

Was willst Du mit dieser Konstruktion eigentlich erreichen:

> instruction:  cbi PORTB, 0x1
>    out PORTB, missage

Leider hast du Deine Gedankengänge nicht als Kommentar hinzugefügt, aber 
mit diesem Ding kann irgendwas nicht stimmen. Vier- oder 
Acht-Bit-Ansteuerung? Was ist missage? Wieso musst Du in der ersten 
Zeile das Bit 0 zurücksetzen, wenn Du im nächsten Command sowieso alle 
Bits mit "missage" vollschreibst? Dito weiter unten im Programm.
Kurz: ein wenig kommentieren müsstest Du das schon, wenn man sich nicht 
den ganzen Abend durch die Zeilen quälen soll.

MfG
Gerd

Autor: Ortner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Danke schön für die Hilfe!

Jetzt klappt es!

Es waren richtig blöde Fehler, die ich selber nicht gesehen habe.
LCD 164A braucht zusätzlich etzwas mehr Zeit als nur 3 Mal nop für Chip 
enable signal. Da hab ich einfach Delay miteingebunden.
Gerd, ich hab auch wie Du beschrieben hast ohne Timer0 interrupt zu 
arbeiten programmiert aber ich kann TOV0 im TIFR leider nicht löschen. 
Der neue Code ist beigefügt.
Aber ich möchte jetzt mit IAR - C anfangen und simulieren. Da ich kein 
hex-compiler von IAR besitze möchte mit IAR schreiben und mit icc in 
hex-code compelieren. Kann man denn irgendwo IAR c-compiler bekommen?
Meine Ziele: Automatisiertes Positionierungsgerät mit:
          1 x LCD-Display
          1 x Key pad 3*4
          2 x Schrittmotoren
          Programm ic C

Ich bedanke mich nochmals.
Danke.
MfG
A.Ortner

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Löschen von TOV0 im Timer-Flag Register: Im Datenblatt z.B. vom 2313 
heißt es:

"The bit TOV0 is set (one) when an overflow occurs in Timer/Counter0. 
TOV0 is cleared by hardware when executing the corresponding interrupt 
handling vector. Alternatively, TOV0 is cleared by writing a logical "1" 
to the flag."

Unlogischerweise muss man da also eine Eins hinschreiben, um das Bit zu 
löschen. Warum, versteht wahrscheinlich nur der Hardware-Architekt von 
ATMEL.

Das habe ich aber selbst noch nicht wirklich ausprobiert, also mit 
entsprechender Vorsicht genießen.

MfG
Gerd

Autor: Ortner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weitere Unterhaltungen und fragen möchte ich im AVR - GCC Bereich 
stellen.

Danke für die Hilfen!!!

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.