Forum: Mikrocontroller und Digitale Elektronik Verschachtelungen funktionieren nur im Simulator


von Ortner (Gast)


Angehängte Dateien:

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.

von mikki merten (Gast)


Lesenswert?

Du hast SPH vergessen!

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

von Ortner (Gast)


Angehängte Dateien:

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.

von Gerd (Gast)


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

von Ortner (Gast)


Angehängte Dateien:

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

von Gerd (Gast)


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

von Ortner (Gast)


Lesenswert?

Weitere Unterhaltungen und fragen möchte ich im AVR - GCC Bereich 
stellen.

Danke für die Hilfen!!!

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.