[see answers mixed in below]
I attempted to look up those pins you described, "SCK, MISO, MOSI" but could not find a definition or even the meaning of the acronym. Is there an index I can look this stuff up in?
[SPI - Serial Peripheral Interface. SCK - serial clock, MISO - Master In Slave Out, MOSI - Master Out Slave In]
The 2x3 header looks like a serial connector. So I can sort of infer what the pins you talked about up there are.
[2x3 header is just 6 male 0.025" square pins for plugging the AVR ISP programmer onto.]
And the AVR ISP is a chip whose sole purpose is to program micrcontroller. It programs in FLASH and EEPROM, which is a rewrittable data storage code, which I suppose would be what the bootloader is programmed in. And the bootloader IS NOT the firmware.
[Yes - it interfaces to a PC that sends data, and typically acts as the USB interface. It programs the Flash. Maybe EEPROM - usually you would write a sketch to do that. Bootloader gets installed into a special area of Flash, and is allowed to write the rest of Flash. Bootloader as firmware/special sketch - kind of fuzzy line there. You're writing code for an embedded processor that a user could not change - technically that's firmware.]
I don't completely understand how the Arduino PCB would make things "easier." -- Don't feel a need to explain this. Not that you have to explain any of this. I really appreciate your help.
[Provides a means for you to easily connect wires & make design changes before committing to the final design. ]
Finally, the bootloader I understand is an initial program that is run before the actual code we download into it. It's purpose is to quickly check for a new code the user might want to download, but one must "Reset" the controller first. Correct? However with the picaxe, you could just download it whenever you wanted. So I'm not sure.
[How is the picaxe to know when you want to start downloading? I am sure it has something to clue it in. Arduino just uses Reset.]
Finally finally, I really appreciate the link.
And finally lastly in the end, I would need to purchase an AVR ISP chip and the 2x3 header to program the Atmega328P-PU? (There is always a catch!) I don't mean programming labs, I mean the program to "setup" the microcontroller so you can program it to do labs. I guess I mean programming the firmware onto the chip. I found some tutorials on how to program micrcontrollers; however, are there any tutorials you suggest?
[Yes, you need an AVR.
I used this one for a long timehttp://www.mdfly.com/index.php?main_page=product_info&cPath=5&products_id=415
before I got one of these (needed for larger chips)http://www.mouser.com/ProductDetail/Atmel/ATAVRISP2/?qs=sGAEpiMZZMv256HIxPBQcA8%252bsNH3cLLR
Both will need to access the AVR ISP header, or you connect them to whereever the signals are available in your design. Having a header is convenient.]
I should add that I've been doing research and I discovered that the picaxe and the pic differ in that the firmware (I think) is already downloaded into the picaxe to make it easier.
[Could be - the Arduino IDE is what makes it easy to use.]
So by getting a blank microcontroller, I will learn a lot more in terms of hardware and how these microcontrollers work.
Additionally, I'm not sure but one can setup a pic chip or a blank atmega or whatever kind of microcontroller one buys to be able to read programs in C?
I personally hate BASIC because of the limitations. No arrays and a limit of variables so one cannot do static functions or methods if he/she is making a more complex lab.
[Read programs in C? Or, create programs in C to download? Yes. Arduino]
My question is, the firmware one installs onto the microcontroller, where is it acquired from, and can any microcontroller take any firmware? Or do induvidual companies publish them with their own editors?
[You write the C/C++ code that is compiled by a C compiler and turned into the hex file that is downloaded into the card. It may downloaded via a bootloader, or it may be downloaded directly with no bootloader and start running immediately after a reset. The IDE is nice because it has libraries for functions that are used a lot, like the Serial interface, so you don't need to figure out for every program, allowing you to easily interface with a serial monitor for instance.
It also lets you easily port your code from one Atmel device to another. C is pretty common code, I would think C code could be moved to other uCs with tweaking for whatever hardware differences there where, and letting the other uC's compiler taking care of adapting the C code to the instuction set.
and the AVR LIBC link at the lower right.
You may also use other programming environments such as Atmel's Studio 6, see links here http://www.atmel.com/products/microcontrollers/avr/default.aspx?tab=documents
The IDE also addresses programming the 'fuses' that set things like the clock source, bootloader size, etc. that are independent of the firmware/sketch that runs after a reset.