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

[ATmega32][C] - Dziwne zachowanie sprzętowego PWM, przetwornika ADC i LCD

20 Lip 2012 22:16 2510 16
  • #1 11127478
    Konto nie istnieje
    Poziom 1  
  • #3 11127493
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #4 11127592
    zumek
    Poziom 39  
    Skonfigurowałeś i włączyłeś przerwanie od OCR0, zezwoliłeś globalnie na na przerwania, a procedury ISR ani widu, ani słychu :D

    PS.
    Pomieszałeś (zamieniłeś miejscami) nazwy bitów, w rejestrach TIFR, TIMSK.
  • #5 11127621
    Konto nie istnieje
    Poziom 1  
  • #6 11127786
    LordBlick
    VIP Zasłużony dla elektroda
    doles napisał:
    Schemat raczej nie ma tutaj nic do rzeczy, pracuję na zestawie ewaluacyjnym Gotronik V2.
    I wentylator jest w zestawie ? ;)
    doles napisał:
    wielką ciekawostką jest to, że gdy wyrzuciłem z kodu zupełnie LCD wszystko dobrze działa, pełna regulacja PWMem poprzez potencjometr i ADC, wentylator ostro zasuwa, aż miło...Totalnie nie rozumiem tego. LCD wadzi ?
    Tego nikt nie wywróży, co czyha w wybranej przez ciebie wersji obsługi wyświetlacza, bo się nie pochwaliłeś ani linkiem, skąd wziąłeś, ani kodem...
  • #7 11127809
    Konto nie istnieje
    Poziom 1  
  • #8 11127967
    LordBlick
    VIP Zasłużony dla elektroda
    No cóż, powinieneś odpalić drugi timer w CTC i przerwanie, w którym wyrzucana była flaga, że trzeba coś wyświetlić. Po prostu LCD ma swoje ograniczenia, i nie można zbyt szybko wciskać mu dane.
  • #9 11127976
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #10 11128393
    LordBlick
    VIP Zasłużony dla elektroda
    doles napisał:
    Kluczem do tej "zagadki" było dodanie pustej procedury
    Skoro jest pusta, to lepiej nie włączać tego przerwania i ta procedurę wywalić.
  • #11 11128465
    Konto nie istnieje
    Poziom 1  
  • #12 11129293
    LordBlick
    VIP Zasłużony dla elektroda
    doles napisał:
    Teoretycznie timer1 mógłbym włączyć dwa kanały PWM, ale i tak będę potrzebować dalej 2 timerów w trybie CTC zliczania. Dodatkowo potrzebny jest jeszcze timer który będzie wysyłał co kilka sekund dane poprzez RS232 na aplikację do komputera (wilgotność, temperatura, obroty wentylatorów, itp).
    Uważam, ze ATmega32 starczy. W przerwaniach od CTC spokojnie da radę zaimplementować dowolną ilość własnych liczników.
    Skromniutki przykładzik na migających 4 szt. LED z różnymi częstotliwościami:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #13 11129475
    Konto nie istnieje
    Poziom 1  
  • #14 11129531
    LordBlick
    VIP Zasłużony dla elektroda
    doles napisał:
    Przecież aby zliczać impulsy potrzebuję tryb capture
    Można i w ISR(INT0_vect).
    doles napisał:
    Nie za bardzo rozumiem koncepcję z wykorzystaniem trybu CTC, mógłbyś ją rozwinąć ?
    W tym trybie przerwanie występuje regularnie co określony czas. Co przerwanie dekrementujemy programowy licznik, który gdy osiągnie 0, jest ustawiany z powrotem i wykonywany kod, który ma się uruchomić co określony czas będący wielokrotnością okresu pomiędzy przerwaniami CTC. Przykład kodu wyżej.
  • #15 11135176
    Konto nie istnieje
    Poziom 1  
  • #17 11135219
    Konto nie istnieje
    Poziom 1  
REKLAMA