Hi again,
Yes it's hard to give that up, but then you dont really have to you can keep that too
Despite having an Uno for almost a year now, i have not done a real lot with it except for a few small things and havent tested it that well yet either. I did test something yesterday though that was very interesting.
Using the Arduino IDE and a simple program modified slightly for faster operation, i was able to get the full port speed, which turned out to be quite amazing and showed me something very interesting about the Atmega 328P chip (and maybe others).
That is, the full port speed can go as high speed as the oscillator frequency clock, without any division factor (except of course the instruction time) like the low end PIC's have (instruction time plus division by 4 overhead). You have to make sure you have the right variable for the port and also the right bits, but that's not difficult for someone coming from pure ASM.
This is one of the tests i should have done a long time ago. The 328P chip is capable of executing instructions that take only one clock cycle (1/16e6 second for a 16MHz crystal) which means that i can toggle the port bits at a rate of very near or at 4Mhz (two instructions for the port, one for a jump back to start) whereas with the PIC i think the fastest is 1MHz simply because each instruction on the PIC takes 4 oscillator cycles.
In fact, the writeup for the 328P chip states 1MIPS per MHz, so that means it executes 16 million instructions per second compared to the PIC 4 million per second with the same clock speed. At least with the lower end chips, maybe the higher end chips are faster though.
Of course you cant stick to the Arduino level of abstraction, but it's not too hard to get around and keep the rest intact. I need this for something i am looking into for a friend currently. Also, i might need it for something i want to do later too with a display that needs a lot of serial bits sent out repeatedly, which could take a lot of time with the built in digitalWrite() "Arduino" port bit wrapper function.
One thing i still havent tested yet though is the accuracy of the A to D converter. I would like to compare it to the low end PIC chips ADC to see if there is any difference. I suspect that some or all of these Arduino type boards do not have a direct line to the ground nearest the ADC input pins of the chip itself or the reference input. I'll have to see how much difference that makes. It might be possible to solder a small wire directly to the pin though if needed, but i didnt want to have to do that as these chips are small sometimes.
There is one other small advantage:
If you want to program a chip or build something for a customer or a friend and you want them to be able to upgrade the firmware easily, you can send them a Nano (for example) and since it already has a USB connector all they have to do is plug it in and upload the sketch, assuming they download the IDE of course. Since more and more people are becoming more technically savvy, we will probably see this kind of thing more often in the future.
I still like my PIC chips though
If Microchip or someone else could come up with an IDE like Arduino only for the PIC chips, that would be something amazing and i would probably turn to that.
I also made a lot of stuff with the PIC already which i wont be giving up too soon.