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.

atmega8 - [BASCOM]włączenie i wyłączanie Timera

fantasta 25 Paź 2012 11:58 1860 10
  • #1 25 Paź 2012 11:58
    fantasta
    Poziom 29  

    Witam.

    Napisałem prosty programik. Działa on tak że po włączeniu układ generuje impulsy o częstotliwości regulowanej przez ADC2.
    Teraz nie mam pojęcia jak zrobić aby przycisk podpięty na PD.0 włączał i wyłączał mi ten generator na wyjściu atmegi.

    Kod: Basic4GL
    Zaloguj się, aby zobaczyć kod

    0 10
  • #2 26 Paź 2012 07:29
    fantasta
    Poziom 29  

    Niestety kolego MArSTER_1 Nie działa ten kod.
    Generator chodzi. Nawet ustawiłem włączanie i wyłączanie innymi różnymi przyciskami i nic nie pomogło.

    0
  • #3 26 Paź 2012 09:09
    zumek
    Poziom 39  

    Sposobów znalazłoby się kilka, ale ja proponuję:

    Włączenie "generatora"

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Wyłączenie "generatora", przez "odłączenie" wyjścia OC1A, od portu(pinu).
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #4 26 Paź 2012 09:17
    SylwekK
    Poziom 29  

    No nieeee, przecież moderoator zumek wywalił mój post do kosza po czym udziela identycznej rady. I żeby nie było kompilator w najnowszej wersji bez problemu przyjmuje fragmentaryczne konfiguracje.

    To moja porada ze skasowanego posta w tym temacie:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod



    EDIT:
    https://www.elektroda.pl/rtvforum/viewtopic.php?t=2406999&highlight=

    0
  • #5 26 Paź 2012 09:37
    zumek
    Poziom 39  

    SylwekK napisał:
    No nieeee, przecież moderoator zumek wywalił mój post do kosza po czym udziela identycznej rady. I żeby nie było kompilator w najnowszej wersji bez problemu przyjmuje fragmentaryczne konfiguracje.

    To moja porada ze skasowanego posta w tym temacie:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod



    EDIT:
    https://www.elektroda.pl/rtvforum/viewtopic.php?t=2406999&highlight=


    No jeśli uważasz, że Twoja instrukcja "włączenia" jest identyczna z moją, to wybacz, ale udaj się do okulisty :D
    Przecież Twój sposób konfiguracji timera, nie włączy w ogóle timera, ponieważ nie ustawiasz preskalera i nie włączasz trybu CTC.

    0
  • #6 26 Paź 2012 09:48
    fantasta
    Poziom 29  

    Oki, ale mam to umieścić w programie w pętli If then zależnej od przycisku ?

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #7 26 Paź 2012 09:54
    MArSTER_1
    Poziom 18  

    Mam prośbę.
    Po pierwsze zrób małą zmianę. w pętli Do Loop napisz zamiast tamtego kodu ( który wyrzucił zumek) następujący kod

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Jeśli zadziała to sprawdź czy działa instrukcja if. Wstaw w jej wnętrze po if załączanie diody na jakimś wyjściu a po elseif jej wygaszanie.W ten sposób sprawdzisz działanie przycisku. Może być tak, że użycie w warunku TCCR1B nie jest rozpoznawalne. Wtedy trzeba będzie ten rozkaz zastąpić badaniem zmiennej nie zawartości rejestru. Co do zatrzymywania Timera to rozkaz TCCR1B=&B00000000 jest właściwy. Sam stosuję go w wielu miejscach i działa bezbłędnie.

    0
  • #8 26 Paź 2012 09:59
    fantasta
    Poziom 29  

    Zrobiłem tak

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Co sek gen jest włączany i wyłączany ale nie reaguje na zmianę w ADC i przebieg ma częstotliwość niezmienną ok 8Hz


    A jak wstawię to co wyżej od kolegi zumek nic się nie dzieje. Generator działa cały czas.

    0
  • #9 26 Paź 2012 10:31
    zumek
    Poziom 39  

    fantasta napisał:
    ...
    A jak wstawię to co wyżej od kolegi zumek nic się nie dzieje. Generator działa cały czas.

    Szkoda tylko, że nie pokazałeś jak i gdzie go wstawiasz :(

    Widzę, że bez gotowca ani rusz :D

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #10 26 Paź 2012 10:37
    MArSTER_1
    Poziom 18  

    No to extra. Widać już, że można zatrzymać Timer i go uruchomić. Teraz sprawdź warunek if. Wyrzuć kod w waitami jednosekundowymi i wróć do kodu z If. Tak jak pisałem poprzednio prawdopodobnie nie jest rozpoznawany w instrukcji If warunek ..And TCCR1B=&B00000000. Potrzebna jest zmienna w tym miejscu. Ale po kolei. najpierw sprawdź sam przycisk czy działa. Wyrzuć więc z instrukcji if oraz elseif
    And TCCR1B=&B00000000 i And TCCR1B=&B00000010. Niech pozostanie samo sprawdzanie nacisnięcia klawisza. Wprowadź instrukcje załączające i wyłączające jakąś diodę. Jak uruchomisz działanie przycisku to pisz.

    0
  • #11 26 Paź 2012 11:16
    fantasta
    Poziom 29  

    Kod kolegi zumek działa bez zarzutu
    Zrobiłem jeszcze opcje włączanie i wyłączania na dwóch przyciskach.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0