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

[C][ATMEGA8] - Pętla a przycisk włączenia/wyłączenia

Fifi209 19 Lip 2012 23:39 1464 11
  • #1 19 Lip 2012 23:39
    Fifi209
    Poziom 7  

    Napisałem program, który po naciśnięciu przycisku zaczyna migać diodami lub je wyłącza, do tego dwa przyciski do sterowania (wolniej i szybciej)

    Wszystko działa prawie jak należy, jedynie czas reakcji jest irytujący, przyciski nie zawsze łapią za pierwszym razem i myślę, że to wina pętli i opóźnień, które ustawiłem

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Normalnie oczekiwanie na naciśnięcie przycisków wrzuciłbym w 3 wątki, które działałyby niezależnie od siebie i od reszty programu, ze swoim opóźnieniem.


    Przepraszam, pytania może banalne ale przeskok z C# -> C nie jest dla mnie prosty ^ już bez samych obiektów człowiek się gubi :_)

    0 11
  • #2 19 Lip 2012 23:47
    LordBlick
    VIP Zasłużony dla elektroda

    Fifi209 napisał:
    Normalnie oczekiwanie na naciśnięcie przycisków wrzuciłbym w 3 wątki, które działałyby niezależnie od siebie i od reszty programu, ze swoim opóźnieniem.
    Przygodę z timerem czas zacząć...
    Tu leży szkielet niezalezności...
    Rozbij te "wątki" z pętli głównej na procedury, a dalej już z górki. Dokładasz do każdej procedury po liczniku czasu jak cLED0_Delay dla LED_Line().
    P.S. F_CPU radzę używać w Makefile lub w ustawieniach IDE, w opcjach projektu.

    0
  • #3 20 Lip 2012 00:12
    Fifi209
    Poziom 7  

    LordBlick napisał:

    Rozbij te "wątki" z pętli głównej na procedury

    To jest proste :)

    LordBlick napisał:
    Dokładasz do każdej procedury po liczniku czasu jak cLED0_Delay dla LED_Line().

    Licznik czasu? Już się pogubiłem, czytam o przerwaniach właśnie, jutro będę coś klepał.
    LordBlick napisał:

    P.S. F_CPU radzę używać w Makefile lub w ustawieniach IDE.

    Hmm, czemu?

    0
  • #5 20 Lip 2012 00:29
    Fifi209
    Poziom 7  

    Przerwania mogę obsługiwać na INT0 i INT1 a potrzebuję jeszcze trzeciego ^

    Co do definicji F_CPU nie przyda mi się póki co, bo jedne działają z kwarcem inne bez.

    0
  • #6 20 Lip 2012 00:41
    dondu
    Moderator Mikrokontrolery Projektowanie

    Fifi209 napisał:
    Co do definicji F_CPU nie przyda mi się póki co, bo jedne działają z kwarcem inne bez.

    Możesz rozszerzyć tę myśl?

    0
  • #7 20 Lip 2012 00:53
    Fifi209
    Poziom 7  

    Oczywiście, jedne mają taktowanie 8MHz na wewnętrznym inne 16MHz na zewnętrznym rezonatorze kwarcowym

    0
  • #8 20 Lip 2012 01:43
    LordBlick
    VIP Zasłużony dla elektroda

    Fifi209 napisał:
    Przerwania mogę obsługiwać na INT0 i INT1 a potrzebuję jeszcze trzeciego ^
    To jest tylko jeden rodzaj przerwań - od zmiany stanów zewnętrznych cna odpowiednio oznaczonych wyprowadzeniach (zajrzyj do noty katalogowej... ;) ), nie ma nic wspólnego z przerwaniem Timera, które wystarczy jedno...
    Proszę bardzo, oto dramat w wielu "wątkach" do testów - wiem tylko, ze się kompiluje bez warningów(Oczywiście F_CPU w Makefile))
    Kod: C
    Zaloguj się, aby zobaczyć kod
    :

    0
  • #9 20 Lip 2012 15:17
    dondu
    Moderator Mikrokontrolery Projektowanie

    Fifi209 napisał:
    Oczywiście, jedne mają taktowanie 8MHz na wewnętrznym inne 16MHz na zewnętrznym rezonatorze kwarcowym

    No ale co to ma wspólnego z niechęcią do zdefiniowania F_CPU w opcjach projektu, za miast w kodzie?

    0
  • #10 20 Lip 2012 21:41
    Fifi209
    Poziom 7  

    Wybacz napisałeś w ustawieniach IDE a nie w opcjach projektu ;d

    0
  • #11 20 Lip 2012 21:59
    LordBlick
    VIP Zasłużony dla elektroda

    To ja pisałem, był to skrót myślowy, który poprawiłem. Czy kod został przetestowany i przeanalizowany ?

    0
  • #12 21 Lip 2012 11:03
    Fifi209
    Poziom 7  

    Przeanalizowany - tak, na tyle ile można było o 23
    Przetestowany - i tak i nie, wrzuciłem do siebie, ale nie chciał się kompilować, a że późno to olałem i poszedłem spać, dziś coś rozkminię :D

    0
  Szukaj w 5mln produktów