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

Avr atmega32 użycie timeryów

qudi 28 Mar 2010 13:21 1242 10
REKLAMA
  • #1 7890012
    qudi
    Poziom 15  
    Mam takie pytanie czy można korzystać oddzielnie / w tym samym czasie z dwóch timerów 0 i 1. Po prostu jednym generuje częstotliwość na potrzeby generowania sygnału, a drugi timer potrzebuje do sterowania wyświetlaczem...


    proszę o szybką odpowiedź
  • REKLAMA
  • #2 7890037
    tadzik85
    Poziom 38  
    Oczywiście, że tak nie baz powodu jest aż tyle timerów.
  • #3 7890556
    qudi
    Poziom 15  
    no dobra już wiem że można korzystać z dwóch naraz ale jak je inicjalizować ??? Jeden po drugim ? I co w przypadku gdy korzystam w obu z przerwań ?
  • REKLAMA
  • #4 7890572
    rusala
    Poziom 22  
    a w czym widzisz problem? każdy ma osobne rejestry i działanie jednego w żaden sposób nie zależy od drugiego. To samo tyczy się ich przerwań.
  • REKLAMA
  • #5 7890662
    qudi
    Poziom 15  
    odpaliłem dwa timery jeden miał dawać sygnał 20 Hz a drugi miał odświeżać mi wyświetlacz 7 segmentowy 100 Hz i niestety nie działa, zrobiłem dwa różne przerwania...

    
    
    ISR(TIMER1_COMPA_vect)        	// przerwanie dla porownania
    {
    PORTD ^= 0x01;			  		// zapalić/zgasić diode
    ICR1 = 1000000/(16*(0.0234*ADC + 0.9765));  // oblicza nowy szczyt dla licznika
    
    }
    
    ISR(TIMER0_COMP_vect )        	// przerwanie dla porownania
    {
    OCR0=0x00;
    }
    
    

    dioda wogóle nie działa... a wg pierwszego timera powinna...

    Dodano po 1 [minuty]:

    może te przerwania jakoś się żrą ? no ale to jak inaczej multipleksować wyświetlacz i dawać jakiś inny sygnał z 2 timera

    Dodano po 13 [minuty]:

    może zadam inaczej pytanie jak jednocześnie multipleksować wyświetlacz i generować inny sygnał częstotliwości ?
  • #6 7890741
    rusala
    Poziom 22  
    nikt nie każe Ci tego robić na przerwaniach szczególnie jeżeli timer ma tylko generować częstotliwość i możesz wykorzystaćdedykowanąnóżkę to bez sensu jest robić to na przerwaniu. W każdym razie sprawdź osobno czy działają.
  • #7 7892053
    rpal
    Poziom 27  
    przerwania kolega uaktywnij tak by the way ?
  • #8 7892264
    qudi
    Poziom 15  
    No ale u mnie timer ma generować sygnał zadany przeze mnie np. potencjometrem wiec raczej musi być w przerwaniu, i teraz mam mały problem bo multipleksowanie wyświetlacza też muszę zrobić przerwaniem (żeby zmieniać wartości na wyświetlaczu)

    kiedy robię te oba przerwania to widać że wyświetlacz migocze z wiadomych powodów... Czy ma ktoś jakąś rade ?

    Dodano po 1 [minuty]:

    im większą zadam częstotliwość sygnałowi generowanemu tym bardziej migocze mi wyświetlacz no bo więcej przerwań...
  • #9 7892543
    rusala
    Poziom 22  
    no zauważ, że obliczenie jakie masz w przerwaniu od T1 jest dość pracochłonne dla uC. A w sumie po co liczyć to za każdym razem na nowo. Wcale nie trzeba robić tego w przerwaniu żeby można było zmieniać wartość. Wystarczy, że w mainie będziesz mierzył co tam masz na ADC w danej chwili i jeżeli różnica między nowym i starym pomiarem jest większa niz ileśtam to wtedy dopiero przelicz i zadaj nową wartość licznikowi. Albo jak już koniecznie chcesz w przerwaniu to daj tam opisany warunek dzięki czemu w momencie jak nie zmieniasz wartości na ADC wykonuje się tylko pomiar a nie czasochłonne obliczenie na floatach. Innym podejściem zmniejszającym obciążęnie może być dodanie tablicy z już przeliczonymi wartościami i indeksowanie jej wynikiem pomiaru z ADC - szczególnie dobre jeżeli wystarczy 8bit wtedy tablica będzie miała tylko 256 elementów.
  • REKLAMA
  • #10 7893162
    qudi
    Poziom 15  
    Jeśli robię wyświetlanie w while to widać jak niektóre cyfry nachodzą na siebie nieznacznie, po prostu przechodzą za szybko czy co innego ? Jest to spowodowane tym że mam to w while ? prosze o pomoc
  • #11 7893203
    rusala
    Poziom 22  
    w jakims sensie nachodzą ? i cyfry jako "1,2,3" czy kolejne pozycje wyświetlacza ? I nie wiem czy odnosisz to do mojej poprzednie jwypowiedzi ale dla ścisłości nic nie pisałem o wyświetlaniu w głównej pętli.
REKLAMA