On Sat, Feb 06, 2010 at 01:25:47PM -0500, Nathan House wrote: > Thank you for your book suggestions. > > I know the datasheets go into great detail, but what I said was "more detail > *explaining* how things work." I can read a datasheet over and over again, > but if I don't understand what it's saying (which is a lot of the time) then > it doesn't help me much. I also don't have a clue how PICs work at a low > level; the few small projects I've done (making LEDs blink, using digital > I/O, PWM, etc..) were all written in C -- I don't even know assembly. So we have an abstraction issue. Over there years there have been many debates about the appropriate level and language for learning to use PICs. I've always been an advocate for learning assembly well enough to read it. Primarily because of the issues you raise above. PIC assembly is the trade language. The vast majority of the documentation uses assembly for its examples. > > Right now I'm trying to use the SIE on the PIC18F4550 without using the > Microchip USB Framework (i.e. I'm trying to write all of my code from > scratch so that I understand how everything works), and I'm struggling > because I don't understand how the PIC actually works. (e.g. I don't know > how to do things like putting variables into certain blocks of memory, for > just *one* example). > > I'm a student, not an engineer (yet). What I need is a comprehensive book > explaining how the PICs work, but written for people like me who aren't > familiar with a lot of the terms and concepts that the datasheets > *expect*you to already know when reading them. So you are looking for a tutorial. Just an opinion here. I think that unfortunately you've decided to rip off the abstraction BandAid with one of the toughest tasks to tackle: USB. The problem is that USB is an extensive and complicated stack. This is actually a place where a high level language and a good framework can help you. It gives the appropriate level of abstraction so that you can get the job done, instead of investing a lot of time trying to figure out a really complicated infrastructure. I would suggest backing off to something simple. For example take on a project that you've already done in C, then recode it in assembly. Leave the USB part out. It's too complicated. Just my two cents. BAJ -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist