Re: My first foray into PWM
if you are using the hpwm command the max freq is 32767hz the min @64mhz ck is 3905 hz on a pic18
max period 256uS min 30.5uS
so you could at 50% duty get 128uS on 128uS off
Re: My first foray into PWM
Yes, I definitely want the hardware PWM. But it's not the 50% duty that I was concerned with, it was the 1 second period.
I see now the relation between clock speed and the PWM output. So there's no way I can get it slow enough to use it as a heartbeat (1 sec period) in the background if we limitted with a 4MHz lower range.
I was hoping to use it as a debugging tool; to show that a PIC is indeed working without taking any clock cycles (disturbing cycle sensitive logic). And I wanted to try out HPWM, I'm nowhere near ready to get back on my CNC project; have to complete my residential alarm system first (and I'd like to get that interfacing with android, text messenging and web page - lots of learning).
Robert
Re: My first foray into PWM
You might, if you have one laying around, use a clock divider chip... or a counter... Here's a link that explains my thinking better than I can.
Re: My first foray into PWM
You might be able to achieve something using compare mode and the external clock pin for timer1. if you have enough spare pins and if you were really clever
use the hpwm output to drive tmr1ck then you could change the flash rate on the fly
Re: My first foray into PWM
Euh, I think I'll just get back to finishing my Charlie-plexing work for now. LOL
Thanks though, I will have to jump into PWM one day, hopefully next summer.
Robert
Re: My first foray into PWM
Hi Robert,
In your first post you say LED ON for 500uS, OFF for 500uS but then you say you want a period of 1s - that's a difference of $03E8 times.
I know you didn't want to do it with an normal interrupts but I'm going to suggest a simple timer interrupt anyway.... At such low frequencies (even though you're probably not going to get 500ms interrupt period in "on go") the interrupt processing will have very little impact on the overall performance.
/Henrik.
Re: My first foray into PWM
Hi Robert;
An HeartBeat Led should be do it with a timer interrupt like Henrik sujested....
If you cannot achieve tht time that you want, you do for instance, a 100ms interrupt and with a counter you can achieve the time that you want counting in 100ms spaces.
You can count 5 x 100ms and then toogle the led.
1 Attachment(s)
Re: My first foray into PWM
Quote:
Originally Posted by
HenrikOlsson
Hi Robert,
In your first post you say LED ON for 500uS, OFF for 500uS but then you say you want a period of 1s - that's a difference of $03E8 times.
...
(without considering oscillator speed and PWM range limitations)
Then there's something about PWM that I didn't understand. HIGH/LOW using PAUSE for 500uS is not the same as a 1000uS period with 50% duty cycle?
Attachment 7531
Ooop, uS, not Us.
Robert
Re: My first foray into PWM
Quote:
Originally Posted by
Demon
(without considering oscillator speed and PWM range limitations)
Then there's something about PWM that I didn't understand. HIGH/LOW using PAUSE for 500uS is not the same as a 1000uS period with 50% duty cycle?
Attachment 7531
Ooop, uS, not Us.
Robert
Yes, from that point of view, it is the same thing! (without considering oscillator speed and PWM range limitations)
Re: My first foray into PWM
Quote:
Then there's something about PWM that I didn't understand. HIGH/LOW using PAUSE for 500uS is not the same as a 1000uS period with 50% duty cycle?
Yes of course, 500us ON and 500us OFF is 50% dutycyle. But the period is 500us+500us = 1000us = 1ms = 0.001s - NOT 1s which you later wrote.
In your first post you indicated you wanted a PWM period of 1000us (a frequency of 1000Hz). In your second post you said you wanted a period of 1s (a frequency of 1Hz). It doesn't add up - that's all I was trying to say.
/Henrik.
Re: My first foray into PWM
Ooops, my bad. Didn't explain myself properly.
Re: My first foray into PWM
how to flash a pulse led @ 1 hz on a pic18 @64mhz with no code overhead and no interrupts
for demon
Code:
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 29/11/2014 *
'* Version : 1.0 *
'* Notes : pic18f45k20 *
'* : *
'****************************************************************
#CONFIG
CONFIG FOSC = INTIO67
CONFIG FCMEN = OFF
CONFIG IESO = OFF
CONFIG PWRT = OFF
CONFIG BOREN = SBORDIS
CONFIG BORV = 18
CONFIG WDTEN = ON
CONFIG WDTPS = 512
CONFIG CCP2MX = PORTC
CONFIG PBADEN = OFF
CONFIG LPT1OSC = OFF
CONFIG HFOFST = ON
CONFIG MCLRE = ON
CONFIG STVREN = ON
CONFIG LVP = OFF
CONFIG XINST = OFF
CONFIG DEBUG = OFF
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CP2 = OFF
CONFIG CP3 = OFF
CONFIG CPB = OFF
CONFIG CPD = OFF
CONFIG WRT0 = OFF
CONFIG WRT1 = OFF
CONFIG WRT2 = OFF
CONFIG WRT3 = OFF
CONFIG WRTC = OFF
CONFIG WRTB = OFF
CONFIG WRTD = OFF
CONFIG EBTR0 = OFF
CONFIG EBTR1 = OFF
CONFIG EBTR2 = OFF
CONFIG EBTR3 = OFF
CONFIG EBTRB = OFF
#ENDCONFIG
define OSC 64
osccon=$70 '4 mhz
trisc=%11111001
trisd.1=0 ' another led
T2CON = $4; // tmr2 prescale 0 and on
PR2 = 255; // pwm period ?
CCP1CON = $c; // pwm mode
CCPR1L = 127; // pw
t1con=$43
CCP2CON = 2
t3con=3
OSCTUNE.6=1
; ccp1 out connects to t1ck in and pulse led connected to ccp2 out
; on pic18f45k20 ccp1 out = portc.2
; ccp2 out = portc.1
; ti ck in = portc.0
Main:
latd.1= !latd.1 ;flash another led
pause 500
goto main
Re: My first foray into PWM
Neat, first I have to get my Charlie-plex going again. I broke it. LOL
Robert