Alaskanphoenix, Is there some reason you are writing the value to EEPROM?
Dave Purola,
N8NTA
Alaskanphoenix, Is there some reason you are writing the value to EEPROM?
Dave Purola,
N8NTA
My programming skill is very low, so i write in eeprom only for my laziness!
But i thing it is not very good!
Thanks
if you plan to do something usefull with those value when the power is removed and then power up.. i'll suggest to detect the when the power is remove and then save your value to the EEPROM.
I know Melanie already posted something on that with the according circuit... can't find it as now.
ow if you need for speed, don't use ADCIN but read/write and configure your PIC A/D yourself. not hard, code space saving and much faster. OK for assembly too but... accessing register in PBP could be really fast enough.
Last edited by mister_e; - 14th April 2006 at 17:20.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
OK got the post of Melanie
http://www.picbasic.co.uk/forum/show...52&postcount=3
So now, depending of your current stuff, you may use Interrupts (on PORT change, INT0, INT..., Analog comparator...) or polling the PIN for a low level. quite simple to do.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
thank you Mister_e
i already use the ad configuration registers,but the polling of the 7 pots isn't fast enough!I read instant interrupt post and I think i must use the A/D Converter Interrupt but i don't understand how to configure and use interrupts! Could you post an example or another way to poll the ad pins and send only the one is used?
A/D interrupt will be produce ONLY (as i remind) if a A/D conversion is finished.
We really don't know what you'll do, what you need to do so we can just throw some idea now. Help us and describe exactly what you need to do. That way we will avoid to waste your and our time.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
You are right!
I use a 16f88 to control 7 pots connected at the 7 ad pin and 3 bottons, one to calibrate the pots and the other to send midi control change messages.The pots, when rotated, must send midi continuos change message through the ausart.The ausart is configured comply with the midi protocol(31250 baud).this is an example of the midi message:
define osc 20
define HSER_TXSTA 20h ' enable TX register
DEFINE HSER_RCSTA 90h ' enable RX register
define HSER_BAUD 31250 ' midi baud rate
for j = 0 to 6
RESULT[J] = NEW[j]
ADCON0 = %11000001 + (J*8) 'SET A/D rC + A/D = ON
PAUSEus 10 'PAUSE 10uS FOR CHANNEL SETUP
ADCON0.2 = 1 'SET GO/DONE-BIT + START CONVERSION
PAUSEus 10 'PAUSE 10uS FOR CONVERSION
RESULT[J] = ADRES
RESULT[J] = RESULT[J] >> 1
'read j, NEW[j]
if RESULT[J] <> NEW[j] then
'write j, NEW[j]
hserout [$b0, j, RESULT[J]]
endif
next j
goto loop
RESULT is the value of the controller comply with midi,it must be 0-127
$bo is the statusbyte, j the channel.
The problem is that the program sends midi messages continuously,i want it sends midi only when the pot is rotated, sending all the values untill i stop to rotate!
Also i want to limit the range of the pot with the calibrate button,when i first press the button i set the min value to 0, then i rotate the pot to set another value corresponding to 127 pressing the button.
Thanks
Bookmarks