interrupt problem

OP #232781
Lesenswert?

Hallo,
wollte mal einen Interrupt mit meinem tiny13 realisieren, leider
funktioniert es nicht.
Es soll, wenn PB0(PCINT0) eine LOW-Flanke "sieht" in die ISR
gesprungen werden, leider tut mein tiny dies nicht. Sitze jetzt schon 4
Stunden dran und ich finde den Fehler nicht. Vieleicht kann mir ja
jemand weiterhelfen, danke schon mal im vorraus.
Angehängte Dateien:
Persönliche Seite #232783
Lesenswert?

Hast du den Programmieradapter auch abgezogen ? Oder einen 244er
Programmieradapter ? (mit Latch)

In MCUCR muss für falling edge ("low flanke" wie du sagst) bit ISC00
gelöscht und bit ISC01 besetzt sein.
Also:
MCUCR = (1<<ISC01) oder MCUCR = 0b00000010

PCMSK muss gelöscht sein, da hier nur Pinchange Interrupts definiert
werden
PCMSK = 0

Außerdem setze mal in DDRB alles auf 0, und in PORTB Bit0 auf 1 (Pullup
(falls benötigt)). Ansonsten extern Pullup!

Außerdem nach "isr" noch ein paar befehle einfügen ;)
OP #232785
Lesenswert?

OK, ich muss dazu sagen daß ich ein blutiger anfänger bin, und dies mein
erstes Programm mit einem interrupt ist. Natürlich habe ich es erst
einmal mit dem Datenblatt brobiert (4Stunden lang), leider habe ich es
nicht hinbekommen. Könnte mir nicht jemand sagen wie der code aussehen
müsste? bzw ein Codebeispiel schicken?
Gast #232786
Lesenswert?

> An PB0 ist kein PCINT (=Pin Change Interrupt) sondern ein INT
> (Interrupt).

Nein. Der INT0 ist auf PB1.

@Thorran:

Du mußt dir zunächst mal überlegen, was du genau willst. Das, was du in
deinem Ursprungsposting geschrieben hast, geht so nämlich nicht. PCINT
und INT0 sind zwei verschiedene, voneinander unabhängige Interrupts. Da
du in deinem Code beide kunterbunt mischst, nehme ich an, daß dir das
nicht bewusst war.
Bei PCINT kannst du einstellen, auf welche I/O-Pins er triggern soll,
dafür triggert er aber immer auf beide Flanken.
INT0 ist fest mit PB1 verdrahtet, aber dafür kann man einstellen, auf
welche Flanke(n) er triggern soll.

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