PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : timer extern starten



q3
10.06.2007, 14:07
hallo

ich möchte gerne den timer 1 im mega8 dazu nutzen mir die zeitdifferenz von 2 steigenden flanken zu messen. allerdings folgt hierbei einem langen zeitabstand ein kurzer und dann wieder ein langer usw. der lange beträgt maximal 3/4 sekunde der kurze maximal 1/4. ergeben somit in der summe 1 sekunde. im schlimmsten fall beträgt die summe von beiden nur 1/1000 sekunde. nun will ich den timer bei einer flanke starten und bei nächster flanke auslesen und gleichzeitig wieder starten. bis jetzt habe ich das mit int0 gemacht ..

on int0
stop timer1
a=timer 1
timer1 = 0
start timer1

und dann habe ich die messwerte abwechselnd unter verschiedene variablen gespeichert...

mein problem ist nun, dass die gesamte routine ganz schön lange dauert, und deswegen bei hohen frequenzen sich die interruptroutine verschluckt.

im datenblatt habe ich nun gelesen, dass man das auch direkt an pb0 triggern kann ohne "start timer... stop timer.." usw.

kann mir bitte dafür mal jemand nen beispielcode senden, ich finde dazu nix in der hilfe oder hier im forum

peterfido
10.06.2007, 21:10
on int0
a=timer1-2 'Zeit, die der Befehl braucht, wird abgezogen
timer1=0

return

Dann evtl den Takt erhöhem, um mehr Reserve für die Auswertung zu haben.