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.

[AVR] Szukam układu... / 3 wyjścia 10bit PWM

15 Sie 2008 16:29 2399 11
  • Poziom 9  
    Witam
    Z góry zaznaczam że jestem (ciągle?) początkujący, i mam małe doświadczenie w kwestii mikrokontrolerów i generalnie elektroniki.

    W każdym razie, szukam (i nie mogę znaleźć) 8-bit mikrokontrolera AVR ktory spełniałby poniższe warunki:
    - możliwość pracy z prędkością 20MHz i taktowania kryształem (nie wiem dobrze, słyszałem że komunikacja szeregowa działa najlepiej przy taktowaniu 11,0592MHz, więc możliwość pracy z tą częstotliwością jest mile widziana)
    - komunikacja szeregowa, lub lepiej, USB
    - 3 wyjścia PWM, wszystkie z conajmniej 10-bit dokładnością
    - conajmniej 2kB flash
    Rozmiary i ilość pinów dowolne, ale wolałbym żeby układ był jak najmniejszy, i nie SMD (montaż w podstawce).

    W razie gdy nie ma takiego układu (jest ich dużo, przeglądam je ciągle, ale ciągle znajduję jakieś przeszkody) może ktoś ma pomysł jak rozwiązać problem, albo ma sugestie jak wykonać taki projekt: (lampa zmieniająca kolory)

    Chcę regulować jasność diód o trzech barwach (RGB) z uwzględnieniem gammy: chodzi mi o to że zwykle jasność diód nie rośnie liniowo, więc chcę wprowadzić korektę w zależności jak dany model diody świeci. Problem jest jednak taki, że z PWM o dokładności 8bit, przy powolnym zapalaniu się dioda "schodkuje". Więc im wyższa dokładność PWM, tym więcej stopni jasności, a więc tym gładzej zapala się dioda.
    Następnie: możliwość komunikacji z komputerem. Jako że obecnie mało który komputer ma złącze rs232, to naturalnie wybór pada na USB. Sposób w jaki USB będzie zaimplementowane - czy wbudowany w kontroler, czy za pomocą ukladu USB<->transmisja szeregowa - nie ma znaczenia.

    Możliwe że w grę wchodzi zewnętrzny generator PWM, albo nawet połączenie dwóch kontrolerów magistralą I2C/TWI.
    O obu rozwiązaniach myslałem, jednak w pierwszym przypadku: nie mam pojęcia jak i gdzie szukać takiego generatora; a w drugim: nie wiem czy połączenie kontrolerów magistralą to dobry i racjonalny pomysł.

    Liczę na waszą pomoc i propozycje :)

    EDIT: Zmieniłem tytuł na bardziej informatywny.
    Dodam jeszcze że próbowałem implementować 10-cio i 16-bit PWM przerwaniami zegarowymi z wyściami na zwkłych pinach IO, jednakże sygnał PWM był nierownomierny i diody czasami pzez kilka ms świeciły się maksymalnie jasno lub ciemno - zauważalnie, więc to też odpada...
  • Poziom 39  
    Uratowałby cię z pewnością ATMega1284P w obudowie 40 końcówkowej PDIP, ale jest on w fazie produkcyjnej.
  • Poziom 28  
    Koniecznie musi być AVR? 4-kanały 12-bitowego PWM, jak również łącze do PC po RS-232 (lub USB z przejściówką) mają mikrokontrolery z grupy ST7FLITE3x (20 wyprowadzeń, 8KB pamięci Flash), obsługa PWM w tym mikrokontrolerze jest trywialna. Skoro żaden z AVRów nie spełnia wymagań to może pora zmienić mikrokontroler?
  • Poziom 9  
    Czyli rozumiem że na razie podobnego układu nie ma? :)
    Widzę że układ ma 2x16-bit timery, wygląda ciekawie.
    Zaraz zajrzę do dokumentacji.

    Szkoda tylko użyć takiego dużego układu do takiego małego zastosowania. W końcu użyję góra 10 pinów...

    Dodano po 1 [minuty]:

    Pituś Bajtuś napisał:
    (...)mikrokontrolery z grupy ST7FLITE3x(...)


    Poszukam informacji, dziękuję :)
  • Pomocny post
    Poziom 39  
    Chyba, że połączysz dwa układy ATTiny2313 za pomocą SPI (szybka wymiana danych), CKOUT pierwszego <-> XTAL1 drugiego (praca z tą samą częstotliwością), skorzystasz z liczników Timer1 (dwa kanały 10bit PWM).
    I to byłoby jakieś tam rozwiązanie. A na dokładkę RS232.
  • Poziom 9  
    ZbeeGin napisał:
    Chyba, że połączysz dwa układy ATTiny2313 za pomocą SPI

    Czyli jednak pomysł z podłączeniem kilku układów był dobry - cieszę się :). Myślałem tylko żeby zrobić to za pomocą I²C, SPI wydaje się być lepszym rozwiązaniem. Ale czy będie wtedy możliwe programowanie mastera/slave'a z drugim układem podłączonym?

    ZbeeGin napisał:
    CKOUT pierwszego <-> XTAL1 drugiego

    Na to również nie wpadłem, myślałem o podłączeniu do obu układów zewnętrznego zegara.

    Grupa układów ST7 również wygląda fajnie, jednak zmiana platformy i jej nauka, podczas gdy jest to w ramach hobby i samouctwa (a mam mało czasu na to ze względu na pracę i studia) mało mi sie uśmiecha...

    Chyba jednak spróbuję zrobić podejście z dwoma układami.
  • Poziom 38  
    A ja zapytam może z innej strony,czy 10 bitów to nie przerost formy nad treścią do RGB?:>
  • Poziom 39  
    fluxidium napisał:
    SPI wydaje się być lepszym rozwiązaniem. Ale czy będie wtedy możliwe programowanie mastera/slave'a z drugim układem podłączonym?

    Możesz skorzystać także z TWI. W jednym układzie ustawisz go jako MASTER, a w drugim jako SLAVE - będzie nasłuchiwał. Resztę załatwią przerwania. Tylko uważaj przy zakupie. Muszą to być wersje 20MHz: -20PI, -20PU.
    Co do programowania to przełączaj sygnał RESET z programatora za pomocą zworki na płytce. Wtedy tylko wybrany proceosor odpowie. Programowanie obu na raz nie wchodzi w grę.

    fluxidium napisał:
    Na to również nie wpadłem, myślałem o podłączeniu do obu układów zewnętrznego zegara.

    Wtedy nie byłyby zsynchronizowane. Choć przy takich zadaniach nie miałoby to znaczenia. Ale jest jeszcze jeden aspekt tego: masz tylko jeden generator i 2 kondensatory - oszczędność w elementach.
  • Poziom 9  
    ZbeeGin napisał:
    (...)Ale jest jeszcze jeden aspekt tego: masz tylko jeden generator i 2 kondensatory - oszczędność w elementach.

    Więc właśnie o tym myślałem: zewnętrzny generator podłączony do dwóch układów, ale nie wiem czy tak się w ogóle da, na razie skupiłem się na innych aspektach :) W każdym razie pewniakiem będzie zrobienie tego tak jak ty mówisz, bo jest najprościej, i najpewniej.

    Balu napisał:
    A ja zapytam może z innej strony,czy 10 bitów to nie przerost formy nad treścią do RGB?:>

    Tak jak napisałem w OP :) Chcę zrobić korektę jasności żeby dioda zapalała się liniowo (próbowałem kilka rodzajów, i wszystkie zapalają się "gwałtownie"). Korekcja gammy (czy jakikolwiek inny sposób) jednak powoduje że jasność diody przy powolnym zapalaniu "schodkuje" (tak jak schodkują przejścia kolorystyczne gdy się przekonwertuje obraz z głębi 24-bitowej na 16-bitową). Te schodki mogę wyeliminować zwiększając dokładność bitową PWM ;)
    Jak widać, zależy mi na jakości końcowego efektu (chociaż jak ktoś zobaczy płytkę to wrażenie pewnie upadnie...)
  • Poziom 38  
    To może lepiej wykorzystaj gotowe układy do tego celu? Są takie 16bitowe bodajże z TI...
  • Poziom 9  
    Na razie pozostanę przy platformie którą w miarę znam, czyli AVR.
    Dzięki za pomoc :)
  • Poziom 38  
    Ja nie móię, żebyś nie używał AVR, ale są gotowe scalaki z TI sprzętowe PWMy:>