Sziasztok,Robert írta:Én amit csinálnék:
Timer számláló bemenetére kötném a mérendő jelet. A timer 1 0...65535ig mér. Másik timerrel meg órajelalapot hozok létre. És két ilyen órajelalappal mérek. 0. órajelalap: timer1=0. 1. órajelalap: timer1 kiolvas.
Frekvencia:
Timer1 értéke/órajelalap hossza
NINCS állandó INT ami beterhel, tisztán HW alapú a mérés.
Demóbordom: EasyAVR5A
Programnyelv: Bascom
CPU: ATmega16
AVR ismeretem: kezdő
próbálkozom megvalósítani a Robert által adott program tervet de valahogy leakadtam.
Így gondoltam a dolgot a freki mérésre:
Ahogy a Robert javasolta, a Timer1 lábra bekötöm a mérendő jelforrást.
A Timer0-át meg időalapnak állítom be, tehát:
Timer1 = Counter
Timer0 = Timer
itt a kódom amit csináltam de nem müxik valamiért
Kód: Egész kijelölése
$regfile = "m16def.dat"
$crystal = 8000000
Config Portb.1 = Input
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2
Config Timer0 = Timer , Prescale = 1024
Config Timer1 = Counter , Edge = Rising
Const Timer0reload = 250
Cls
Cursor Off
Load Timer0 , Timer0reload
Load Timer1 , 0
On Ovf0 Timer0_isr
On Ovf1 Timer1_isr
Enable Timer0
Enable Timer1
Start Timer0
Start Timer1
Timer0_isr:
Load Timer0 , Timer0reload
Cls
Locate 1 , 1
Lcd Timer1
Wait 1
Timer1 = 0
Return
Timer1_isr:
Load Timer1 , 0
Return
Na most, láttam az adat lappab, hogy a TCNT1 regiszterben őrzi a Timer1 a számolt számokat amit kapott a bemenetelén.
Próbáltam
Kód: Egész kijelölése
LCD = Timer1
Kód: Egész kijelölése
LCD = TCNT1
Valami hozzászólást kérnék nálam jártasabbaktól ebben a témában.
Köszi.