Forum: Mikrocontroller und Digitale Elektronik ATMega 1284p - PinChange Interrupt


von Andreas D. (galdo)


Lesenswert?

Hallo zusammen,

ich habe derzeit ein kleines Problem mit dem PinChange Interrupt im 
Zusammenhang mit dem DCF77 Empfänger von ELV (68091610).

Derzeit ist der Empfänger an Port A Pin 6 angeschlossen (also am Pin 
PCINT6).
Es ist kein Widerstand zwischen VCC und Data und der interne Pin Pull Up 
ist aktiv.

Die Konfiguration des Ports sieht wie folgt aus:
1
DDRA  = 0x0F;   //00001111
2
PORTA = 0xFF;   //alle Pull-Ups an Port A aktivieren
3
4
//PC Interrupt
5
PCICR  |= (1<<PCIE0);
6
PCMSK0 |= (1<<PCINT6);

Und hier noch die ISR:
1
ISR(PCINT0_vect){
2
   PORTB ^= (1 << PB6)
3
}

Leider wird die ISR nicht angesprungen.

Die Interrupts sind natürlich mit
1
sei();
 aktiviert.

Eine LED zwischen Data und VCC zeigt mir aber an, dass der DCF Empfänger 
die Bits korrekt empfängt.
Habt ihr ne Idee, woran das liegen könnte - ich bin leider grad ziemlich 
am Ende mit meinem Latein?

Ich danke euch
Galdo

: Verschoben durch User
von J.-u. G. (juwe)


Lesenswert?

Die gezeigten Codeschnippsel sind meiner Meinung nach ok. Was mich etwas 
irritiert:

> Es ist kein Widerstand zwischen VCC und Data

und

> Eine LED zwischen Data und VCC zeigt mir aber an

Was denn nun? Wie ist die LED dort angeschlossen und wie ist der µC-Pin 
in Bezug auf die LED angeschlossen?

von Andreas D. (galdo)


Lesenswert?

J.-u. G. schrieb:
> Die gezeigten Codeschnippsel sind meiner Meinung nach ok. Was mich etwas
> irritiert:
>
>> Es ist kein Widerstand zwischen VCC und Data
>
> und
>
>> Eine LED zwischen Data und VCC zeigt mir aber an
>
> Was denn nun? Wie ist die LED dort angeschlossen und wie ist der µC-Pin
> in Bezug auf die LED angeschlossen?

Ich habe irgendwo mal gelesen, dass bei bestimmten DCF Empfänger 
sinnvollerweise ein Widerstand zwischen Data und VCC zu installieren ist 
(als Pull-Up vermute ich mal). Das ist nicht passiert. Die LED hab ich 
zwischen Data und VCC angeschlossen um zu sehen, ob der Empfänger 
überhaupt etwas bekommt.

Ich nutze die AVR NETIO Platine von Pollin. Die ganze Konstruktion ist 
an den seitlichen Schraubklemmen befestigt.

Die LED ist nicht die LED, die ich im oben gezeigten Code-Schnippsel 
ansteuere, sondern hängt einfach "lose" zwischen den beiden Leitungen 
des DCF77 Empfängers.

Der Interrupt wird nicht aktiviert.

von Stefan E. (sternst)


Lesenswert?

Andreas del Galdo schrieb:
> Die LED hab ich
> zwischen Data und VCC angeschlossen um zu sehen, ob der Empfänger
> überhaupt etwas bekommt.

Hast du die LED tatsächlich ohne Vorwiderstand angeschlossen? In dem 
Fall ist es kein Wunder wenn du keinen Pin-Change-Interrupt bekommst, 
schließlich "changed" der Pin dann ja auch nicht.

von Andreas D. (galdo)


Lesenswert?

Stefan Ernst schrieb:
> Andreas del Galdo schrieb:
>> Die LED hab ich
>> zwischen Data und VCC angeschlossen um zu sehen, ob der Empfänger
>> überhaupt etwas bekommt.
>
> Hast du die LED tatsächlich ohne Vorwiderstand angeschlossen? In dem
> Fall ist es kein Wunder wenn du keinen Pin-Change-Interrupt bekommst,
> schließlich "changed" der Pin dann ja auch nicht.

Da hast du natürlich recht - das müsste ich heut abend nochmal 
verifizieren. Ich hatte aber in Erinnerung, dass das ohne LED den 
gleichen Effekt hatte.

Galdo

von Andreas D. (galdo)


Lesenswert?

Aus irgendeinem Grund funktionierts jetzt. Vielleicht lags an der LED, 
vielleicht einfach auch gestern an der Uhrzeit :)

Ich danke euch.

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.