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.
Du hast SPH vergessen! reset: ldi temp1, low(RAMEND) ;SP initialisieren out SPL, temp1 ldi temp1, high(RAMEND) out SPH, temp1
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.
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
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
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
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.