Witam , ostatnio przyszedł mi prosty pomysł do głowy jak generować PWM na POKEYU. Na razie moja teoria działa w praktyce.
Pomysł polega na tym żeby osiągnąc modulację współczynnika wypełnienia definiowaną przez użytkownika (czyt. muzyka).
Teoria wygląda następująco
1. Ustawiamy $d208 - na włączenie filtra - z dokumentacji technicznej pokeya wynika że jest on barmką AND między 1 a 2 kanałem.
2. Ustawiamy głośność i zniekształcenie filtrowanego kanału , 2 wyciszamy.
3. Tutaj ustawiamy właściwą częstotliwość kanału bazowego , na 2 kanale ustawiamy maksymalną częstotliwość - wpisujemy 1.
4. Resetujemy liczniki obu kanałów aby wystartowały równo - wpisując coś niezerowego do $d209
5. Oba zaczynają liczyć razem od nowa - wobec czego następuje cisza przez 1 okres licznika 1 i 2.
6. Odczekujemy n cykli zegarowych zanim ustawimy zegar 2 na częstotliwość zegara 1.
7. Otrzymujemy regulację wsp wypełnienia !
Rysunek:
1. ___---___---__
2. __---___---___
3. ___-_____-___
1. Fala 1 generatora , 2. Fala 2 generatora 3. Fala po filtrze (sumie)
Przykłądowy listing:
opt l-h+
org $0800
start lda #$8
wt cmp $d40b
bne wt
dec $d01a
sta $d40a
lda #$2 ; filtruj 1 - 2 gim
sta $d208
lda #0
sta $d207
lda #$ef
sta $d203
ldx #$ff ; ta sama fala na 2 generatorach
stx $d202 ;
lda #1 ; 32 khz na 1
sta $d206 ;
ldy $ff
lda #$ff ; resetuj kanaly
sta $d209 ; oba startują równo !
wt1 dey
bpl wt1
stx $d206
inc $d01a
lda $ff
clc
adc #1
and #63
sta $ff
jmp start
; jak na razie jeszcze nie wpadłem na wzór jak przeliczyć n w zależności od częstotliwości i wsp. wypełnienia .
Czekam na sugestię