Witam Wszystkich forumowiczów :) Mam mały problem z programem: $regfile = "ATtiny13.dat" $crystal = 9600000 $hwstack = 20 $swstack = 20 $framesize = 20 Config Portb.0 = Output Config Portb.3 = Input Config Portb.4 = Input Portb.0 = 0 Portb.3 = 0 Portb.4 = 0 Dim I As Byte Set Portb.0 Set Portb.3 Set Portb.4 Config Timer0 = Pwm , Compare A Pwm = Clear Down , Prescale = 8 Enable Timer0 Enable Interrupts Do If Pinb.3 = 1 And Pinb.4 = 1 Then Pwm0a = 0 Waitms 25 End If If Pinb.3 = 0 And Pinb.4 = 0 Then Pwm0a = 0 Waitms 25 End If If Pinb.3 = 1 And Pinb.4 = 0 Then Pwm0a = 0 Waitms 25 End If If Pinb.3 = 0 And Pinb.4 = 1 Then For I = 0 To 255 Pwm0a = I Waitms 25 End If Next I Waitms 250 Loop End Niestety nie działa jak sobie to wyobrażam. Chciałbym aby dioda zapaliła się płynnie (PWM) tylko w ostatnim przypadku. W innych ma zgasnąć nawet jak się świeci to wyłączyć się musi od razu bez żadnego efektu. Proszę o jakąś podpowiedź gdzie zrobiłem błąd. Mam jakąś blokadę i nie potrafię ugryźć tego :(
|
|||








Podpowiedź
Nie bardzo kminię program bo brak komentarzy, ale zmień ten fragment:
Na taki:
Moja strona w powijakach
Zasada działania
Postaram się troszkę wytłumaczyć działanie programu.
Gdy na pinie 3 pojawi się stan niski a na pinie 4 stan wysoki powinna zapalić się dioda led z efektem PWM (powolne rozjaśnianie) aż do pełnego świecenia diody led i tak powinno zostać, chyba że zmieni się jakiś stan na którymś z pinów 3 i 4, wtedy dioda powinna normalnie zgasnąć (nagle) do momentu aż ponownie pojawi się ta sama konfiguracja do rozjaśnienia diody.
Zmieniając nazwy portów nic nie pomogły :(
Chyba że jest jakieś prostsze rozwiązanie nie używając do tego procesora :)