-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Pin Change Interrupt am Mega2561

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    30.12.2006
    Beiträge
    57

    Pin Change Interrupt am Mega2561

    Anzeige

    Hi,

    ich will / muss den Pin Change Interrupt PCINT4 (PortB.4) nutzen. Wie geht das in BASCOM?
    das kennt Bascom nicht:

    Config PCInt4 = change
    Enable Interrupts
    Enable Pcint4

    On Pcint4 Isr_pcint4
    .
    .
    .

    weis nicht wo ich noch suchen soll
    Its not a bug its a feature

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Das ist´n bisschen tricky - aber eigentlich ganz einfach:

    Es gibt nur 3 PinChange-Interrupts, die aber von je 8 verschiedenen I/O-Pins ausgelöst werden können. Hierzu sind die 24 PCINT-Eingänge in 3 Gruppen zusammengefasst:
    PCINT0: Umfasst alle PCINT-Pins von 0-7 (d.h. PB.0 - PB.7)
    PCINT1: Umfasst alle PCINT-Pins von 8-15
    PCINT2: Umfasst alle PCINT-Pins von 16-23.

    Wenn Du also mit dem Anschluss B.4 arbeiten willst, musst Du erstmal in etwa folgenden Code schreiben:

    Config PCINT0 = change
    On PCINT0 ISR
    Enable PCINT0

    Damit aber die anderen Pins, die zur Gruppe PCINT0 gehören, nicht den selben Interrupt auslösen, gibt´s für jede Gruppe ein sogenanntes "Mask"-Register, mit dem man festlegenen kann, welcher PCINT-Anschluss denn auch wirklich einen Interrupt auslösen soll: PCMSK2, 1 und 0.

    PCMSK0 = &B00010000

    aktiviert z.B. den PCINT4-Eingang als einzigen der Gruppe 0-7 - so wie Du es vorhattest.

    Klar?

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    30.12.2006
    Beiträge
    57
    alles klar,
    vielen Dank
    Its not a bug its a feature

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    30.12.2006
    Beiträge
    57
    Hi,

    zu früh gefreut: Bascom kennt für M2561 keinen PCINTx (?)!

    der Codeschnipsel sieht so aus:

    Config Pcint0 = change
    Pcmsk0 = &B00010000
    On Pcint0 Isr_pcint4
    Enable Pcint0

    ich habe es auch mit low, low_level probiert. ich bekomme immer nur Fehlermeldungen.
    Compiler Version ist: 1.11.9.2


    Und nun?
    Its not a bug its a feature

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Sorry - da hatte ich wohl einen kleinen Denkfehler (war ja auch schon spät gestern...)

    Einen PinChange-Interrupt kann man logischerweise auf nichts anderes konfigurieren als auf "Change" Von daher kann´s diesen Befehl auch nicht geben.

    Lass "Config PCINT = Change" einfach mal weg. Nur

    On PCINT0 ...
    Enable PCINT0
    Enable Interrupts

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    30.12.2006
    Beiträge
    57
    Nö, geht auch nicht.

    Diese Fehlermeldungen bekomme ich:

    Error: 117 Line: 45 Unknown interrupt [PCINT0]
    Error: 85 Line: 46 Unknown interrupt source [PCINT0]
    Its not a bug its a feature

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Hmmm... was der 2561 für Syntax-Spezialitäten hat, weiss ich auch nicht. Das ist eine Liga über mir

    Ganz sicher kannst Du aber direkt das entsprechende Register manuell setzen (PCICR, im Datenblatt gut beschrieben):

    PCICR = &B00000001

    Das aktiviert den PCINT0.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    30.12.2006
    Beiträge
    57
    Das ist schon klar, aber wie ersetze ich On xxx? und den Einsprung in die ISR?
    Its not a bug its a feature

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von slavezero
    Das ist schon klar, aber wie ersetze ich On xxx? und den Einsprung in die ISR?
    Die Interrupts heißen tatsächlich PCI0, PCI1 und PCI2.

    Gruß

    Rolf

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    30.12.2006
    Beiträge
    57
    DANKE

    jetzt gehts da musste erstmal drauf kommen - man o man

    danke und tschüß
    Its not a bug its a feature

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •