MISO und SCk Pin als PCINT nutzen

OP #5385768
Lesenswert?
• ▲
▼
Moin!
Kurze Frage:
ich möchte unter Bascom beim Atmega 328P die Pins B2 bis B5 als pin 
change interrupt konfigurieren. Ich habe die 4 Pins über die internen 
Pullups auf high gelegt und möchte nun mit einem GND-Impuls den 
interrupt auslösen
B2 und B3 laufen als PCINT einwandfrei.
B4 und B5 nicht. Die Pins sind als Eingänge konfiguriert und (außer mit 
dem ISP-Stecker) mit nichts verbunden. ISP Stecker ist abgezogen.
Die JTAG funktion muss man z.B. erst deaktivieren, um die betroffenen 
Pins als I/O nutzen zu können. Ist das hier ähnlich? B4 ist beim 328er 
"MISO" und B5 "SCK"...
Mein Bascom Code ist dies:

Enable Pcint0
On Pcint0 Isr            ' das PCINT Register ist bei B2-B5  null
Pcmsk0 = &B00111100      ' Pins B2-B5 als PCINT konfiguriert
Ddrb = &B11000011        ' Pins B2-B5 als Eingänge konfiguriert


Portb.2 = 1              'Pullups
Portb.3 = 1
Portb.4 = 1
Portb.5 = 1

isr:                     'ISR
led_test= 1
waitms 100
led_test= 0
return

Möchte zu gern wissen, woran es liegt. Vielen Dank für Eure Hilfe!
Gruß
Lars
OP #5385793
Lesenswert?
• ▲
▼
Ist ein Fertigmodul.
Aber das reicht mir eigentlich schon als Antwort.
Wenn ich mit meiner Vermutung recht gehabt hätte, hätten hier schon 
leute
geschrieben:" Ja, klar! Du musst natürlich den ISR deaktivieren, sonst 
gehen B4/B5 als PCINT nicht."
Das ist nicht der Fall, also muss ich auf Fehlersuche gehen...
Angehängte Dateien:
#5385834
Lesenswert?
• ▲
▼
Lars H. schrieb:
> Mein Bascom Code ist dies:
>
> Enable Pcint0
> On Pcint0 Isr            ' das PCINT Register ist bei B2-B5  null
> Pcmsk0 = &B00111100      ' Pins B2-B5 als PCINT konfiguriert
> Ddrb = &B11000011        ' Pins B2-B5 als Eingänge konfiguriert
>
> Portb.2 = 1              'Pullups
> Portb.3 = 1
> Portb.4 = 1
> Portb.5 = 1
>                  <<--- HIER

Und was soll das Programm tun wenn es an dieser Stelle (HIER) angekommen 
ist? Hint: "Nichts" ist nicht die richtige Antwort, denn das kann ein 
Programm eben nicht!
#5386818
Lesenswert?
• ▲
▼
Lars H. schrieb:
> hatte ich ja ob geschrieben:
>
> isr:                     'ISR
> led_test= 1
> waitms 100
> led_test= 0
> return

Das Programm soll einfach in die ISR reinlaufen, obwohl kein Interrupt 
vorliegt? Und wohin "return"t das Programm dann zum Schluss?


Lars H. schrieb:
> das Programm ist knapp 30KB groß.

Aha! Das oben gepostete Programm ist also nicht der gesamte Code. Dann 
liegt der Fehler irgendwo in den 29kB die du eben nicht zeigst...

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.