Forum: Mikrocontroller und Digitale Elektronik Interrupt Tutorium


von Jens (Gast)


Lesenswert?

Hallo ich arbeite gerade das Tutorium durch:

Dabei ist mir eine Sache bei den Interrupts unklar:

         ldi temp, 0b00001010  ; INT0 und INT1 konfigurieren
         out MCUCR, temp

         ldi temp, 0b11000000  ; INT0 und INT1 aktivieren
         out GICR, temp

Woher kommen die Werte ?

In der definition steht bei MCUCR 0x35 also 0b00110101 und bei GICR 0x3b 
also 0b00111011. Die INT0 und INT1 liegen an PD2 und PD3 also 
0b00001100. und bei ISC steht in der definition:

.equ    ISC11   =3
.equ    ISC10   =2
.equ    ISC01   =1
.equ    ISC00   =0

und für GICR

.equ  INT1  =7
.equ  INT0  =6
.equ  IVSEL  =1
.equ  IVCE  =0

kann mir das nochmal jemand langsam erklären

von Karl H. (kbuchegg)


Lesenswert?

Auf welchen Teil des Tutoriums beziehst du dich jetzt genau?

Ansonsten gilt (wie immer):
Die einzigen die sowas im Detail tatsächlich definieren, sind die Leute 
bei Atmel. Und die haben alles was es dazu zu wissen gibt, im Datenblatt 
niedergeschrieben. Wenn du also wissen willst, was diese 
Konfigurationswerte exakt machen (sofern es nicht an dieser Stelle im 
Tut beschrieben ist), dann musst du im Datenblatt nachsehen.

von Gast (Gast)


Lesenswert?

Schau mal im Datenblatt ganz hinten die Tabelle "IO register 
decription". Da sind alle Registerbytes aufgelistet, mit den Bedeutungen 
der Bits und ihre Abkürzungen.

von Jens (Gast)


Lesenswert?

Ah alles Klar
da steht bei:

MCUCR und Bit1 -> ISC01
MCUCR und Bit3 -> ISC11

Bit 1 und 3 macht dann -> 0b00001010

und bei:
GICR und Bit7 -> INT1
GICR und Bit6 -> INT0

Bit7 und Bit6 macht dann -> 0b11000000

Danke Gast.

@ Karl heinz:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Interrupts
-> in dem Beispiel

von Karl H. (kbuchegg)


Lesenswert?

Jens schrieb:

> @ Karl heinz:
> http://www.mikrocontroller.net/articles/AVR-Tutorial:_Interrupts
> -> in dem Beispiel

Alles klar. Danke für den Hinweis.
Das ist in der Tat nicht sehr glücklich geschrieben. In der Einleitung 
werden die Bits immer nur beim Namen genannt und im Programm werden die 
Bitnummern direkt in die Binärzahl kodiert.

von Reinhard R. (reirawb)


Lesenswert?

Jens schrieb:
> Dabei ist mir eine Sache bei den Interrupts unklar:
>
>          ldi temp, 0b00001010  ; INT0 und INT1 konfigurieren
Das ist der Inhalt, der in das Steuerregister eingetragen werden soll, 
um die Funktion zu aktivieren. Siehe Datenblatt.
>          out MCUCR, temp
Hier wird der Inhalt in das Steuerregister eingeschrieben.
>          ldi temp, 0b11000000  ; INT0 und INT1 aktivieren
>          out GICR, temp
Das gleich nochmal für das nächste Steuerregister.
> Woher kommen die Werte ?
Aus dem Datenblatt des Prozessors.
>
> In der definition steht bei MCUCR 0x35 also 0b00110101 und bei GICR 0x3b
> also 0b00111011. Die INT0 und INT1 liegen an PD2 und PD3 also
> 0b00001100.
Dies sind die physischen Adressen, über die diese Steuerregister 
angesprochen werden. Das hat nichts mit deren Inhalt zu tun.
Und wo stehen die wohl? Natürlich, im Datenblatt :-)

Rainhard

von Karl H. (kbuchegg)


Lesenswert?

Karl heinz Buchegger schrieb:
> Jens schrieb:
>
>> @ Karl heinz:
>> http://www.mikrocontroller.net/articles/AVR-Tutorial:_Interrupts
>> -> in dem Beispiel
>
> Alles klar. Danke für den Hinweis.
> Das ist in der Tat nicht sehr glücklich geschrieben. In der Einleitung
> werden die Bits immer nur beim Namen genannt und im Programm werden die
> Bitnummern direkt in die Binärzahl kodiert.

@Jens
Könntest du nochmal im Tuturial drüberschauen. Ich hab das mal ein wenig 
verändert. Ist das jetzt klarer?

von Jens (Gast)


Lesenswert?

ich muss jetzt kurz weg aber ich schreib dir heut abend nochmal in den 
thread

Danke auch dir Reinhard

von Jens (Gast)


Lesenswert?

jao, so isses im ersten beispiel klarer

im zweiten steht zwar jetzt immer noch das selbe.
kannst ja noch dazuschreiben das man in der "IO register
decription" Tabelle nach MCUCR und GICR schaut und bei den Bits wo INT0, 
INT1 oder ISC01, ISC11 eine 1 setzt und die anderen 0 lässt ist ja auch 
nich schwer nur hab ich gestern echt nicht gewusst dass die Tabelle die 
da angegebenen bits enthält

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.