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

ATMEGA 162, sprzętowy PWM i DS18B20...

sundayman 07 Kwi 2010 15:09 3636 14
  • #1 7931087
    sundayman
    Poziom 26  
    Witam

    Właśnie sobie projektuję taki dość prosty układzik;

    Atmega162-16AU, do niej podłączone 4 DS18B20.
    Chcę sterować z procesora 4 wyjściami PWM - 2 będą regulować 12V taśmy LED,
    a 2 wentylatory 12V (takie "komputerowe" powiedzmy).

    Całość pod BASCOMEM (nie znam C niestety), a jako jeszcze zielonkawy, mam tu pewną wątpliwość - obawiam się jednego problemu;

    Czytałem, że żeby obsłużyć 1wire, to niewskazanie jest wystąpienie przerwiania
    w czasie odczytu z termometrów. Ale - z drugiej strony - chciałem użyć sprzętowego PWM. Dlaczego sprzętowego ? No głównie dlatego, żeby uniknąć "piszczenia" wentylatorków, i chyba muszę tutaj zrobić to PWM powyżej 20kHz.

    No i teraz - czy przy korzystaniu z sprzętowego PWM, będzie mi chodzić 1wire spod BASCOMA ?

    Gdyby chodziło tylko o sterowanie LEDami, to pewnie mógłbym dać PWM programowe (ale czy wtedy odczyt z 1wire nie powoduje jakichś "problemów" ?).
    No ale obawiam się, że jakbym chciał z zrobić ponad 20kHz dla tych wentylatorów, to się pewnie nie wyrobi.

    Chciałem dać zewnętrzny kwarc 11.059, ponieważ oprócz tego mam tu też wyjście na RS232, żeby tym sterować z PC, no i dla uzyskania poprawnych szybkości na RS-ie...

    Jestem na etapie schematu, więc pytam Was o zdanie, bo może uniknę problemów :)

    pozdr.
  • #2 7931201
    wojtek8-7
    Poziom 13  
    Jak ustawisz sprzętowe PWM to już nie będziesz musiał nic z tym robić, z wyjątkiem zmiany wypełnienia impulsu, ale to jest prosta czynność (jeśli oczywiście chcesz to zmieniać). Natomiast 1-wire musisz obsłużyć programowo, a układ DS18B20 jest bardzo wrażliwy na źle dobrane czasy. Polecam skonfigurować na początku sprzętowe PWM w zależności od potrzeb a następnie zająć się odczytem temperatury. Zalecane jest aby w trakcie komunikacji z DS wyłączyć przerwania z prostego powodu, nadchodzące przerwanie może zerwać komunikacje i powodować błędne odczyty...
  • #3 7931212
    FastProject
    Poziom 28  
    Z takim kwarcem da się zrobić programowe 20kHz. Ze sprzętowym nie ma problemu z jakimikolwiek przerwaniami. Zapewne chodziło o przerwania występujące podczas multipleksu wyświetlaczy, ale wtedy przy odpowiednim zarządzaniu przerwań także nie ma problemu z odczytem z 1Wire.Także piszę w bascomie i mam program z 4xDS18B20 na przewodzie 20m i z 15 multipleksowanymi cyframi wyświetlacza siedmio-segmentowego LED.

    Dodano po 1 [minuty]:

    wojtek8-7 napisał:
    Zalecane jest aby w trakcie komunikacji z DS wyłączyć przerwania z prostego powodu, nadchodzące przerwanie może zerwać komunikacje i powodować błędne odczyty...


    Nie trzeba wyłączać przerwań, a odczytywać dane z DS między przerwaniami.
  • #4 7931260
    sundayman
    Poziom 26  
    No to koledzy mnie uspokoili trochę :)
    Tak sobie czytam datasheeta od atmegi 162 i nie mogę się połapać z tymi PWM-ami...
    Bo widzę tak :

    timer/counter0 z PWM
    timer/counter2 z PWM

    i co dalej ?

    Gdzie te pozostałe PWM ?
    Może któryś kolega byłby tak miły i mógłby w miarę łopatologicznie
    wyłożyć - jak to się je :)

    Czy Bascom wspiera sprzętowy PWM w ogóle ?
  • #5 7931287
    FastProject
    Poziom 28  
    Polecam poczytanie HELPA Bascoma. Ale tak obsługuje wszystkie 4.
    Timer0 - wyprowadzenie 4: OC0
    Timer2 - wyprowadzenie 21: OC2
    Jest jeszcze Timer1 który ma 2xPWM (wyprowadzenia 18 i 19, OC1A i OC1B)
  • #6 7931500
    sundayman
    Poziom 26  
    Czy te wyjścia z PWMów są aktywne w stanie wysokim czy niskim ?
  • #7 7931594
    FastProject
    Poziom 28  
    A jaką to robi różnice skoro PWM i tak bardzo szybko zmienia swój stan. Jak będziesz chciałe wyłączyć całkowicie diodę czy zgasić to wystawisz na ten pin logiczne '0' lub zmniejszysz to zera odpowiedni rejestr PWM.
  • #8 7931742
    sundayman
    Poziom 26  
    No właśnie jak zmniejszę do zera rejestr PWM to wtedy będę miał 1 czy 0 :) ?
    Chodzi mi o to, czy używać driverów do mosfetów z negacją czy bez.
    No nie chciałbym, żeby wyzerowanie PWM powodowało włączenie na full.
    Pewnie że można "odwrócić" to programowo, ale lubię robić "porządnie" ;)
  • #9 7931802
    FastProject
    Poziom 28  
    Nie pamiętam jak to tam jest, ale nawet jak przy wyzerowanym rejestrze PWM będziesz miał 1 na wyjściu, to wtedy (przy 0 w rejestrze) PWM nie zmienia ci wyjścia, a co za tym idzie nie będzie wpływał na zmianę pinu. Poza tym możesz sobie za pomocą instrukcji bascoma odłączać pin od sprzętowego PWM i manualnie, dowolnie niezależnie od zawartości rejestru PWM sterować pinem, więc także wyłączyć driver sterujący LED.

    Dodano po 2 [minuty]:

    sundayman napisał:

    Pewnie że można "odwrócić" to programowo, ale lubię robić "porządnie" ;)


    Jeśli piszesz i wiesz, że można zrobić "odwrócenie" programowo, to po co wydawać pieniądze na dodatkowy układ drivera-negatora do tranzystora?Owszem drivery pomagają w otwieraniu MOSFETA, ale podejrzewam, że nie mówimy i jakiś wielkich prądach LED a więc wydaje mi się, że obejdzie się bez drivera.
  • #10 7931878
    sundayman
    Poziom 26  
    Drivery to wolałbym dać raz - dla bezpieczeństwa AVRa, po drugie ten PWM dla wentylatorków no to będzie dość szybki (znaczy powyżej 20 kHz, jak pisałem). Nie wiem, czy to będzie już problem dla mosfeta , ale dołożenie drivera za 4 zł to wielki kłopot nie jest.

    A co do "polaryzacji" to wolałbym wiedzieć co będę miał na zatrzymanym wyjściu PWM...tylko kurka wodna nie mogę tego znaleźć w datasheecie...albo ja oferma jestem i nie widzę...

    Prądy faktycznie niewielkie, na ledy to myślę że kilka A, wentylatorki pewnie mniej biorą znacznie. No ale - jak pisałem, jak już robić to porządnie, czyli z jakimś tam zapasem żeby mi się nic nie grzało.
  • Pomocny post
    #11 7932265
    janbernat
    Poziom 38  
    Str. 100 i 101.
    Rejestr TCCR0, bity COM00 i COM01.
  • #12 7932408
    sundayman
    Poziom 26  
    aaaa widzisz... znaczy można ustawić. No super, bardzo dziękuję.
  • #13 7932521
    janbernat
    Poziom 38  
    W Bascomie np. tak:
    Set Tccr0.com00
    Albo reset- co chcesz.
  • #14 7941518
    p_zag
    Poziom 14  
    Witam

    sundayman napisał:
    Witam

    Właśnie sobie projektuję taki dość prosty układzik;

    Atmega162-16AU, do niej podłączone 4 DS18B20.
    Chcę sterować z procesora 4 wyjściami PWM - 2 będą regulować 12V taśmy LED,
    a 2 wentylatory 12V (takie "komputerowe" powiedzmy).

    Całość pod BASCOMEM (nie znam C niestety),.....


    Jak się rozwiążesz swój problem z PWM to polecam stronkę http://hobby.abxyz.bplaced.net/index.php?pid=4&cid=1 tam prosto i szybko nauczysz się języka C.
  • #15 7943286
    sundayman
    Poziom 26  
    Dzięki, no wezmę się oczywiście za to, bo to aż wstyd się przyznać :)
REKLAMA