Witajcie,
Mam zamiar zbudować prosty system radiowego zamykania/ otwierania drzwi.
Nadajnikiem będzie UART/Mega8L zamknięta w obudowie pilota+ nadajniczek na 833MHz
µC ten po naciśnięciu jednego z dwóch przycisków wysyła w odstępach 1 sekundowych komendę do otwarcia lub zamknięcia. Mechanizm wykonawczy: serwo modelarskie.
Po stronie odbiorczej UART/Mega8L+ odbiorniczek 833MHz obsługująca serwo.
W czym problem?
Procek po stronie odbiorczej dość często (nie zauważyłem żadnej regularności: czasem wariuje raz za razem, czasem godzine-dwie, nic się nie dzieje...)zachowuje się dziwnie, to znaczy:
-przestaje reagować na jedną z komend np. OTWÓRZ, za to druga komenda np. ZAMKNIJ podawana cyklicznie, powoduje otwieranie i naprzemiennie zamykanie. Po niezdefiniowanym czasie nagle potrafi zacząć działać prawidłowo lub "wyłączyć" sobie dotychczas aktywną komendę (ZAMKNIJ) i reagować "podwójnie" na OTWÓRZ.
Ponieważ kod po stronie odbiorczej wygląda banalnie prosto, wykonałem zmiany hardwarowe:
-wywaliłem modem radiowy i połączyłem na próbę kablem z kondkiem ceramicznym: nic nie dało
-zmieniłem taktowanie obu µC z kwarców na generator wewnetrzny fusami (dopóty, dopóki oba procki są w temp pokojowej, niczemu to nie zaszkodzi): nic nie dało
-zmieniłem zasilanie "zasilaczowe" na docelowe, bateryjne (ATMega 8L)
-zamieniłem oba µC w podstawkach na zupełnie inne sztuki: nic nie dało
-zmieniałem Baud Rate na 4800, 2400, 1200 i 19200: nic nie dało
-napisałem na Elektrodzie i mam gorącą nadzieję, że to pomoże....
oto kod odbiornika:
Mega8L po stronie nadawczej wysyła co sekundę pojedyncze słowo komendą
Inne słowa, zgodnie z założeniami, nie powodują jakiejkolwiek reakcji po stronie odbiorczej, wykonywana jest tylko na pusto pętla i rozpoczyna się oczekiwanie na natępną transmisję...
Mam zamiar zbudować prosty system radiowego zamykania/ otwierania drzwi.
Nadajnikiem będzie UART/Mega8L zamknięta w obudowie pilota+ nadajniczek na 833MHz
µC ten po naciśnięciu jednego z dwóch przycisków wysyła w odstępach 1 sekundowych komendę do otwarcia lub zamknięcia. Mechanizm wykonawczy: serwo modelarskie.
Po stronie odbiorczej UART/Mega8L+ odbiorniczek 833MHz obsługująca serwo.
W czym problem?
Procek po stronie odbiorczej dość często (nie zauważyłem żadnej regularności: czasem wariuje raz za razem, czasem godzine-dwie, nic się nie dzieje...)zachowuje się dziwnie, to znaczy:
-przestaje reagować na jedną z komend np. OTWÓRZ, za to druga komenda np. ZAMKNIJ podawana cyklicznie, powoduje otwieranie i naprzemiennie zamykanie. Po niezdefiniowanym czasie nagle potrafi zacząć działać prawidłowo lub "wyłączyć" sobie dotychczas aktywną komendę (ZAMKNIJ) i reagować "podwójnie" na OTWÓRZ.
Ponieważ kod po stronie odbiorczej wygląda banalnie prosto, wykonałem zmiany hardwarowe:
-wywaliłem modem radiowy i połączyłem na próbę kablem z kondkiem ceramicznym: nic nie dało
-zmieniłem taktowanie obu µC z kwarców na generator wewnetrzny fusami (dopóty, dopóki oba procki są w temp pokojowej, niczemu to nie zaszkodzi): nic nie dało
-zmieniłem zasilanie "zasilaczowe" na docelowe, bateryjne (ATMega 8L)
-zamieniłem oba µC w podstawkach na zupełnie inne sztuki: nic nie dało
-zmieniałem Baud Rate na 4800, 2400, 1200 i 19200: nic nie dało
-napisałem na Elektrodzie i mam gorącą nadzieję, że to pomoże....
oto kod odbiornika:
$crystal= 8000000
$baud= 9600
Config Portc.3 = Output 'wyjście na serwo
Config Portc.2 = Output 'wyjście LED
Config Serialin = Buffered , Size = 20
Dim Znak As String * 7
Dim I As Byte
Enable Interrupts
For I= 1 to 5 'sygnalizacja, że procek
Portc.2 = 1 'startuje
waitms 300
Portc.2 = 0
waitms 300
next
'#####################################################
Do
Clear Serialin
For I = 1 to 6 'debugger dla ubogich:
Toggle Portc.2 'sygnał rozpoczęcia pętli
waitms100
Next
Input Znak
If Znak = "zamknij" Then
Portc.2 = 1 'LED ON
For I = 1 to 100 'serwo w prawo
Portc.3 = 1
waitus 900
Portc.3 = 0
Waitms 20
Next
Elseif Znak = "otworzo" Then
Portc.2 = 0 'LED OFF
For I = 1 to 100 'serwo w lewo
Portc.3 = 1
waitus 2100
Portc.3 = 0
Waitms 20
Next
End If
Loop
End
Mega8L po stronie nadawczej wysyła co sekundę pojedyncze słowo komendą
Print "zamknij"; chr(13);
lub
Print "otworzo"; chr(13);
Inne słowa, zgodnie z założeniami, nie powodują jakiejkolwiek reakcji po stronie odbiorczej, wykonywana jest tylko na pusto pętla i rozpoczyna się oczekiwanie na natępną transmisję...
