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
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