Forum: Mikrocontroller und Digitale Elektronik Interrupts in ASM


von teslanikola (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich bin gerade an einem kleine ASM project dran, ich hab vor kurzem
angefangen zu lerne, jetzt hab ich ein Prog getippt, das alle 0,01sec
in eine Interruptroutine springen soll und dort ein Bit eines Ports auf
Hi setzt, nur es tut sich nichts, abe ich kann ums verrecken den fehler
nicht finden, könnt ihr mir sagen was hier nicht stimmt?

Grüße teslanikola

von johnny.m (Gast)


Lesenswert?

Wenn Du den Timer-Interrupt im TIMSK nicht freigibst, kannste lange
warten...

von Wolfram (Gast)


Lesenswert?

>;Interupt Config II
>sei
>ldi temp,0b10000010
>out tccr1a,temp
>ldi temp,0xb4
>out tcnt1l, temp
>ldi temp,0xe2
>out tcnt1h, temp
>;Stack einrichten
>ldi temp,low(ramend)
>out spl,temp

Außerdem richtet man ERST den Stack ein und initialisiert die
Peripherie BEVOR man ihr erlaubt Interrupts auszulösen.

>;Hauptprogramm
>Main:
> ldi temp,0b00000001
> out portd,temp
> ldi temp,0b00000000
> out portb,temp
>End: rjmp End
>;Interuptroutine
>t1int:
> ldi temp,0b00000001
> out portb,temp
>Reti

Das ist nicht ganz sauber
Was passiert wenn zwischen
> ldi temp,0b00000000
und
> out portb,temp
ein Interrupt auftritt?
Keine Ahnung was du eigentlich willst, aber für größere Programme
würde ich nicht das gleiche Register in der Interruptroutine und dem
Hauptprogramm benutzen ohne es zu sichern!

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.