$regfile = "m328pbdef.dat"
$crystal = 16000000
$hwstack = 100
$swstack = 100
$framesize = 256
Ddrd = &B00001000
Const Licznik = 57775'wymaga kalibracji
Dim Frequency As Long
' zegar / 1024 = wynik/4 wyniki na sekundę, 65536 - wynik '57723 dla 16mhz
Config Timer1 = Timer , Prescale = 1024
On Timer1 Czas
Enable Timer1
Config Timer0 = Counter , Edge = Falling
On Timer0 Zlicz
Enable Timer0 'wej T0
Counter1 = Licznik
Dim Tmp As String * 16
$include "Decl.bas"
'Wave = 1
Call Lcd_init()
Call Lcd_text( "16Mhz 16/10/25r" , 10 , 5 , 1) 'Draw Text to Buffer
Call Lcd_text( "JM Foxbat" , 10 , 18 , 1)
Call Lcd_show()
Wait 1
Call Lcd_clear(black)
Enable Interrupts
Do
Ocr2b=128'wypełninie pd3
Loop
$include "6x8.font"
$include "12x16.font"
$include "SSD1306_i2c.bas"
Czas:
Stop Timer0
Stop Timer1
Shift Frequency , Left , 8 'miejsce na doklejenie
Frequency = Frequency + Counter0 'doklejamy niepełny ovf
Frequency = Frequency * 2 'bo wynik aktualizujemy 2x/sek
Tmp = Str(frequency)
Tmp = Format(tmp , "00000000")
Tmp = Tmp + "Hz"
Call Lcd_text(tmp , 1 , 1 , 2) 'Draw Text to Buffer
Call Lcd_set_pixel(25 , 15 , White) : Call Lcd_set_pixel(61 , 15 , White)
Call Lcd_set_pixel(25 , 16 , White) : Call Lcd_set_pixel(61 , 16 , White)
Call Lcd_text( "PWM 31164Hz PD3" , 4 , 24 , 1)
Call Lcd_show()
Frequency = 0
Counter0 = 0
Counter1 = Licznik
Start Timer0
Start Timer1
Return
Zlicz: 'tu naliczamy herce
Incr Frequency
Return