AT90S1200 Assembler Interrupt ausschalten

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 29 11 2024  14:24:09      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
AT90S1200 Assembler Interrupt ausschalten

    







BID = 54447

Marc10k

Stammposter



Beiträge: 273
Wohnort: Erkelenz
Zur Homepage von Marc10k
 

  


Hallo

Ich verusche jetzt schon einige Zeit den Interrupt bei einem AT90S1200 auszuschalten. Nur leider kann ich den nicht ausschalten. Er bleibt nach dem er eingeschaltet wurde immer an.
Ich möchte folgendes erreichen:
Nach drücken und loslassen eines Tasters wird die Schleife aktiv. Nun möchte ich aus der Schleife verzweigen wenn ich den Taster drücke (Interrupt wird ausgelöst beim Übergang von 5V -> Masse). Das klappt soweit. Danach geht es wieder an den Anfang des ganzen Programmes und es wird auf den nächsten Tastendruck gewartet um die Schleife wieder starten zu können. Alles muss mit einem Taster gemacht werden. Wenn nach dem verlassen der Schleife wieder mit dem Taster starten will springt das Programm immer zur Interruptroutine und nicht zur Schleife.
Im Anhang habe ich mal meinen Programmcode. Ich habe einige Sachen weggelassen um es lesbarer zu machen.
Vielen Dank schonmal

Marcus

BID = 54449

lynx

Gerade angekommen


Beiträge: 10
ICQ Status  

 

  

wenn mich jetzt nicht alles täuscht, werden die interrupts durch das hineinschreiben einer "1" deaktiviert

korrigiert mich wenn ich falsch lieg, aber ich glaub da war mal was :D

BID = 54455

Marc10k

Stammposter



Beiträge: 273
Wohnort: Erkelenz
Zur Homepage von Marc10k

Hallo

Im Datasheet steht drin man kann die Interrupts mit "CLI" ausschalten. Im GIMSK wird Bit 6 gesetzt um den Externen Interrupt zu aktivieren. Aslo "0" zum deaktivieren.

Marcus

BID = 54483

tixiv

Schreibmaschine



Beiträge: 1492
Wohnort: Gelsenkirchen

Pass auf Deinen Stackpointer auf!
Hast Du den überhaupt initialisiert? Wenn nicht ist nämlich jedes Return und jeder call eine potentielle Fehlerquelle.
AUs einem Interrupt steigt man grundsätzlich mit iret (oder wars reti??) aus, da sonst der Stack auch einen Overflow bekommt.
normalerweise würde ich im Interrupt eine Variable setzen, wenn der Taster gedrückt wurde. Im Hauptprogramm kannst Du die dann abfragen. Warum überhaupt die Taste im Interrupt abfragen??

BID = 54495

Jornbyte

Moderator



Beiträge: 7178

Der 1200'er hat keinen Ram, deshalb geht der nicht zu Initialisieren. Aber das DATENBLATT (tixiv liest sowas nicht gern) gibt Auskunft:
During interrupts and subroutine calls, the return address program counter (PC) is stored on the stack. The stack is a 3-level-deep hardware stack dedicated for subroutines
and interrupts.
Eingeschaltet wird der Interrupt mit sei und aus mit cli.


_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 54498

Marc10k

Stammposter



Beiträge: 273
Wohnort: Erkelenz
Zur Homepage von Marc10k

Hallo

Ich habe den Fehler gefunden. Nach dem ich mir das Programm mal ganz genau mit dem AVR Studio Simulator angeschaut habe konnte ich auch keine Fehler feststellen. Jetzt habe ich aber mal einige Zeilen herausgenommen die doppelt waren oder keine Änderung machten und siehe da es klappte. Warum das im Simulator klappte und im Chip nicht ist mir unklar.
Den Stack braucht man beim AT90S1200 nicht (bei den anderen schon) initialisieren weil er nur ein 3 Level Hardware Stack hat und ich bin mir sicher da keinen Overflow zu gemacht haben. Das Programm läuft jetzt ganz gut. Wenn ich noch mehr Lust habe werde ich das wohl mit dem Biut setzen machen und dann in der Schleifer auswerten.
Vielen Dank für die Hilfe

Marcus

BID = 54523

tixiv

Schreibmaschine



Beiträge: 1492
Wohnort: Gelsenkirchen

uuups! Ich dachte das Ding würde so ähnlich funktionieren wie der AT90S2313 - naja... man lernt nie aus.


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag       heute wurden bisher 17 Beiträge verfasst
© x sparkkelsputz        Besucher : 182423508   Heute : 2550    Gestern : 5459    Online : 351        29.11.2024    14:24
2 Besucher in den letzten 60 Sekunden        alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0346660614014