watterott ;title =
Ergebnis 1 bis 7 von 7

Thema: atmega328p interupt

  1. #1
    Kabelträger
    Registriert seit
    20.12.2016
    Alter
    73
    Beiträge
    17

    atmega328p interupt

    Kann es sein, das beim atmega328p die pcint10 und 11 nicht vorhanden sind. Der Compiler sagt "unknown interrupt[pcint10]" und "unknown interrupt[pcint11]" oder gibt es dafür noch einen anderen Grund? PCINT12 und 13 werden nicht angemeckert.

    MfG

    Uhland

  2. #2
    Spaghetti-Coder
    Registriert seit
    10.11.2016
    Beiträge
    74
    Hallo Uhland,
    du hast wahrscheinlich im Code ein
    On Interrupt PCINT10 oder ein
    Enable PCINT10 stehen.
    So funktionieren die PinChange Ints aber nicht.
    Sie sind in Gruppen a 8 Bit zusammengefasst. Um den Wechsel am Pin mit der Bezeichnung PCINT10 zu detektieren, musst du dies angeben:
    ON Interrupt PCINT1 (PCINT0: Pins PCINT0-PCINT7), PCINT1: Pins PCINT8-PCINT15)
    Enable PCINT1
    PCMSK1 = &B0000_0100 (PCINT11 wäre PCMSK1 = &B0000_1000)
    Die genauen Bezeichnungen können leicht abweichen. Ich habe hier jetzt kein BASCOM zum Überprüfen.
    Verstanden? Diese Bezeichnungen sind schon etwas verwirrend.
    Dass der Compiler bei einigen meckert bei anderen nicht, liegt wohl daran, dass der Fehler nicht abgefangen wurde.
    Geändert von Basti (10.01.2017 um 13:34 Uhr)

  3. #3
    Moderator Avatar von Trexis5
    Registriert seit
    02.11.2016
    Ort
    Neu-Ulm
    Beiträge
    66
    Code:
    $regfile = "m1284pdef.dat"
    Const _crystal = 1843200
    $crystal = _crystal                                         ' xtal used
    
    
    E_int1_pcint Alias Portb.1
    E_int0_pcint Alias Portb.0
    
    Config E_int1_pcint = Input
    Set E_int1_pcint                                            'activate pull up
    
    Config E_int0_pcint = Input
    Set E_int0_pcint                                            'activate pull up
    
    Enable Pcint8                                               'enable pcint0
    On Pcint8 Isr_pcint8                                        'jump to this label 
    Enable Pcint9                                               'enable pcint
    On Pcint9 Isr_pcint9                                        'jump 
    Pcmsk1 = &B00000011                                         'enable pcint8-pcint9  (portb.0-portb.1)
    Code:
    Isr_pcint8:
      Print "Pin change 8 " 
    Return
    
    
    Isr_pcint9:
      Print "Pin change 9 "
    Return
    Gruß Holger
    link zu mir..

  4. #4
    Kabelträger
    Registriert seit
    20.12.2016
    Alter
    73
    Beiträge
    17
    Danke an Euch beide. Ich denke, ich hab es begriffen. Wen ich "on" schreibe, wird unter anderem nur PCINT0, PCINT1 und PCINT2 angeboten. Ich habe also nur eine Ansprungadresse für alle Pin des PortC zur Verfügung. Im Intunterprogramm muss ich dann den geänderten Pin abfragen. Ist das richtig so?

    on pcint1 taste1int
    enable PCINT1


    pcmsk1 = &B00111100

    für pcint10 bis pcint13

    MfG

    Uhland
    Geändert von fraureuther (10.01.2017 um 15:56 Uhr)

  5. #5
    Moderator Avatar von Trexis5
    Registriert seit
    02.11.2016
    Ort
    Neu-Ulm
    Beiträge
    66
    genau so ist es
    Gruß Holger
    link zu mir..

  6. #6
    Kabelträger
    Registriert seit
    20.12.2016
    Alter
    73
    Beiträge
    17
    Danke, der Interrupt funktioniert.
    MfG

    Uhland
    Geändert von fraureuther (11.01.2017 um 08:41 Uhr)

  7. #7
    Spaghetti-Coder
    Registriert seit
    10.11.2016
    Beiträge
    74
    Zitat Zitat von Trexis5 Beitrag anzeigen

    Enable Pcint8 'enable pcint0
    On Pcint8 Isr_pcint8 'jump to this label
    Enable Pcint9 'enable pcint
    On Pcint9 Isr_pcint9 'jump
    Pcmsk1 = &B00000011 'enable pcint8-pcint9 (portb.0-portb.1)
    [/CODE]

    [CODE]
    Isr_pcint8:
    Print "Pin change 8 "
    Return


    Isr_pcint9:
    Print "Pin change 9 "
    Return
    Hallo Holger,
    ändere doch bitte noch die PCINT Nummern ab. 8 und 9 gibt es ja nicht, die liegen beide auf PCINT1.

    Viele Grüße Basti

Lesezeichen

Lesezeichen

Berechtigungen

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