mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt Tutorium


Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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-Tutori...
-> in dem Beispiel

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jens schrieb:

> @ Karl heinz:
> http://www.mikrocontroller.net/articles/AVR-Tutori...
> -> 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.

Autor: Reinhard R. (reirawb)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Jens schrieb:
>
>> @ Karl heinz:
>> http://www.mikrocontroller.net/articles/AVR-Tutori...
>> -> 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?

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich muss jetzt kurz weg aber ich schreib dir heut abend nochmal in den 
thread

Danke auch dir Reinhard

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.