Poczytałem notke jeszcze i wydawało mi się, że rozumiem. Wpisałem w procka kod:
Kod: Zaznacz cały
$regfile = "m8def.dat" 'Pracujemy z Atmega8
$crystal = 4000000 'Czŕstotliwoťc zegara 4 MHz
Config Portb = &B11111111 'portb wszystkie jako wyjścia
Config Portc = &B1111111 'portC wszystkie jako wyjścia
Config Portd = &B11111011 'PD.2 jako wejście
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1
Tccr1a = &B10000000
Tccr1b = &B00001001 'tryb 4 - CTC, OCR1A wyznacza TOP
Ocr1ah = 0
Ocr1al = 100 'TOP
Icr1h = 0
Icr1l = 10 'wypelnienie
Do
Loop
End
...i lipa, na OC1A nie ma żadnego przebiegu (sprawdzam oscyloskopem). Nie wiem, co robię źle. Wpisałem tryb 4 -CTC, OCR1A wpisuje TOP, a na ICR1 reguluję wypełnienie. Chcę docelowo uzyskać 32 kHz, ale i mniejsze, wspomniane 5,5kHz.
[ Dodano: 2010-07-16, 17:50 ]
OK, udało się. Zmieniłem tryb z 4 na 10, ICRem ustawiam TOP a OCR1A wypełnienie. Usunąłem także całą Bascomową procedurę konfiguracji Timera1, skoro jest odwołanie do rejesrów. Trochę zachodu jest z podziałem wartości OCR1a i ICR na starsze i młodsze bity, ale w sumie nie sprawia to problemu. Zdziwiło mnie, z jaka dokładnością można ustawić częstotliwość PWM. W trakcie prób udało mi się otrzymać nawet 62 kHz (Top około 85), tak więc pole manewru jest.
Dzięki wszystkim za podpowiedzi i pozdrawiam
