'------------------------------------------------------------------------------'
'Program: miniaturowy miernik do zasilacza na attiny13 i LCD                   '
'Wersja z 64 próbkami i wyświetlaniem średniej                '
'kompilator: bascom 1.11.9.0     data: 23.12.2009    autor: Manekinen          '
'strona domowa projektu: http://diy.elektroda.eu/                              '
'wszelkie modyfikacje dozwolone, publikując należy zachować ten nagłówek       '
'               WYŁĄCZNIE DO UŻYTKU NIEKOMERCYJNEGO                            '
'------------------------------------------------------------------------------'

Const Pullup = 6                                            'ile mV błędu wprowadza pullup wyświetlacza podłączony do gnd poprzez 100ohm...  troche nieeleganckie ale proste i skuteczne :)

$regfile = "attiny13.dat"
'$regfile = "m8def.dat"
$crystal = 1200000
'$crystal = 2000000
$hwstack = 8
$swstack = 16
$framesize = 16
'$noramclear
'$sim

Dim Pomiar As Word
Dim Pokaz As String * 4
Dim Pokaz2 As String * 4
Dim Znak As Byte
Dim Licz As Byte
Dim Petla As Byte

Declare Sub Mierz
Declare Sub Formuj
Declare Sub Wyswietl

Config Adc = Single , Prescaler = Auto , Reference = Internal       'off
Start Adc

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
Cursor Off
Cls


Do

   Upperline                                                'od nowa dla napięcia i prądu
   Licz = 1                                                 'adc dla napiecia
   Mierz                                                    'mierzy i formuje napięcie
   'Moc = Pomiar                                             'kopia dla obliczeń mocy
   Znak = 86                                                'znak dla napięcia
   Wyswietl                                                 'wyświetla napięcie

   Licz = 3                                                 'adc dla prądu ------- ??????
   Mierz                                                    'mierzy i formuje prąd
   'w pomiar zostaje prąd
   Pokaz2 = Format(pokaz , "0.00")                          'forumje prąd drugi raz
   Znak = 65                                                'znak dla prądu
   Wyswietl                                                 'wyświetla prąd

   'Lowerline                                                'od nowa dla temperatury i mocy
   'Mnozenie
   'Pomiar = Moc * Pomiar                                    'liczy moc
   'Pomiar = Pomiar / 100
   'Formuj
   'Znak = 87                                                'znak dla mocy
   'Wyswietl                                                 'wyświetla moc

   Licz = 0                                                 'adc dla temperatury
   Mierz                                                    'mierzy i formuje temperaturę
   Znak = 42                                                'znak dla temperatury
   Wyswietl                                                 'wyświetla temperaturę


Loop
'_______________________
Mierz:
Pomiar = 0
Petla = 0

Do
Incr Petla
Pomiar = Pomiar + Getadc(licz)                              'sumuje pomiary
Pomiar = Pomiar - Pullup                                    'za każdym razem odejmuje napięcie pullupa
Loop Until Petla = 64                                       '64 próbki

Shift Pomiar , Right , 6                                    '6/64
If Pomiar > 999 Then Pomiar = 0                             'granica do 99.9


Formuj:

Pokaz = Str(pomiar)
Pokaz2 = Format(pokaz , "00.0")
Return


Wyswietl:
Ddrb = &B111111
Lcd Pokaz2 ; Chr(znak) ; Chr(32)
Ddrb = &B010011
Return
