Forum: Mikrocontroller und Digitale Elektronik MISO und SCk Pin als PCINT nutzen


von Lars H. (haggen)


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

von Kirsch (Gast)


Lesenswert?

Lars H. schrieb:
> Die JTAG funktion muss man z.B. erst deaktivieren, um die betroffenen
> Pins als I/O nutzen zu können. Ist das hier ähnlich?

Nein.

PCINT sollte problemlos gehen.

Hast du ein Stromlaufplan? Foto vom Aufbau?

von Hermann (Gast)


Lesenswert?

Kirsch schrieb:
> Lars H. schrieb:
>> Die JTAG funktion muss man z.B. erst deaktivieren, um die betroffenen
>> Pins als I/O nutzen zu können. Ist das hier ähnlich?
>
> Nein.
>
> PCINT sollte problemlos gehen.
>
> Hast du ein Stromlaufplan? Foto vom Aufbau?


... und das vollständige Programm!?

von Lars H. (haggen)


Angehängte Dateien:

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...

von Lars H. (haggen)


Lesenswert?

aha! langsam klärt sich das:
Auf dem Modul ist eine SMD LED mit portb.5 verbunden.
Wahrscheinlich als eine Art Status-LED für Programmdaten-Empfang.
Dann wird B4 auch für irgendetwas auf dem Modul reserviert sein.

von Eric B. (beric)


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!

von Lars H. (haggen)


Lesenswert?

hatte ich ja ob geschrieben:

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

Zum Test, ob die vier PCINT alle funktionieren, soll erstmal nur
eine Kontroll- LED für 100ms aufleuchten.
Das tut sie auch bei B2/B3 ordnungsgemäß

von Lars H. (haggen)


Lesenswert?

das Programm ist knapp 30KB groß. Das kann ich niemanden zumuten, alles 
durchzuflöhen...
Ach ja.. ich hatte weiter oben in meinem Code Schnippsel "enable 
interrupts" vergessen. Ist aber im Hauptprogramm vorhanden.

von Eric B. (beric)


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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.