This isn’t really PIC vs AVR.
I’m not going to get into technical details about both chips. They are both excellent, cost effective and have good software tools.
The reason I, and most people probably are using AVR is because of Arduino. But there comes a time to move away from the Arduino platform and expand into the microcontroller world. Arduino is a good development platform, and perfect for beginners but when you’re an advanced user.. Sometimes you just need more choice.
I stopped a long time ago using Arduino libraries, such as digital.write and serial.write etc. The IDE lets you go deep into the registers and set things up this way, making it still a good platform to use, and one I still will use.
Back to PIC vs AVR
I have moved to PIC for a few reasons.
Microchip own Atmel – – who knows the future of AVR, Arduino may even be using PICs soon
There is so much choice of PICs – Big one.. You can choose the perfect chip for the job
MPLAB X is cross platform and nice to use
PICKit is cheaper than Atmel ICE etc
Atmel Studio is a good platform, but based on visual studio is quite bloated and Windows only
I Expect AVR will be integrated into MPLAB so Atmel studio will go anyway
Of course you have to pick the microcontroller for your job, never ever stick to one brand because you like it. A good engineer will pick the device that suits the task.
But I just find the choice of PIC micros so good, you can look at the features and pick the perfect chip for you. Atmel do ATTiny but only a few have UARTs but very little memory. Even an 8 pin PIC has a UART.. Doing a lot of MIDI projects it’s an essential requirement.
For Example, the PIC16F15356 has 2x UARTS, 2x SPI, 2 16 bit timers compared to the ATMega328 (same 28 pin chip size) Downsize it’s got slightly less program memory but i’ve never filled an ATMega yet, so I doubt this will be a major problem!
The PIC features Peripheral Pin Select (PPS) which allows you to move pins around such as the SPI and UARTS (for example if you want an acutual full 8 bit output port, and it’s shared with the serial.. just move the pins to another bank.
The ATMEGA328 only has a full 8 bit output port if you don’t use the UART…
So PIC vs AVR — Has to be PIC on this one!
AVR and PIC are programmed in C, registers are different of course between chips but programmed in the same way. AVR Assembler is very nice to use, PIC isn’t so much and is not really easy in MPLAB X.. But unless you really have to, don’t program in assembler, there isn’t really much point!
It’s the choice why I am moving toward PIC. I’m not saying there isn’t the choice of AVR, but in DIP packages it is quite limited.