Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[BASCOM][Atmega8] Zliczanie sygnałów wejściowych

12 Cze 2012 00:12 1290 1
  • Poziom 9  
    Witam!
    Mam mały problem bo na projekt zaliczenia przedmiotu mam zrobić jakiś komputer pokładowy do auta. O ile menu, temperatury i czas sobie ogarnąłem to jednym z wymagań jest podprogram którego zadaniem jest zliczanie błędów komputera auta. I tu się zaczyna problem...

    Komputer auta pokazuje błędy w formie mignięć diody. Wygląda to tak, że
    np. błąd nr 421 pokazywany jest na diodzie w ten sposób:
    4 mignięcia diody (co 0,5s), przerwa 3s., 2 mignięcia diody, przerwa 3s., 1 mignięcie diody, przerwa 6s. i procedura odczytu kolejnego błędu (a jeśli nie ma to nic już nie miga).
    Program po skończeniu zliczania miałby wyświetlić na LCD numer tego błędu, a jeśli kilka błędów po sobie będzie wyświetlonych to miałby wyświetlić kilka błędów.

    Nie mam zupełnie pojęcia jak to ugryźć i zaimplementować w program.
    O ile z implementacją dałbym sobie radę (po jakiejś pomocy czy konsultacjach pewnie) to nie mam pomysłu jak się za to zabrać i zorganizować sobie.

    Moja wiedza o Bascomie nie jest rewelacyjna, bo praktycznie dopiero poznaję jego tajniki i pewnie gdybym miał troszkę doświadczenia to nie byłoby problemu, ale wpadłem od razu na głęboką wodę i trzeba sobie poradzić... choćby prowizorycznie do zaliczenia, a potem mogę już rozwijać pomysł tak dla siebie :)
  • Pomocny post
    Moderator Projektowanie
    Algorytm w skrócie:

    1. pętla czekająca na mignięcie
    2. jeśli pojawił się sygnał, wyzeruj licznik, wykonaj pętlę zliczającą czas
    3. jeśli czas = 0,5 sekundy to zwiększ licznik, wróć do pętli
    4. jeśli czas = 3 sekundy to wartość licznika zapisz jako pierwszą cyfrę kodu błędu, wyzeruj licznik i wróć do pętli
    5. jeśli czas = 6 sekund to znaczy że jest koniec odczytu i należy trzy cyfry zebrać i wyświetlić / jakoś sobie obrobić.

    to tak mniej - więcej powinno działać.