Hi,
ich will / muss den Pin Change Interrupt PCINT4 (PortB.4) nutzen. Wie geht das in BASCOM?
das kennt Bascom nicht:
Config PCInt4 = change
Enable Interrupts
Enable Pcint4
On Pcint4 Isr_pcint4
.
.
.
weis nicht wo ich noch suchen soll
Hi,
ich will / muss den Pin Change Interrupt PCINT4 (PortB.4) nutzen. Wie geht das in BASCOM?
das kennt Bascom nicht:
Config PCInt4 = change
Enable Interrupts
Enable Pcint4
On Pcint4 Isr_pcint4
.
.
.
weis nicht wo ich noch suchen soll
Its not a bug its a feature
Das ist´n bisschen tricky - aber eigentlich ganz einfach:
Es gibt nur 3 PinChange-Interrupts, die aber von je 8 verschiedenen I/O-Pins ausgelöst werden können. Hierzu sind die 24 PCINT-Eingänge in 3 Gruppen zusammengefasst:
PCINT0: Umfasst alle PCINT-Pins von 0-7 (d.h. PB.0 - PB.7)
PCINT1: Umfasst alle PCINT-Pins von 8-15
PCINT2: Umfasst alle PCINT-Pins von 16-23.
Wenn Du also mit dem Anschluss B.4 arbeiten willst, musst Du erstmal in etwa folgenden Code schreiben:
Config PCINT0 = change
On PCINT0 ISR
Enable PCINT0
Damit aber die anderen Pins, die zur Gruppe PCINT0 gehören, nicht den selben Interrupt auslösen, gibt´s für jede Gruppe ein sogenanntes "Mask"-Register, mit dem man festlegenen kann, welcher PCINT-Anschluss denn auch wirklich einen Interrupt auslösen soll: PCMSK2, 1 und 0.
PCMSK0 = &B00010000
aktiviert z.B. den PCINT4-Eingang als einzigen der Gruppe 0-7 - so wie Du es vorhattest.
Klar?
alles klar,
vielen Dank
Its not a bug its a feature
Hi,
zu früh gefreut: Bascom kennt für M2561 keinen PCINTx (?)!
der Codeschnipsel sieht so aus:
Config Pcint0 = change
Pcmsk0 = &B00010000
On Pcint0 Isr_pcint4
Enable Pcint0
ich habe es auch mit low, low_level probiert. ich bekomme immer nur Fehlermeldungen.
Compiler Version ist: 1.11.9.2
Und nun?
Its not a bug its a feature
Sorry - da hatte ich wohl einen kleinen Denkfehler (war ja auch schon spät gestern...)
Einen PinChange-Interrupt kann man logischerweise auf nichts anderes konfigurieren als auf "Change" Von daher kann´s diesen Befehl auch nicht geben.
Lass "Config PCINT = Change" einfach mal weg. Nur
On PCINT0 ...
Enable PCINT0
Enable Interrupts
Nö, geht auch nicht.
Diese Fehlermeldungen bekomme ich:
Error: 117 Line: 45 Unknown interrupt [PCINT0]
Error: 85 Line: 46 Unknown interrupt source [PCINT0]
Its not a bug its a feature
Hmmm... was der 2561 für Syntax-Spezialitäten hat, weiss ich auch nicht. Das ist eine Liga über mir
Ganz sicher kannst Du aber direkt das entsprechende Register manuell setzen (PCICR, im Datenblatt gut beschrieben):
PCICR = &B00000001
Das aktiviert den PCINT0.
Das ist schon klar, aber wie ersetze ich On xxx? und den Einsprung in die ISR?
Its not a bug its a feature
Die Interrupts heißen tatsächlich PCI0, PCI1 und PCI2.Zitat von slavezero
Gruß
Rolf
DANKE
jetzt gehts da musste erstmal drauf kommen - man o man
danke und tschüß
Its not a bug its a feature
Lesezeichen