Jag skulle behöva en justerbar fyrkantsvåg från en 16F628. Tittade på exemplet nedan, men den ger på tok för hög frekvens. Jag har ändrat PR2 = xx men kommer inte lägre än 3-4 kHz. Annars är det perfekt att ha en fyrkantsvåg liggande i bakgrunden eftersom den ska gå hela tiden men ändras pga andra händelser. Jag skulle behöva kunna justera frekvensen mellan kanske 100 och 1000 Hz.
Några idéer?
PicBasic Pro Code:
' Setting up hardware PWM for 38KHz operation.
DEFINE LOADER_USED 1'Setup for boot-loader programming
TRISC.2 = 0 ' CCP1 (PortC.2 = Output)
PR2 = 25 ' Set PWM Period for approximately 38KHz
CCPR1L = 13 ' Set PWM Duty-Cycle to 50%
CCP1CON = %00001100 ' Select PWM Mode
T2CON = %00000100 ' Timer2 = ON + 1:1 prescale
TRISB.0 = 0
ADDRESS VAR BYTE
DAT VAR BYTE
ID VAR BYTE
ADDRESS = 10
ID = 25
BEGIN:
FOR DAT = 0 TO 255
SEROUT PORTB.0,4,[ID,ADDRESS,DAT]
PAUSE 100
NEXT
GOTO BEGIN
Fyrkantsvåg med Picbasic
Hej,
(Mitt första inlägg här....be gentle...)
Om du kör med 4MHz klocka så är lägsta möjliga frekvensen du kan uppnå ~244Hz, om du kör med 20Mhz så är det ~1221Hz.
Om du kör med 4Mhz och sätter prescalern till 1:4 samt PR2 till 249 så skall du få 1000Hz, sätt DutyCycle till 500 för 50% puls/pause.
250Hz: Prescaler 1:16, PR2: 249, DutyReg: 500 = 50%
300Hz: Prescaler 1:16, PR2: 207, DutyReg: 416 = 50%
500Hz: Prescaler 1:16, PR2: 124, DutyReg: 250 = 50%
700Hz: Prescaler 1:16, PR2: 88, DutyReg: 178 = 50%
800Hz: Prescaler 1:16, PR2: 77, DutyReg: 156 = 50%
/Henrik Olsson.
(Mitt första inlägg här....be gentle...)
Om du kör med 4MHz klocka så är lägsta möjliga frekvensen du kan uppnå ~244Hz, om du kör med 20Mhz så är det ~1221Hz.
Om du kör med 4Mhz och sätter prescalern till 1:4 samt PR2 till 249 så skall du få 1000Hz, sätt DutyCycle till 500 för 50% puls/pause.
250Hz: Prescaler 1:16, PR2: 249, DutyReg: 500 = 50%
300Hz: Prescaler 1:16, PR2: 207, DutyReg: 416 = 50%
500Hz: Prescaler 1:16, PR2: 124, DutyReg: 250 = 50%
700Hz: Prescaler 1:16, PR2: 88, DutyReg: 178 = 50%
800Hz: Prescaler 1:16, PR2: 77, DutyReg: 156 = 50%
/Henrik Olsson.
Du kan få precis hur låg frakvens som helst, men kanske inte med
just CCP/PWM modulen. Den har sitt område där den fungerar bra.
Låga frekvenser är enklast att fixa med ett timer-avbrott och lite
kod som "togglar" en pinne. Sedan är det bara att lägga till en räknare
och räkna avbrott om du vill ha riktigt låga frekvensen. I princip kommer
även denna lösning att bli "liggande i bakgrunden"...
just CCP/PWM modulen. Den har sitt område där den fungerar bra.
Låga frekvenser är enklast att fixa med ett timer-avbrott och lite
kod som "togglar" en pinne. Sedan är det bara att lägga till en räknare
och räkna avbrott om du vill ha riktigt låga frekvensen. I princip kommer
även denna lösning att bli "liggande i bakgrunden"...