www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fragen zu Interrupts (AVR-Tutorial)


Autor: Einsteiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Kann mir jemand folgende Programzeile aus dem AVR-Tutorial (Interrupts) 
erklähren?
ldi temp, (1<<ISC01) | (1<<ISC11) ; <----
out MCUCR, temp
 
ldi temp, (1<<INT0) | (1<<INT1) ; <----
out GICR, temp
Danke

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was verstehst du nicht?

Das << oder die Texte (INT0)?

Autor: Der Micha (steinadler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na in der oberen Zeile wird Bit ISC01 ISC11 gesetzt.
Und in der unteren Bit INT0 und INT1.

Oder habe ich die Frage falsch verstanden?

Was die Bits bedeuten, müsste sich im Datenblatt nachlesen lassen.

EDIT:
das << ist ein einfacher Schiebebefehl, der die Zahl davor um n Stellen 
nach links verschiebt. n ist hierbei die Zahl nach dem <<.
Das ganze gibts auch noch als >> in die andere Richtung

ISC01 beispielsweise hat irgendeinen konstanten Wert zwischen 0 und 7, 
weiß jetzt nicht genau, welchen.

Autor: Einsteiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja war vll bischen ungeschickt formuliert! Meinte aber schon denn << 
Befehl, aber auch warum hier der Oder(|)-Operator verwendet wird und 
nicht der Und(&)?
Weis jetzt nicht genau ob ichs verstanden hab:
Also ich hab nachgeschaut und  ISC00 repräsentiert 0 und ISC01 müsste 1 
repräsentieren... Heißt das dann das durch den Befehl:
ldi temp, (1<<ISC01) | (1<<ISC11)
im Register temp das erste und zweite Bit auf gesetzt werden?
Bleibt aber immernoch die Frage mit dem | Operator...?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Bleibt aber immernoch die Frage mit dem | Operator...?

(1<<ISC01)= 01
(1<<ISC11)= 10

01 & 10 = 00
01 | 10 = 11

Klar?

MfG Spess

Autor: Einsteiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok also habs verstanden denk ich :)
aber ich geh mal davon aus diese Werte nur Beispielhaft verwendet wurden 
oder?
[/avrasm](1<<ISC01)= 01
(1<<ISC11)= 10[/avrasm]
ISC01 stellt (beim atmega8 zuminderst) das 1te Bit dar und ISC11 das 
3te...

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>aber ich geh mal davon aus diese Werte nur Beispielhaft verwendet wurden
>oder?

Ja. Würde für ISC01=0 und ISC11=1 gelten.

MfG Spess

Autor: Werner B. (werner-b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einsteiger schrieb:
> Ok also habs verstanden denk ich :)
> aber ich geh mal davon aus diese Werte nur Beispielhaft verwendet wurden
> oder?
> [/avrasm](1<<ISC01)= 01
> (1<<ISC11)= 10[/avrasm]
> ISC01 stellt (beim atmega8 zuminderst) das 1te Bit dar und ISC11 das
> 3te...

Darum verwendet man ja auch die symbolischen Namen aus dem Include File 
und nicht den numerischen Wert. Bei einem anderen Controller "können" 
das andere Werte sein. Dann hat man zumindest damit kein Problem beim 
Portieren.

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.