Forum: Mikrocontroller und Digitale Elektronik Timer0 unterbrechen


von soda (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich bin gerade dabei einen Distanzsensor auf Ultraschallbasis zu bauen 
und stehe vor einen Problem.

Ich würde gerne mit dem timer0 vom (ATmega-16) 10 Takte lang 40kHz 
senden um dann danach das Echo auswerten zu können.

Leider habe ich keine Ahnung wie ich das machen könnte.

Die 40kHz habe ich bereits

TCCR0 = (0<<FOC0) | (0<<WGM00) | (0<<COM01) | (1<<COM00) | (1<<WGM01) | 
(0<<CS02) | (0<<CS01) | (1<<CS00);
// CTC Modus TCNT0 = 0 wenn Compare Match | OCR0 = 100 (COM00)Compar 
Match| Prescale 0

OCR0 = 100;

Hoffe das mir wer weiterhelfen kann.

MFG Soda

von spess53 (Gast)


Lesenswert?

Hi

Entweder CS02:00 oder COM01:00 auf Null setzen.

MfG Spess

von Krapao (Gast)


Lesenswert?

Ich kenne bisher nur fertige Sender auf Ultraschallbasis und die 
erzeugen sich das US-Signal selbst ähnlich einem Piezo mit integrierter 
Elektronik zur normalen Tonerzeugung. Vom µC aus werden die lediglich 
AN/AUS geschaltet, so dass sie das US-Signal aussenden oder nicht.

Fortschrittlichere Sensormodule zur US-Distanzmessung werden sogar nur 
AN geschaltet, senden ihren US-Puls, warten aufs Echo und liefern dann 
das Laufzeitergebnis an den µC. Auf dem Modul ist dann ein Sender und 
ein Empfänger vorhanden.

In deinem Projekt baust du den US-Sensor komplett selbst? Sender und 
Empfänger? Und du musst beim Sender auch noch den Träger für die 
US-Erzeugung per µC machen? Wenn ja würde ich die 40 kHz dauerhaft vom 
Timer erzeugen lassen (Timer im CTC Modus oder als PWM) und den 
Ausgabepin von einer zweiten Zeitschleife AN/AUS schalten lassen. Also 
quasi die Modulation eines 40 kHZ Trägers mit einem Rechtecksignal 
mittels einer VerUNDung per Software. Wird manchmal bei IR-Dioden an µC 
als IR-FB-Sender genauso gemacht.

von Soda (Gast)


Lesenswert?

Ja genau der Sensor wird von mir selbst gebaut (ist ein kleines Projekt 
von mir um mich in die Materie einzuarbeiten).

Das Programm läuft jetzt danke für die Hilfe.

Ich starte den timer kurz vorm auslesen und beende den Timer am Ende des 
Programms.

Die Distanz wird dann mittels der Zeit ausgerechnet die das Echo beötigt 
um vom reflektierenden Gegenstand zurück zu kommen * Weg den der Schall 
in einer ms zurrück legt.

Gruß Soda

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.