Cool idea!! But it has been done.
http://www.picbasic.co.uk/forum/showthread.php?t=561
Cool idea!! But it has been done.
http://www.picbasic.co.uk/forum/showthread.php?t=561
Dave
Always wear safety glasses while programming.
Thanks for the link, and it does go some way to answering the questions, but there are occasions, where the user may want to use A/D to read a pot, but also digital I/O on other pins to turn on LEDs for example. Mels excelent post gives the values to turn things on/ off completely.
Well the problem is that so many of the chips are just enough different, I do not think short of duplicating major sections of the data sheet there is a way of doing what you ask.
Maybe someone could go through all of the different PICs, sort out what ones have the same settings and build a database?
Or have a wiki type database. When a user come across a chip not on the list and figures it out, add it. Over time it might be useful.
Myself, I use a dozen or so different chips. I would bet that many here use less. I just do not see how a project like this would be much of a benefit when there are so many other things to learn about the chip one plans to use.
The data sheet can be daunting, but after it is read a few times it comes together. If one is having problems... Post it.
But I do like your idea. SQLite would work for the database. I have a server that is not doing much... What do you think? Would that work?
Dave
Always wear safety glasses while programming.
Hi, Malc
Your suggestion sounds to me Freescale " Processor Expert", Cypress " Psoc Express" Microchip "Visual initializer" , Matrix "Flowcode" or similar "high End" IDEs.
you just choose what you want to do with a Pin and a pre-processor writes the code for you ...
I think I had such a talk on this forum with Mel when Microchip released its Visual ini. ...
May be that's not what PBP team has wanted to do ... or could do (Hey, PBP Team : we are still waiting for you to release PBPL Dll ...).
I seriously think you should turn to another compiler, if you want such features ...
PBP is not written to do that ...
But libraries are open ... and you can write the corresponding asm conditionnal assembly routines ...
Not so good an idea ... in the end !
cheers
Alain
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
Hi Alain,
I think that would be nice, but I think its a long way off if PBP went that route.
No I think the previous poster understood me a little better. If this helps, let me give you an example.
I have a 28 pin device, want to use port C as output to leds, port B to an LCD and port A to be a mix of digital I/O for switches, and a pot or two. This is where I (and probably most newbies) stumble when it comes to configuring the PIC. Whilst following Mels post would indeed set up port A for digital, if you want to use one of the AN pins, but have switches on the others, then its confusing. Maybe a database is too complicated, I would simply like somehing along the lines of:
"to set PORTA.0 to analogue, PORTA.1-7 Digital use ADCON = X"
"to set PORTA.1 to analogue, PORTA.0 and A.2-7 digital use ADCON = Y
etc
On a current project I've resurrected I want PortA.0, 2 & 3 digital for switches, and Porta.1 analoge to read the value from a 10K pot. But I'm not sure what value I need to set ADCON to get this mix.
EDIT: - I see "bit 3" needs to have a value of 1110 (if I follow the data sheet), but how do I convert that into a statement "ADCON = ???" (Data sheet http://ww1.microchip.com/downloads/e...Doc/39582b.pdf) - I'm using a 16F873A
Last edited by malc-c; - 21st June 2008 at 22:49.
And that's what's called "RTFM"
How do you convert that into a statement?
Well, that all comes back to the bare bones basics of dealing with microprocessors and microcontrollers and binary and being able to count in binary and being able to convert a binary number to either a format compatible with the compiler/assembler you're using and/or another Base.
As you said - "bit 3 needs to have a value of 1110"
A bit is a "Binary digIT". It can't have a value of 1110. Just like you can't count over 5 on one hand. Binary has 2 distinct states, 0 and 1, off and on. Therefore, you can only count 0 and 1...that's it. Nothing more, nothing less.
If you take another good look at that datasheet, you'll see that the ADCON register (and I think you really want the ADCON1 register) has 8 bits, like most other registers. While I'm not looking at the datasheet at the moment, I'll assume that those 4 data bits are the lowest significant data bits of that register. What about the other 4 data bits of the ADCON1 register BYTE?
Again, taking a look at the PBP manual, you'll see that you can assign individual bits to something by using the "%" character to signify a binary quantity.
Those bits described above are most likely the lowest significant 4 bits of the ADCON1 register. I'll assume that the upper 4 bits of the ADCON1 register should be set to 0000 for example purposes only.
Therefore...it follows, according to the PBP manual and it's explanation of the usage of the "%" character, you can set bits in any register or variable from most significant bit to least significant bit, left to right.
Hence
ADCON1 = %00001110
The leftmost 0 is the most significant bit, the rightmost 0 is the least significant bit. And following this example, this would tell me that I'm setting the ADCON register as follows:
Bit 7 = 0 = Left Justified
Bit 6 = 0 = Depending on the state of the ADCON0 register, sets the clock used by the A/D converter
Bit 5 = 0 = Unused bit - read as 0
Bit 4 = 0 = Unused bit - read as 0
Bit 3 thru Bit 0 = 1110 - Looking thru the table in the datasheet, this tells me that this combination of bits will set all dual purpose pins to digital with the exception of PortA.0 and the VRef+ and VRef- will be referenced to the PIC's positive rail and ground respectively.
If that answers your question, great.
If it's entirely too much 'duh' information, sorry, didn't mean to insult your intelligence.
Thinking about it though, what you might really be wanting is a combination of digital and analog ports that isn't available in this PIC (I remember this subject coming up some time ago)
For instance:
You can set all pins to digital, lowest 4 bits set to "011x"
You can set all pins to digital and PortA.0 to analog, lowest 4 bits set to "1110"
You CAN'T set PortA.0 and PortA.5 to analog and the rest to digital...because that combination of bits isn't in the table. I think you can actually pick and chose in some of the newer PICs, not sure, haven't tried.
Is that the ticket?
(EDIT: Re-reading your post above, I see that is in fact what you really wanted to do...Hopefully this clears it up for you)
LOL - well I'm try. I know that to get help here it helps if one can be seen to be doing the basics, such as RTFM... even though I may not fully comprehend it
So its the lower half of a byte - having 8 bits
So it follows that we can set values for ADCON, CMCON etc much the same way as we can set which pins are inputs and outputs on each port eg PORTB=%00000000
yes it does help and I appreciate the effort to post in such detail
Yup - that helps a lot. Like I said its been a while since I programmed these things and as I get older I seem not to be able to retain things as easily as I used to
Thanks
Bookmarks