ICP1 ATmega will nicht

Gast #684370
Lesenswert?

Hallo,

ich habe bislang ein Servosignal per externem Interupt ausgewertet.

Nun will ich den ICP1 Pin, PortB 0 nehmen.

Ich habe PB0 auf Eingang, Pullup an,

// Port Init
  DDRB = 0xFE;    // Port Ausgang PB0=ICP1 Eingang
  PORTB = 0x01;    // Port low PullUp PB0 an

Timer1 VT /64, IPC Noicecanceler an

TCCR1B = 0b1000011; // Timer1/64 Noise Canceler

Und die Interupts frei gegeben

TIMSK = 0b10100001; // Timer2 Compare Interupt  Timer0 Overflow  
TICIE1 = Input Capture

natürlich auch mit

sei();// Interups freigeben

Leider komme ich durch Pegelwechsel an PB0 nicht in diese Routine:

ISR(SIG_INPUT_CAPTURE1)
{
mach was,....
}

Kann mir jemand sagen, warum der ICP1 so nicht den INT0 ersetzt?

Gruß Tobi
#684375
Lesenswert?

"ATMegas" gibts viele. Hättest Du vielleicht die Güte, auch mitzuteilen, 
welchen davon Du zu verwenden gedenkst?

Abgesehen davon: Nimm nicht die alten "SIGNAL"-Namen, sondern die 
neueren Vektornamen, die denen aus dem Datenblatt entsprechen, nur, dass 
jeweils ein "_vect" hinten dranhängt. Und vor allem: Zeig mal 
vollständigen Code ohne "Abtipp-Artefakte"!
#684377
Lesenswert?

> TCCR1B = 0b1000011; // Timer1/64 Noise Canceler
Zähl mal die Nullen und Einsen.... Und gewöhn Dir ne vernünftige 
Schreibweise an (z.B. mit Bitshifts, da passiert so was schon mal 
nicht...). Du hast nämlich nicht den Noise Canceler aktiviert, sondern 
den Capture auf steigende Flanke konfiguriert. Wenigstens beim TIMSK 
stimmt es anscheinend.

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