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.

[Attiny2313][C] PWM - czas rekacji

11 Lis 2008 03:17 1203 4
  • Poziom 9  
    Oto kod dot. sterowania PWM. Jak łatwo zauwazyc ma on zmieniać wartość timera w zależności o wejścia na pinach 4 i 5 portu B. Programik działa ale mam co do niego pytanie. Dlaczego zmiana obrotów czasami następuje natychmiast po podlaczeniu masy do jednego z pinow a czasem trzeba odczekac dosc znaczny okres czasu (ok.3 sek)? Czy jest to zależne od czestotliwosci sprawdzania warunków? Jeżeli tak to jak ustawić aby zmiany zachodziły natychmiastowo. Prosze o pomoc i wyrozumiałość :)
    Code:
    #include <avr/io.h> 
    

    void timer(void)  {
      TCCR0A = (1<<WGM01) | (1<<WGM00);
      TCCR0A |= (1<<COM0A1);
      OCR0A = 255;
      TCCR0B |= (1<<CS00);
    }

    void out(void) {
      DDRB |= (1<<2);
      DDRB &= ~(1<<5); 
      DDRB &= ~(1<<4);
    }

    int main (void)

     
      out();
      timer();
     
       
     while(1)
     {
     
      if (PINB & (1<<5))
      OCR0A= 255;
     
      else if (PINB & (1<<4))
      OCR0A = 125;
     
      else
      OCR0A = 0;
     
     }
       
    return (0);
    }
  • Poziom 32  
    Zapomniałeś o drganiach styków. Dodaj opóźnienie do warunku.
  • Poziom 9  
    A jakiś przykładzik? :)

    Przy takim ustawienu z mniejszych obrotów na wyższe przeskakuje natychmiastowo jednak z wyższych na niższe i na 0 nadal ok 3 sek...
    Code:
      if (PINB & (1<<5)) 
    
      {
      _delay_ms(5);
      OCR0A= 255;
      }
     
      else if (PINB & (1<<4))
        {
       _delay_ms(5);
      OCR0A = 125;
      }
     
      else
      {
        _delay_ms(5);
      OCR0A = 0;
      }
     }
  • Poziom 32  
    5ms to zdecydowanie za mało, daj tak 100ms. Pytanie kolejne to jaką częstotliwość oscylatora podałeś w programie? Odnośnie fuse bitów mam nadzieje że dobrze ustawione.
  • Poziom 9  
    Code:
    F_CPU = 1000000

    Ustawiłem 100 ms. Powiedzmy, że czas oczekiwania się zmniejszył, jednak nadal szybciej przechodzi z niższych na wyższe obroty, niż odwrotnie. Chciałbym również aby po zrzuceniu 'jedynki' z 4 lub 5 pinu silnik się zatrzymywał, a nie kręcił jeszcze przez chwile jak się to obecnie dzieje.