Sprzętowy PWM Attiny 13

Pytania, kody i porady dotyczące nie tylko Bascom.
ODPOWIEDZ
demsy
Posty: 24
Rejestracja: 30 sie 2015, 22:06

Sprzętowy PWM Attiny 13

Post autor: demsy » 20 lis 2018, 9:21

Witam wszystkich
Potrzebuje wysterować mosfetem z attiny 13(PWM sprzętowym) , jak można ten fragment kodu niżej inaczej zapisać?
  1.  For I = 0 To 255
  2.       Pwm0a = I
  3.       Waitms 2
  4.  Next I
Awatar użytkownika
niveasoft
Posty: 1215
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Sprzętowy PWM Attiny 13

Post autor: niveasoft » 20 lis 2018, 9:28

A w czym problem lub co chcesz osiągnąć?
demsy
Posty: 24
Rejestracja: 30 sie 2015, 22:06

Re: Sprzętowy PWM Attiny 13

Post autor: demsy » 20 lis 2018, 10:43

Chciałbym uzyskać efekt żeby po naciśnięciu przycisku, dioda która będzie podłączona pod mosfet rozjaśniła się, i po określonym czasie wygasła, ale w momencie wygaszania i wciśnięciu przycisku żeby rozjaśniła się, ale nie od 0-255 tylko od tego wypełnienia kiedy zostało przerwane ściemnianie. zakręciłem trochę :roll: :D
Awatar użytkownika
niveasoft
Posty: 1215
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Sprzętowy PWM Attiny 13

Post autor: niveasoft » 20 lis 2018, 17:59

Napisz to jakoś zrozumialej.

Nie zwykłem zgadywać, ale napisałbym to sobie z rozróżnieniem krótkiego i długiego naciśnięcia przycisku.
Długie rozjaśnia pomału aż do puszczenia. Później, na odwrót, długie ściemnia aż do zera. Wartość jest pamiętana i przy krótkim naciśnięciu po prostu szybko rozjaśnia samo do ostatnio zapamiętanego poziomu, albo szybko ściemnia do zera.
demsy
Posty: 24
Rejestracja: 30 sie 2015, 22:06

Re: Sprzętowy PWM Attiny 13

Post autor: demsy » 21 lis 2018, 11:37

Tylko i wyłącznie krótkie i chwilowe naciśnięcie.
naciskam przycisk- rozjaśnia się dioda- czeka 10s - dioda się wygasza
W momencie wygaszania , jeśli nacisnę jeszcze raz przycisk(krótkie naciśnięcie) to dioda się rozjaśni i znowu liczy 10s i wygaśnie
Awatar użytkownika
niveasoft
Posty: 1215
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Sprzętowy PWM Attiny 13

Post autor: niveasoft » 21 lis 2018, 12:45

To akurat proste jak świński ogon Mhihi :D
  1. $regfile = "attiny13a.dat"
  2. $crystal = 1200000
  3. $hwstack = 4
  4. $swstack = 0
  5. $framesize = 32
  6.  
  7. Dim Timeout As Word , Pwm_val As Byte
  8.  
  9. Config Portb = &B00001                                      'PORTB.0=>WYJŚCIE
  10. Portb = &B11110                                             'reszta wejść podciąganie do VCC
  11.  
  12. Przycisk Alias Pinb.1                                       'odd B1 do B1
  13.  
  14. Config Timer0 = Pwm , Prescale = 256 , compare_a_pwm = clear_up, compare_a_pwm = disconnect
  15.  
  16. Do
  17.  
  18.  If Przycisk = 0 Then Timeout = 5000                        '10s = 10tyś ms
  19.  
  20.  If Timeout > 0 Then                                        'zawsze jeśli Timeout większy od zera
  21.   Decr Timeout                                              'odliczaj go w dół
  22.  
  23.   'jesli Timeout >0 to zwiększamy PWM az do maksimum
  24.  
  25.   If Pwm_val < 255 Then                                     'dopóki mniejsza od maksimum to
  26.    Incr Pwm_val                                             'zwiększaj co 2ms
  27.    Pwm0a = Pwm_val                                          'wpisz do Timera
  28.   End If
  29.  
  30.  Else                                                       'a jeśli czas się skończył...
  31.  
  32.   'jeśli czas sie skończył to powoli ściemnij
  33.  
  34.   If Pwm_val > 0 Then                                       'dopóki większe od zera
  35.    Decr Pwm_val                                             'zmniejszaj co 2ms
  36.    Pwm0a = Pwm_val                                          'wpisz do Timera
  37.   End If
  38.  
  39.  End If
  40.  
  41.  Waitms 2                                                   'dlatego Timeout = 5000 bo x2 wyjdzie 10s
  42. Loop
demsy
Posty: 24
Rejestracja: 30 sie 2015, 22:06

Re: Sprzętowy PWM Attiny 13

Post autor: demsy » 22 lis 2018, 22:21

.... a fusebity jak powinny być ustawione? 7B, FF?
Awatar użytkownika
niveasoft
Posty: 1215
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Sprzętowy PWM Attiny 13

Post autor: niveasoft » 24 lis 2018, 10:28

Nowy Tiny13 ma włączony bit CKDIV8 czyli z bazowej 9.6MHz robi się 1,2MHz i tak na wszelki wypadek napisałem u góry w kodzie $crystal = 1200000. FUSY 6A FF.
Jak wyłączysz CKDIV8 to będzie 7A FF i procesor śmiga na 9,6MHz więc musisz napisać $crystal = 9600000
ODPOWIEDZ