program napisany w bascom avr wersja 1.11.6.8 stara dla at90s2313
problemem są zerujące się zmienne bitowe
program uruchamiam na płytce testowej avt 3500 tu link do opisu http://www.cyfronika.com.pl/kityavt3/avt3500pdf.pdf
program nie ma błędów z kompilacją na wyświetlaczach jest 00
gdy symuluje program zmienne temp i odczyt zerują się cały czas
a oto program:
'Sterownik pieca CO
Skorygowałem tytuł.
[zumek]
problemem są zerujące się zmienne bitowe
program uruchamiam na płytce testowej avt 3500 tu link do opisu http://www.cyfronika.com.pl/kityavt3/avt3500pdf.pdf
program nie ma błędów z kompilacją na wyświetlaczach jest 00
gdy symuluje program zmienne temp i odczyt zerują się cały czas
a oto program:
'Sterownik pieca CO
Code:
Dim Jednostki As Byte , Dziesiatki As Byte ' cyfry do wyświetlania temperatury
Dim Temp As Byte ' temperatura
Dim Pompka As Bit ' sterowanie pompką
Dim Odczyt As Byte
Dim Cyfrybcd As Byte
Dim Ktorywysw As Bit
Enable Interrupts ' oblokuj przerwania
Enable Timer0 'odblokuj timer0
Enable Timer1 'oblokuj timer1
Config Timer0 = Timer , Prescale = 64 'dziel częstotliwość przez 64
Config Portb = 255 : Portb = 255 'konfiguracja portu B (cały port jako wyjścia)
Config Portd = 127 : Portd = &B1111100 'konfiguraja portu D dwa najmłodsze jako wejścia S1 i S2 reszta wyjścia
On Timer0 Co4ms 'obsługa przerwania dla wyświetlaczy
On Timer1 Co1s
Temp = 65
Do : Loop : End 'pusta pętla
Co1s:
Gosub Odczytaj
If Temp > 50 Then 'start pompki
Portd.2 = 0 'włącz pompkę 0 to 1 a 1to 0
End If
If Temp < 50 Then 'stop pompki
Portd.2 = 1 'wyłącz pompkę
End If
Return
Co4ms: ' tylko obsługa wyświetlaczy
Toggle Ktorywysw
Temp = Odczyt
'If Odczyt > 99 Then 'bo skracamy do 99 dla bcd
'Odczyt = 99 'skracanie do 99 na wypadek gotowania wody w piecu
'End If
Cyfrybcd = Makebcd(odczyt) 'konwersja bcd
Jednostki = Cyfrybcd And 15
Dziesiatki = Cyfrybcd
Shift Dziesiatki , Right , 4 'a tu koniec konwersji bcd
Select Case Ktorywysw
Case 0:
Portd = &B1110111
Portb = Lookup(jednostki , Tabela)
Case 1:
Portd = &B1101111
Portb = Lookup(dziesiatki , Tabela)
End Select
Return
Odczytaj:
Portb = 255 'wygasza wyświetlacze
I2cinit 'umożliwia pracę szyny
I2cstart 'sygnał startu magistrali I2C
I2cwbyte 145 'wyślij adres "odbiorczy" PCF8591
I2crbyte Temp , Nack 'z przetwornika do zmiennej Odczyt
I2cstop 'sygnał stopu magistrali I2C
Config Portd = &B1111100 'znów PD.5 i PD.6 są wyjściami
Return
Tabela:
Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144
Skorygowałem tytuł.
[zumek]