Problem mit INT2 am Atmega 32

OP #2270206
Lesenswert?
• ▲
▼
Abend,

ich versuche schon den ganzen Abend den INT 2 am Atmega 32 zu nutzen.
Allerdings tut sich weder in der Simulation noch real etwas.
Wahrscheinlich ist es nur ein dummer Fehler, denn ich aber einfach nicht 
finde.

Ich initialisiere den INT 2 so:
1
  ldi temp, (1<<ISC11) 
2
  out MCUCR, temp
3

4
  ldi temp, (0<<ISC2)
5
  out MCUCSR, temp
6

7
  ldi temp, (0<<INTF2) 
8
  out GIFR, temp
9
      
10
  ldi temp, (1<<INT1) | (1<<INT2)  
11
  out GICR, temp

Global sind Interrupts auch aktiv. (Int 1 läuft).
Das Flag für Int 1 in GIFR wird auch gesetzt nur der Sprung klappt 
nicht.

Gruß und Danke im Voraus Michael
#2270263
Lesenswert?
• ▲
▼
ldi temp, (1<<ISC11)
out MCUCR, temp
ldi temp, (0<<ISC2)
out MCUCSR, temp

und das ist auch Quatsch, da der erste Teil wieder überschrieben wird.
Entweder alle Anweisungen für ein Register in einer Zeile laden.
Oder or/and verwenden.

Bleiben noch die Vektoren. Dran gedacht, dass die beim Mega32 3 Byte 
lang (jmp) sind?
OP #2270318
Lesenswert?
• ▲
▼
H.joachim Seifert schrieb:
> ldi temp, (1<<ISC11)
> out MCUCR, temp
> ldi temp, (0<<ISC2)
> out MCUCSR, temp
>
> und das ist auch Quatsch,
Wiso? MCUCR ist doch was anderes als MCUCSR, oder?

die Vektoren sehen so aus:
1
.org 0x000
2
        rjmp main            
3

4
.org INT2addr
5
        rjmp int2_handler    
6

7
.org INT1addr
8
        rjmp int1_handler   
9

10
.org OC2addr 
11
        rjmp timer2_match
12
     
13
.org OC1Aaddr
14
        rjmp timer1_match      
15

16
.org OVF0addr
17
        rjmp timer0_overflow      
18

19
.org ADCCaddr 
20
        rjmp adc_holen

Was vom Code wollt ihr noch sehen die Routine soll zum test nur ne LED 
einschalten.
Gast #2270410
Lesenswert?
• ▲
▼
Hi

>Was vom Code wollt ihr noch sehen die Routine soll zum test nur ne LED
>einschalten.

Stell einfach das komplette Programm als Anhang rein. Deine 
Salamitaktik bringt nichts. Die Fehler stecken meist in den nicht 
geposteten Programmteilen.

MfG Spess
#2270832
Lesenswert?
• ▲
▼
Michael Mayer schrieb:
> ein reti Befehl kann ich nicht einsetzen.

Es in den Wald laufen zu lassen, geht schonmal garnicht.

Du solltest erstmal den PC abschalten und Dir einen Programmablaufplan 
auf Papier zeichnen.
Wenn man weiß, wie ein Programm funktionieren soll, kann man es 
wesentlich besser in Code umsetzen.

So aus dem Kopf einfach drauflos zu coden, geht in der Regel schief.


Peter
Gast #2270834
Lesenswert?
• ▲
▼
Hi

>ein reti Befehl kann ich nicht einsetzen.

Dann mach wenigstens eine Endlosschleife rein. Denn sonst macht der 
Controller mit dem, was er nach 'out  WDTCR, temp' im Flash findet 
weiter.

MfG Spess
Gast #2271218
Lesenswert?
• ▲
▼
Hi

>Ich schalte im int1_hanlder doch INT 1 ab und nicht INT2.

>ldi temp, (1<<INT1)  -> temp = $80
>out GICR, temp

>ldi temp, (0<<INT1)  -> temp = $00
>out GICR, temp

Damit löscht du in beiden Fällen INT2.

MfG Spess
Gast #2271230
Lesenswert?
• ▲
▼
Hi

>man benutzt in solchen Fällen Read Modify Write Instuktionen falls
>vorhanden. Oder liest ein, maskiert aus, und schreibt zurück.

Genau. Z.B. so:
1
; Setzen
2
in r16,GICR
3
sbr r16,1<<INT1
4
out GICR,r16
5

6
; Löschen
7
in r16,GICR
8
cbr r16,1<<INT1
9
out GICR,r16

MfG Spess

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.