logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Sterowanie gniazdkami ELRO z Androida - jak napisać poprawny program?

mradamf1985 30 Cze 2013 19:22 1584 2
REKLAMA
  • #1 12473043
    mradamf1985
    Poziom 12  
    Witam, wymyśliłem sobie że przystosuje część urządzeń w domu do sterowania z telefonu z systemem android. Na początku chciałem zacząć od prostych rzeczy w stylu zastąpienia pilota do gniazdek 230V. Gniazdka są firmy ELRO na bardzo popularnych lecz niedostępnych układach. W pilocie jest to HX2262 i odpowiednio w gniazdkach ich dekoder. Nie wiem czy w dobrą stronę idę ale użyłem analizatora stanów i sczytałem wysyłany kod który jest stały i wysyłany 2 razy. Teraz do celu, napisałem w Bascomie prosty program w celu sprawdzenia czy to działa, zrobiłem to na szybko generując przerwania poleceniami waitus oraz ustawiając i zerując stan wysoki i niski odpowiednio poleceniami Set i Reset. Do odpowiedniej nogi atmegi 32 mam podłączony taki sam nadajnik jak w pilocie. Czasem program działa poprawnie czasem się zawiesza, oraz dużo zajmuje w pamięci (13%) czego się można było spodziewać. Moje pytanie jest następujące jak powinien wyglądać taki program poprawnie, niestety nie znalazłem nic podobnego w internecie. Podejrzewam że zamiast waitus powinno być przerwanie od timera np na nodze OC1A, ale był bym wdzięczny za podpowiedź i może jakiś fragment działającego programu. Kod pilota jest dość prosty jest tylko dwie długości czasów krótszy 370us, i dłuższy 1100us. A przykładowy przebieg wygląda tak:
    Sterowanie gniazdkami ELRO z Androida - jak napisać poprawny program?
  • REKLAMA
  • Pomocny post
    #2 12474666
    mattsk
    Poziom 13  
    Ja bym zrobił tak:
    1. Znalazłbym najmniejszy odstep czasu pomiędzy stanem niskim a wysokim.
    2. cały przebieg podzielibym sobie na małe fragmenty o szerokości czasu odczytną z punktu pierwszzego.
    3. Do tablicy zapisałbym ciąg zer i jedynek odczytnaych z tej tablicy.
    4. Ustawiłbym timer w tryb CTC o okresie z punktu 1. i napisał procedure wyslij_dane, która robiła by coś takiego:

    i = 0;
    uruchom trimer w CTC;

    podprogram obsługi przerwania CTC:
    i++
    stan pinu = tablica [i];
    jeżeli i = koncowe to zatrzym timer
  • #3 12475523
    mradamf1985
    Poziom 12  
    O, to mi właśnie chodziło proste, a czy skuteczne postaram się sprawdzić wieczorem. Po prostu chciałem wiedzieć jak to robić poprawnie, szkoda mojego czasu na samym początku robić już błędy.
REKLAMA