Witam,.
Mam następujący problem:
Przetwornik analogowy na ADC pin 1
Przetwornik częstotliwość na Timer0
max232 1uF
Kwarc 8Mhz i atmega16L
Na kablu ze złączkami BNC mam połączenie atmega -> przetwornik czestotliwosci (2 kolumna). Wydaje mi się, że wszystko dobrze zlutowane oraz nie ma przerw w kablu BNC. Kabel mam 50 Ohm.
Podczas wysyłania danych na PC przez COMa mam takie błedy:
Brak stabilności danych w stałych warunkach.
Mój program wygląda następująco:
Pytanie:
Czy program powoduje chwilowe wieszanie się mikroprocesora? Zdaje sobie sprawę, że jest strasznie prymitywny - to są moje początki z mikroprocesorami i nie do końca rozumiem jak poprawnie korzystać z jego możliwości. Czy po prostu luty, kabel mam kiepskie (już 3 kable testowałem oraz pół dnia z lutownicą spędziłem) i styki są przyczyną? Wydaje mi się, że połączenia mam poprawne, dlatego wole się upewnić czy po prostu mikroprocesora nie wieszam. Gdzie szukać błędu?
Bardzo proszę o pomoc o wgląd do programu...
Mam następujący problem:
Przetwornik analogowy na ADC pin 1
Przetwornik częstotliwość na Timer0
max232 1uF
Kwarc 8Mhz i atmega16L
Na kablu ze złączkami BNC mam połączenie atmega -> przetwornik czestotliwosci (2 kolumna). Wydaje mi się, że wszystko dobrze zlutowane oraz nie ma przerw w kablu BNC. Kabel mam 50 Ohm.
Podczas wysyłania danych na PC przez COMa mam takie błedy:
308.77 49.30
304.78 25769738257.50
310.66 49.80
293.02 49.60
316.54 49.70
297.92 48.90
316.54 48.70
293.48 48.60
309.68 573440.30
294.98 49.81
304.78 48.50
304.78 44.90Brak stabilności danych w stałych warunkach.
Mój program wygląda następująco:
$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
Config Timer1 = Timer , Prescale = 64
Config Timer0 = Counter , Edge = Falling
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Cursor Off
Dim Czestotliwosc As Long
Dim Wart_ac As Word
Dim P As Single
Dim V As Single
Dim W As Single
Dim T As Single
Const Licznik = 64285
On Timer1 Czas
On Timer0 Zlicz
Enable Interrupts
Enable Timer1
Enable Timer0
Counter1 = Licznik
Do
Wart_ac = Getadc(1)
V = Wart_ac * 0.0049
P = V * 200
Lcd ;
Cls
Lcd Fusing(p , "#.##") ; " hPa";
Lowerline
Lcd Fusing(t , "#.##") ; " kHz"
Print Fusing(p , "#.##") ; " ";
Print Fusing(t , "#.##") ;
Print
Waitms 150
Loop
End
Czas:
Czestotliwosc = Czestotliwosc * 64
Czestotliwosc = Czestotliwosc + Counter0
T = Czestotliwosc
T = T / 10
Czestotliwosc = 0
Counter0 = 0
Counter1 = Licznik
Return
Zlicz:
Incr Czestotliwosc
Return
Pytanie:
Czy program powoduje chwilowe wieszanie się mikroprocesora? Zdaje sobie sprawę, że jest strasznie prymitywny - to są moje początki z mikroprocesorami i nie do końca rozumiem jak poprawnie korzystać z jego możliwości. Czy po prostu luty, kabel mam kiepskie (już 3 kable testowałem oraz pół dnia z lutownicą spędziłem) i styki są przyczyną? Wydaje mi się, że połączenia mam poprawne, dlatego wole się upewnić czy po prostu mikroprocesora nie wieszam. Gdzie szukać błędu?
Bardzo proszę o pomoc o wgląd do programu...
