PWM - nie działa


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.
W obecnej chwili procesor nie reaguje na zmiany na portach pinów 3 i 4, a dioda płynnie się rozjaśnia i nagle gaśnie robiąc to ciągle.

Proszę o jakąś podpowiedź gdzie zrobiłem błąd. Mam jakąś blokadę i nie potrafię ugryźć tego :(
Z góry dziękuję za pomoc :)
Pozdrawiam!




Portret użytkownika matrix

Podpowiedź

Nie bardzo kminię program bo brak komentarzy, ale zmień ten fragment:

Config Portb.3 = Input
Config Portb.4 = Input

Na taki:

Config Pinb.3 = Input
Config Pinb.4 = Input

Portret użytkownika Chester

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 :)