GIMSK, PCMSK und dann ?

Cassio

Aktives Mitglied
29. Okt. 2008
4.027
17
38
Region Hannover
Sprachen
  1. BascomAVR
Hallo zusammen!

Dank der Hilfe von Dirk, im November letzten Jahres, habe ich ja gelernt, wie ich das
General Interrupt Mask Register
und das
Pin Change Mask Register
richtig lesen muss. ;)

Ich hoffe, ich habe es auch wirklich richtig verstanden.....


An meinem Tiny24v möchte ich gern den PCINT3, PCINT4, PCINT5 und PCINT7 benutzen.
Also habe ich folgende Zeilen in mein Programm eingefügt:
Code:
Gimsk = &B0010_0000       ' PCIE0 aktivieren
Pcmsk0 = &B1011_1000    ' PCINT 3,4,5,7 aktiv

Da BASCOM auch nicht meckert, scheinen die Anweisungen wohl richtig zu sein. :D


Nun kommen aber meine Fragen.... :rolleyes:

Wenn der Tiny24v nun eine Änderung z.B. von PCINT3 (PINA.3) bemerkt, was passiert dann bzw. wie sage ich es in BASCOM, dass er dann zu einer bestimmten ISR springen soll? :confused:
Der Befehl: On PCINT3 ISR_xy
funktioniert so leider nicht. :mad:

Außerdem....
Würde der µC denn bei jeder Änderung (Wechsel zu Hi und zu Low) des Pins zur ISR springen?
Eigentlich soll er nur bei "Low" zur ISR wechseln, weil am PINA.3 ein Taster angeschlossen wird.


Wenn mir da jemand noch mal einen Tipp geben könnte, wie ich das in BASCOM realisieren kann, wäre das bestimmt sehr hilfreich. ;)


Schöne Grüße,
Cassio
 
Hallo!

Ihr braucht nicht weiter nachdenken....

Hat sich erledigt. :D


Grüße,
Cassio !
 
Hallo !

Nun habe ich auch mal wieder etwas Zeit und kann das "Problem" mit dem PCINTx noch mal anschneiden....

Wie immer, liegt das Problem meistens am Benutzer.... ;)

Ich hatte einfach die Zielen in der BASCOM-Hile falsch verstanden, darum klappte es auch nicht.

In der Hilfe steht, dass man mit folgendem Code zum Ziel kommt:

'In case you want PCINT option
' Pcmsk2 = &B0000_0100 'set the mask to ONLY use the pin connected to DOUT
' On Pcint2 Checkints 'label to be called
' Enable Pcint2 'enable this interrupt


Nur hatte ich das 1:1 auf den PCINT3 übertragen, was allerdings Unsinn ist! :stop:

Es ist nicht speziell der Eingang PCINT0 bzw. PCINT1 gemeint, sondern immer nur das Register.
Wohl analog zu dem Befehl: Gimsk = &B0010_0000 (PCIE0 aktivieren)

Mit der anschließenden Anweisung : Pcmsk2 = &B0000_0100
teilt man dann mit, welche Pins überwacht werden sollen.

Danach funktioniert auch der Sprung in die ISR mittels ON PCINTx ISR_xy ! ;)



Ich hatte also nur eine falsche Vorstellung von dem Befehl! :stupido3:

Mein erster Fehler.... Ich dachte, ich muss jeden PCINT einzeln einschalten.

Der zweite Fehler war.... Ich hatte angenommen, dass ich verschiedene ISR anspringen kann, je nach Pin.

Tja, so kommt man allerdings nicht weiter. ;)

Nun sieht der Code so aus:

Code:
' ---------------------------------------------
Enable Pcint0

On Pcint0 Aktiv

Pcmsk0 = &B1011_1000
' ---------------------------------------------

...und alles ist bestens! :D



Der Hintergrund war, den µC möglichst im Schlafmodus zu halten, wenn er nicht gerade eine kurze Aktion ausführen muss.
Klappt prima und die permanente Stromaufnahme beträgt nur noch 0,4µA..... und nicht wie vorher 400µA. :dance3:


Ich hoffe, die Erklärung war verständlich.... und vielleicht auch hilfreich für alle Unwissenden!

Schöne Grüße,
Cassio
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)