Pytania, kody i porady dotyczące nie tylko Bascom.
-
demsy
- Posty: 24
- Rejestracja: 30 sie 2015, 22:06
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ć?
For I = 0 To 255
Pwm0a = I
Waitms 2
Next I
-
niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
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
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ę
-
niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
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
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
-
niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
Post
autor: niveasoft » 21 lis 2018, 12:45
To akurat proste jak świński ogon Mhihi
$regfile = "attiny13a.dat"
$crystal = 1200000
$hwstack = 4
$swstack = 0
$framesize = 32
Dim Timeout As Word , Pwm_val As Byte
Config Portb = &B00001 'PORTB.0=>WYJŚCIE
Portb = &B11110 'reszta wejść podciąganie do VCC
Przycisk Alias Pinb.1 'odd B1 do B1
Config Timer0 = Pwm , Prescale = 256 , compare_a_pwm = clear_up, compare_a_pwm = disconnect
Do
If Przycisk = 0 Then Timeout = 5000 '10s = 10tyś ms
If Timeout > 0 Then 'zawsze jeśli Timeout większy od zera
Decr Timeout 'odliczaj go w dół
'jesli Timeout >0 to zwiększamy PWM az do maksimum
If Pwm_val < 255 Then 'dopóki mniejsza od maksimum to
Incr Pwm_val 'zwiększaj co 2ms
Pwm0a = Pwm_val 'wpisz do Timera
End If
Else 'a jeśli czas się skończył...
'jeśli czas sie skończył to powoli ściemnij
If Pwm_val > 0 Then 'dopóki większe od zera
Decr Pwm_val 'zmniejszaj co 2ms
Pwm0a = Pwm_val 'wpisz do Timera
End If
End If
Waitms 2 'dlatego Timeout = 5000 bo x2 wyjdzie 10s
Loop
-
demsy
- Posty: 24
- Rejestracja: 30 sie 2015, 22:06
Post
autor: demsy » 22 lis 2018, 22:21
.... a fusebity jak powinny być ustawione? 7B, FF?
-
niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
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