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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren