Igram se malo sa racunanjem induktiviteta/kapaciteta (odvojeno ali nevažno, ne razlikuje se puno) od mjerene frekvencije preko 8-bitnog countera na Atmega8gdje sam i zapeo.
Naime na ulazu na T0 (8 bitni counter) imam spojen izlaz LC oscilatora (kojeg sam nasao na netu). Pri mjerenju induktiviteta spajam zavojnicu serijski na vec postojecu, a kod kapaciteta paralelno na postojeci kondenzator. Uz poznat induktivitet od 68uH i 1000pF po racunici bih trebao dobiti 610kHz kao frekvenciju bez spojenog nepoznatog kapaciteta/induktiviteta.
No, pri mjerenju s counterom ja dobijem cca. 25kHz(jos mi tu i uljecu neki minusi ali pretpostavljam da je to zbog toga što su mi komponente nabockane na breadboard).
Program (samo dio s frekvencijom) mi je:
Code: Select all
$regfile = "m8def.dat"
$crystal = 8000000
$swstack = 64
$hwstack = 64
$framesize = 64
Config Lcd = 16 * 2
Config Lcdbus = 4
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.1 , Rs = Portd.0
Cursor Off
'Timer0'
Config Timer0 = Counter , Edge = Rising
'Preljev
On Timer0 Timer0_preljev
'Timer1'
Config Timer1 = Timer , Prescale = 256
Const Timer1vrijednost = 34286
Timer1 = Timer1vrijednost
On Timer1 Pulse
Config Portd.4 = Input
Set Portd.4
Dim Preljev As Long , Dosad As Word , Nabrojano As Integer , Ukupno As Single
Preljev = 0
Cls
Start Timer1
Start Timer0
Enable Interrupts
Enable Timer1
Enable Timer0
Do
Loop
Timer0_preljev:
Incr Preljev
Return
Pulse:
Stop Timer0
Stop Timer1
Dosad = Counter0
Nabrojano = Preljev * 256
Ukupno = Dosad + Nabrojano
Preljev = 0
Counter0 = 0
Timer1 = Timer1vrijednost
Locate 1, 1
Lcd Ukupno ; " "
Start Timer1
Start Timer0
Return
Znam da ce mi biti odmaka zbog toga sto je na breadboardu, ali jedno 30tak puta malo mi je sumnjivo.
Može li mala pomoc samo da me uputite gdje griješim kod programa/sheme vec me to pati par dana ne mogu skuziti gdje sam zapeo.
Hvala unaprijed.