Gast
#4293744
Hallo,
ich brauche einen Timer mit dem ich einen zeit messen kann.
Denn ich habe einen Ultraschalsensor und der gibt mir ein higt Signal
das je nachdem wie weit der Sensor vom Gegenstand entfernt ist eine
gewisse länge (ms)hat.
ich habe schon den entsprechenden Timer programmiert und die Abstände
habe ich schon mit einen Oszi gemessen damit ich weiß wie viele ms 10cm
sind.
jetzt habe ich aber das Problem das ich nicht weiß ob mein Timer
überhaupt richtig ist und wie ich denn den Wert der im Register TCNT1
steht auf ein LCD-Display bekomme.
und ich habe noch gelesen das ich zuerst das low bit auslesen muss und
erst dann das higt bit oder steht das im Register als word??
[c]
void teimer_init()
{
TCCR1B |=(1<<CS12);//Vorteiler
}
void Timer()
{
Timer_inti();
//cli(); //Interrupt ausschalten
PORTB &=~(1<<PB5);// PB5 kurzzeitig auf Eingang setzen
PORTB |=(1<<PB4);// Impuls zum Starten von dem Ultraschalsensor
_delay_us(10);//warten
PORTB&=~(1<<PB4);//ausschalten
while(PIND & (1<<PD5)); //abfrage ob das signal higt ist
TCNT1 =0; //Teimer auf null schalten und starten
while(!(PIND & (1<<PD5)));//abfrage ob das signal wider auf low ist.
a = TCNT1;
PORTB |=(1<<PB5);// Port wieder auf Ausgang schalten
//sei();// Interrrupt ein
S0(); //Port maping
lcd_clear();//LCD löschen
lcd_setcursor(1,1); //wo es ausgegeben wird.
lcd_data(a+0x30); //was ausgegeben werden soll
}
Das ganze steht dann in einer Interrupt Rutine weil ich erst dann messen
will wenn ich es ihm sage.