Forum: Compiler & IDEs ICP1 ATmega will nicht


von Tobi (Gast)


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

von Johannes M. (johnny-m)


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"!

von Tobi (Gast)


Lesenswert?

Hallo,

ich nutze einen ATmega8.

ich habe nur Teile des Codes rausgesucht, da er zimlich lang ist.

Gruß Tobi

von Johannes M. (johnny-m)


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.

von Tobi (Gast)


Lesenswert?

Hallo,

hast Recht, habe eine Null vergessen.

Aber trotzdem geht es nicht so, wie ich will.

Tobi

von M. H. (doktorgnadenlos)


Lesenswert?

Hast Du die richtige Header-Datei eingebunden ?
Für viele Interrupts sind die Einsprungadressen der verschiedenen 
AVR-Derivate unterschiedlich.

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.