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.

Attiny 13A - LED sygnalizujący prace PWM

domind 21 Lis 2013 07:39 1710 14
  • #1 21 Lis 2013 07:39
    domind
    Poziom 14  

    Attiny 13A 9.6MHz dostaje na PB1 sygnal PWM 100Hz (dlugosc impulsu okolo 1 milisekunda) i ma taki sam syganal podac na diiode na PB4.
    Dioda zamiast swiecic przygaszona mryga.

    Jak odbieram w petli glownej przez kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    to wszystko dziala.

    Jak probuje przez przerwanie, zarowno jako zmiana stanu logicznego jak i zakomentowane szukanie zbocza opadajacego i wzrastajacego to albo dioda mryga (2-3 razy na sekunde nierownomiernie), albo swieci stale.
    Caly kod:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Obstawiam ze gdzies robie blad, ale nie moge znalesc co jest nie tak.
    Z gory dziekuje za pomoc.

    0 14
  • #3 21 Lis 2013 08:06
    domind
    Poziom 14  

    Podobne mi dzialalo wlasnie w petli glownej. Problem jest ze w glownej petli docelowo ma byc co innego, a to mruganie ma byc w przerwaniu.

    0
  • #5 21 Lis 2013 09:03
    2rs232
    Poziom 17  

    Kod: c
    Zaloguj się, aby zobaczyć kod

    domind napisał:

    Attiny 13A 9.6MHz dostaje na PB1 sygnal PWM 100Hz (dlugosc impulsu okolo 1 milisekunda) i ma taki sam syganal podac na diiode na PB4.

    Po włączeniu procesor jako pierwsze może wykryć zbocze narastające lub opadające, a to może spowodować "zanegowanie" przebiegu na diodzie (problemu niema jeśli stan początkowy jest znany).
    domind, przy testowaniu przydatny byłby oscyloskop 2 kanałowy, abyś mógł porównać przebiegi PWM i dla diody.
    darmowy-oscyloskop-i-analizator

    0
  • #7 21 Lis 2013 12:53
    domind
    Poziom 14  

    Probuje zrobic proste ESC.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    tez mryga a powinna swiecic ciagle, tylko przygaszona.
    Ostatnie rozwiazanie z "if" - to jest to samo co napisalem w pierwszym poscie.
    Problem jest, ze takie if + while w petli glownej dobrze dziala, a if w przerwaniu powoduje nieregularne mryganie diody, jak by czesc zmian byla gubiona.

    0
  • #9 21 Lis 2013 14:43
    domind
    Poziom 14  

    Sygnal jest z Atmega8 8MHz i PWM sterowany przez timer w przerwaniu, nie sprzetowo. Dioda na sasiednim pinie sterowana tak samo jako kontrolka.
    Piny pomiedzy Atmega i Attiny polaczone bezposrednio. Teraz sie zastanawiam, ze moze na tej linii trzeba dac jakis rezystor i to pomoze.
    Ciagle jak zrobie nie przez przerwanie tylko w petli glownej, to dziala idealnie, wiec teoretycznie stany logiczne przechodza dobrze.

    0
  • #11 21 Lis 2013 20:03
    domind
    Poziom 14  

    snnaap dal rade - dzieki.
    Najwyrazniej problem jest w tym ze stan logiczny pinu nie nadaza za zmiana zbocza.
    O dziwo bardzo podobny kod do pierwotnego tylko na przerwaniu PCINT dziala normalnie.
    Jak by ktos potrzebowal:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #13 21 Lis 2013 21:39
    domind
    Poziom 14  

    Tiaa... dwa dni zmarnowane, bo
    zamiast MCUCR |= (1 << ISC00); wpisalem MCUCR |= (1<ISC00);

    0