Forum: Mikrocontroller und Digitale Elektronik alternative Pin-Funktionen


von Tobi (Gast)


Lesenswert?

Hallo nochmals,
mal eine kurze Frage zu alternativen Pin-Funktionen.
Angenommen ich möchte die Input-Capture-Funktion des Timers 1 benutzen, 
wie mache ich das?
Im Datenblatt meines Controllers steht das der PE0 als alternative 
Funktion auch als ICP (Input-Capture-Pin) für den Timer verwendet werden 
kann. Dann steht dort noch etwas von Override Signals, allerdings komme 
ich damit nicht ganz zurecht und das AVR-Tut. hilft mir in dieser 
Hinsicht irgendwie auch nicht.

MfG

von Silvan K. (silvan) Benutzerseite


Lesenswert?

Verwendest du einen grünen Controller oder einen blauen?

von Maddin (Gast)


Lesenswert?

der blaue wird häufiger verwendet...

von Tobi (Gast)


Lesenswert?

Oh, blöd, sorry... Ist ein ATmega8515.

von Spess53 (Gast)


Lesenswert?

Hi

> Dann steht dort noch etwas von Override Signals, allerdings komme
>ich damit nicht ganz zurecht und das AVR-Tut. hilft mir in dieser
>Hinsicht irgendwie auch nicht.

Das bezieht sich auf das Verhalten des PINs im Normal- bzw. den 
verschiedenen Sleep-Modes.

ICP habe ich noch nicht gebraucht, aber wenn ich das richtig sehe 
brauchst du nur den Interrupt aktivieren und eine passende ISR zu 
schreiben.

MfG Spess

von Tobi (Gast)


Angehängte Dateien:

Lesenswert?

Hmm, ich habe mal probiert mit dem Timer1 ein PWM-Signal eines 
Empfängers auszuwerten. Signallänge die üblichen 20ms, 1ms=-100% und 
2ms=+100%. Mit dem Programm wollte ich einfach nur ein- oder 
ausschalten, also bei Signal<1,5ms auf aus und bei Signal>1,5ms auf ein. 
Wenn ich den Timer mit 3,686MHz Taktfrequenz laufen lasse entsprächen 
1,5ms in etwa einer 5529. Als Eingang habe ich PE0 genommen (laut 
Datenblatt alternative Funktion ICP). Das Programm ist mal im Anhang, 
funktioniert aber nicht...
Liegt das daran dass das Programm eh murks ist oder womöglich daran dass 
da was mit dem ICP nicht hin kommt?

MfG

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

das kann nichts werden ...
1
  TCCR1B=(1<<ICES1);    //ICES1=1 => Reaktion auf steigende 
2
  TCCR1B=(1<<CS10);    //Takt auf CPU-Takt gesetzt
die zweite Zeile überschreibt den Zustand der ersten Zeile!
nimm das richtige Register.
1
if(ICES1==1)
ICES1 ist eine definierte Konstante und verändert ihren Wert nie!

Sascha

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.