www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Flankenerkennung in der ISR, Timer 0


Autor: sasa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich benutze den Timer0 als Rechteckgenerator am Pin PB3.
Wie kann ich in der ISR von Timer0 überprüfen, ob die Flanke jetzt oben 
oder unten ist? So wie ich verstanden habe wird die ISR bei steigender 
und bei fallender Flanke aufgerufen. Könnte man vielleicht dafür eine 
Variable Flanke unten/oben jedes mal umschalten, wenn man weiss welche 
zuerst
kommt? Ich habe leider kein Oszi zur Hand, bit_is_set(PINB, PB3) 
funktioniert nicht.



void timer_0_ini( void )
{
  TCNT0=0x00;
  TIMSK|=(1<<OCIE0);
  TCCR0= (1<<WGM01) | (1<<COM00) | (1<<CS01) | (1<<CS00);
  OCR0 =0;
}

ISR(TIMER2_OVF_vect)
{
   Flanke oben/unten?
}

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zustand von Pin abfragen und hoffen, dass er nicht schon wieder zurück 
gewechselt hat.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  sasa (Gast)

>Wie kann ich in der ISR von Timer0 überprüfen, ob die Flanke jetzt oben
>oder unten ist?

Einfach das PIN auslesen?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähm... Du kannst in einem Timer-Interrupt keine Flanke abfragen. 
Höchstens feststellen, ob der Zustand nun anders ist als vorher. Also 
den aktuellen Zustand mit dem vorherigen vergleichen.

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Wie kann ich in der ISR von Timer0

>> ISR(TIMER2_OVF_vect)

Geposteter Text und Code passen auch nicht so recht zueinander...

Autor: sasa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,
es soll heisen:


ISR(TIMER0_COMP_vect)
{
...


Pin auslesen geht nicht!? In dem Datenblatt steht, wenn COM01 oder COM00 
gesetzt, normale Funktion wird überschrieben, wahrscheinlich deswegen 
funktioniert Pin auslesen nicht.

Welche Flanke wird zuerst in der ISR abgefangen?

Autor: sasa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht die Flanke, sondern welcher  Zustand wird zuerst abgefangen

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ISR(TIMER0_COMP_vect)
>{
>...
>
>Pin auslesen geht nicht!? In dem Datenblatt steht, wenn COM01 oder COM00
>gesetzt, normale Funktion wird überschrieben, wahrscheinlich deswegen
>funktioniert Pin auslesen nicht.

>bit_is_set(PINB, PB3)

Was hat PB3 bei welchem AVR mit Timer0 zu tun?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was hat PB3 bei welchem AVR mit Timer0 zu tun?

Tschuldigung, selbst gerade gefunden. ATMega32 z.B.
PINB3 sollte aber trotzdem jederzeit lesbar sein.

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Per HW toggeln macht wenig Sinn, wenn in der zugehörigen ISR mit 
gleicher Aufruffrequenz der Status abgefragt wird.

Da wäre es sinnvoller den Portpin gleich in der ISR per SW zu toggeln, 
dann kennt man auch den Zustand des Pins.

Nur stehen für die ISR < 64 Takte zur Verfügung.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

lege dich doch einfach mal in der main loop auf die Lauer und frage den 
PIN auf Änderungen ab.

Laut Timer/Counter Blockdiagramm geht der Ausgang am PIN vorbei

MfG

Autor: sasa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!
ich werde dann die Lösung mit Toggeln per SW in der ISR testen

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.