If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
.
Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
.
There simply is no "Happy Spam" If you do it you will disappear from this forum.
This may help you a bit. I've been playing with the 12F683.
Code:@ __CONFIG _INTOSCIO & _FCMEN_OFF & _IESO_OFF & _BOD_OFF & _BOD_OFF & _CP_OFF & _MCLRE_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF DEFINE OSC 8 ' Internal 8MHz DEFINE ADC_BITS 8 ' 8-bit resolution DEFINE ADC_CLOCK 2 ' Set clock source to Frc/32 DEFINE ADC_SAMPLEUS 50 ' Sample time in uS before A/D conversion is started CMCON0 = 7 'Comparators off ADCON0 = %00000001 'ADC enabled and right justified ANSEL = %00001000 'GPIO.0 and GPIO.1 analog input INTCON = 0 'INTERRUPTS off OSCCON = %01110000 '8 Mhz TRISIO = %111011 'GPIO2 output GPIO = %00010000 ' All outputs = 0 on boot
astouffer, thank you.
What's wrong when I can compile multiplication but not division? I get this error "macro div?ctb not found in macro file."
This compiles OK:
This will not compile:Code:width = 510 * mon
~ DaveCode:width = 510 / mon
I've been playing with this code to change HPWM depending on a monitored voltage. The original code at the top of this thread works, but it's erratic.
I've changed things around a bit to fit my needs and it runs a little bit better, but it's still erratic, probably due to refreshing the duty cycle all of the time. I'm looking for suggestions to make this run a little more smooth. Any suggestions?
~ Dave
Code:Mon var Word Width var byte Pause 100 Main: ADCIN 3, mon ' Read channel AN3 to Mon width = mon*1 if width <= 2 then OneP if width > 2 then twoP OneP: hpwm 1,255,2000 pause 1000 goto main TwoP: hpwm 1,32,2000 pause 1000 goto main end
Dave - What is your definition of 'erratic'?
width = mon*1
Oh... Can you tell me what is the point of the *1 part of this line?
Basically your program states that if mon is >2 then your HPWM will be at around 12.5% otherwise it will be solid ON. There's not much else that happens... or at least it would do if you remembered a GOTO MAIN after the last IF statement!!! Because as it is, your code is slamming straight into the OneP section.
You could rewrite your code as...
I'm also assuming you've set TRISIO and such properly.Code:Main: ADCIN 3, mon ' Read channel AN3 to Mon width = mon if width > 2 then hpwm 1,32,2000 else hpwm 1,255,2000 endif pause 1000 goto main
Bookmarks