Witam
Po kilku dniach zabawy udało mi się zbudować układ składający się z ATMEGA16 (kwarc zewnętrzny 8 MHZ, rs232) i:
- czujnika podającego na pin A1 napięcie 0.2-4.7V
- czujinka podającego częstotliwość 4-40kHz na pin PBO.
Po przestudiowaniu podstaw BASCOMu i lekturze forum udało mi się napisać oddzielne programy do obsługi tych czujników. Jednak gdy próbuje równocześnie wyświetlić wyniki pomiarów z oby dwóch czujników na wyświetlaczu LCD to znaki się "rozpływają" lub przechodzą na chińska czcionkę
Kod programu:
Kombinowałem już z różnymi wartościami wait oraz ustawieniami locate x,y. Dane mogę przesyłać do komputer bez problemów jednak nie potrafię opanować wyświetlacza. Gdy użyję komendy "LCD" to zmiana parametrów tylko jednego czujnika jest przesyłana do komputera, natomiast wartość drugiego czujnika wynosi wtedy 0. Dlatego mam pytanie, jak połączyć działanie przetwornika oraz timera aby móc bez problemu wyświetlać dane na LCD? Czy to jest problem za słabego kwarcu czy po prostu program zle napisany - gdzie szukać rozwiązania?
Zdaję sobie sprawę, że ASM czy C pewnie lepiej poradzą sobie z obsługą czujników jednak na dzień dzisiejszy tylko BASCOM mnie interesuje.
Po kilku dniach zabawy udało mi się zbudować układ składający się z ATMEGA16 (kwarc zewnętrzny 8 MHZ, rs232) i:
- czujnika podającego na pin A1 napięcie 0.2-4.7V
- czujinka podającego częstotliwość 4-40kHz na pin PBO.
Po przestudiowaniu podstaw BASCOMu i lekturze forum udało mi się napisać oddzielne programy do obsługi tych czujników. Jednak gdy próbuje równocześnie wyświetlić wyniki pomiarów z oby dwóch czujników na wyświetlaczu LCD to znaki się "rozpływają" lub przechodzą na chińska czcionkę
Kod programu:
$regfile = "M16def.DAT"
$crystal = 8000000
$baud = 38400
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5 ' TAKTOWANIE PROC FABRYCZNE 1Mhz
Config Lcd = 16 * 2
Cursor Off
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Timer1 = Timer , Prescale = 64
Config Timer0 = Counter , Edge = Falling
Dim Czestotliwosc As Long
Dim Wart_ac As Word
Dim P As Single
Dim V As Single
Dim Wart_nap As String * 3
Dim Wart_cis As String * 3
Const Licznik = 64285
On Timer1 Czas
On Timer0 Zlicz
Enable Interrupts
Enable Timer1
Enable Timer0
Counter1 = Licznik
Start Adc
Do
Wart_ac = Getadc(1)
Cls
Lcd Wart_ac;
Print Wart_ac;
Waitms 250
Loop
End
Czas:
Stop Timer0
Stop Timer1
Czestotliwosc = Czestotliwosc * 64
Czestotliwosc = Czestotliwosc + Counter0
Lowerline
Lcd " " ; Czestotliwosc ; "kHz";
Print Czestotliwosc ; " "
Czestotliwosc = 0
Counter0 = 0
Counter1 = Licznik
Start Timer0
Start Timer1
Return
Zlicz:
Incr Czestotliwosc
Return
Kombinowałem już z różnymi wartościami wait oraz ustawieniami locate x,y. Dane mogę przesyłać do komputer bez problemów jednak nie potrafię opanować wyświetlacza. Gdy użyję komendy "LCD" to zmiana parametrów tylko jednego czujnika jest przesyłana do komputera, natomiast wartość drugiego czujnika wynosi wtedy 0. Dlatego mam pytanie, jak połączyć działanie przetwornika oraz timera aby móc bez problemu wyświetlać dane na LCD? Czy to jest problem za słabego kwarcu czy po prostu program zle napisany - gdzie szukać rozwiązania?
