PhilRobokit Anito is not an Arduino

A few people over at the Philippine hackerspace PhilRobotics a PIC-based dev board that takes a lot of cues from ‘the microcontroller board everyone loves to hate,’ the Arduino.

There are a few differences between the PIC16F877a used in the Anito and the ATMega328 used in the Arduino: The PIC has a little less than half the Flash memory of the ‘Mega and less RAM, but has a slightly higher clock rate. It would have been nice to have a dev board with Arduino style headers powered by one of those new PIC32MX chips, if only because of a few really, really awesome projects we’ve seen. We’ll take whatever we can get, though, even if it provides a little more ammo for the PIC/AVR holy war.

One really interesting aspect of the Anito is the IDE. Written in Python, the PhilRoboKit IDE has all the features of everyone’s favorite IDE that is written in Wiring, plus a few extra features: autocomplete is a huge bonus, as is the ability to upload programs over Pickit2 ISP header. The IDE is available for Windows and Linux (no Mac port yet), and should be enough to get you off the ground in the PIC dev world.

33 thoughts on “PhilRobokit Anito is not an Arduino

      1. A processor instruction does many things, much more than a single piece of 74 series logic.

        An example instruction is a “read from memory address stored in working register and place in the accumulator” (close enough for this example). To pull this off, you need to get the address from the working register and use its value to set the select inputs to the SRAM, wait for the value to settle, then latch the value into the accumulator. Older processors, from a simpler time when they were designed by hand, do just one part of each per clock cycle so it is easy to figure out whether the previous step is ready. So memory reads might always occur on the 2nd clock, so the address is always set on the 1st clock and the value always available on the third.

        Multiplying a clock frequency up is much, much more difficult then dividing down so they divide down the input.

        Now that processors can be verified by computer before being made, it is possible to iterate and design the data path to always complete in one cycle.

        Also see how flip-flops and latches work, and RISC versus CISC.

    1. Depends on which PIC.

      The PIC24 divides the master clock by two to get the CPU clock. Why? Because the on-chip peripherals, which are dedicated and optimized to specific tasks, can run at faster clock rates than the more complex CPU. This scheme allows you to take advantage of that extra speed; or at lower speeds, gives you twice the fine control over the final frequency for things like UARTs and PWMs.

      I’ve never bothered with anything so old as a PIC16, so I can’t say whether the 20mhz master clock/5 MIPS CPU difference is due to clock division, a greater number of cycles per instruction, or a combination of the two.

      It’s quite silly to use a PIC16 in a new project like this. They’re still made, but really just to support legacy hardware designs. As such, the price is going up, and they’re more expensive than a PIC24/32 of much greater capability.

  1. I don’t know the PIC architecture that well but I don’t believe it just divides the frequency by 4. I think instructions take 4 cycles to complete. If the core is unpipelined it will run at 5 MIPS. If it is pipelined it can run at up to 20 MIPS since instructions can overlap.

  2. PIC16F877A is now obsolete and too expensive. I wish they used something like dsPIC33EP256MU806 28KB RAM, 256KB Flash, 70MIPS… same price.

  3. FYI.

    PhilRoboKit Anito is still in infant stage, the group is still brewing something much more powerful than the 877A.

    lets just wait and see how this baby turn into monster soon :D

  4. here in the island of the Philippines. it’s just that we have more available 8bit mcus in the 8051, zilog, motorola/freescale and finally pic mcus. it might not even get to overseas market but it really helped a lot for the local what you could “grab and use”

    it’s a leap in price for 8bit and 32bit mcu too. so 16bit is out of the question. (arm?)

  5. Dont need to be a duino. The Microchip Pic’s are brain dead easy to program for free.

    You can program them in C, Assembler or even Basic.

  6. Holy wars are good for us though! They provide competition, so the companies have to drive down prices and improve features. Sure, they fragment the community, but they also enlarge it.

    1. Having used one of the Digilent chipKit Unos myself I can recommend them as a really nice Arduino-style dev board, although I ended up using Microchip’s MPLAB X IDE to program the board when it came to using it in a real project.

      1. I came to say the exact same thing. The Digilent boards are awesome and fast. The IDE sucks, but so does the Arduino one, so I also just used MPLAB X.

  7. As much as I’d like to fire a salvo, forget the PIC/AVR holy war for now.

    What I really want is for the hacker community to show enough PRIDE to stand up en masse, and tell the Arduino team to stop calling programs “sketches”, and C++ “wiring”.

    Enough WISDOM to see that they’re doing this to associate preexisting things exclusively with the Arduino name, and make it seem more different than it actually is. It’s pure marketing, allowing them to get away with things like the recently-discussed ridiculous $50 they charge for an official Arduino Ethernet shield.

    It’s not just to sound “friendlier” to beginners, as they claim. Even if it was, we are still HACKERS; and regardless of our skill level or age, suggesting we need “friendly” names is a blatant insult to our intelligence. Only irredeemable idiots require such inane coddling; and our community would be improved, not diminished, if they were scared away by a mere name.

    This is especially important now that Arduino is being ported all over the place.

    1. I think the Wiring/Sketches thing is a slightly goofy idiosyncrasy, but little more. The “real hackers” deeply offended by the argot you’re speaking of don’t use Arduinos so much as straight atmega and attiny chips.

  8. Regarding the flash, I think they basically have the same amount. AtMega168(The first Arduino) has 16KB while PIC16F877 has 14.3KB(14Bit x 8KWords). It just happens that PIC instructions is 14Bit wide and AtMega is 16Bit wide so PIC appears to have smaller memory but in reality they can store same number of instructions.

    And I would agree with the pipeline concept so it runs a little less than 20MIPS in actual.

    What I like with PIC16F877A is that it has greater pins. Has anyone noticed it has more ADC channels than Arduino? And it has more LEDs, Switches and Buzzer, Oh and a Servo port too… without having to multiplex them with pins originally found on Arduino. How did I know that? Look at the traces going to the LEDs….

    1. You should read your datasheets, PIC16f877A is said to run at 20MHz, but on the line below, you can read 200ns instruction cycle. I let you calculate the equivalent frequency.

      Add to this the paged memory, the very low instruction count and the lack of single-instruction multiply and you’ll find that old PIC16 are far far away from Atmega performance. Even Attiny (despite the lack of single-multiply instruction) do better

      Also, if you’re not happy with Atmega328, you can change to Arduino Mega that offers 54 I/Os, 14 PWM outputs (AVRs are fast enough to do also many software PWMs), 16 analog inputs and 4 UARTs.

      Personnally, I used to work with Teensyduino from pjrc.com that offers a full-USB Arduino-like that offers real USB support (with HID, Serial, MSD classes pre-written) and offers more I/Os that I could need.

      What is also great with Arduino (that doesn’t apply on old Basic Stamp and others fast-prototyping boards) is that you can melt their codes and libraries with pure C or assembly code to optimize performance.

      1. I forgot to mention the 32 working registers on AVRs compared to the single one on PIC16s, allowing you to reduce greatly time-consuming memory accesses.

      2. forget about the datasheets its like you’re comparing the anito with the entire product line of arduino. Im sure philrobotics notices already that there are new and more powerful mcu.

        its just their first development. im pretty sure arduino started small also. Lets just wait what these guys can do.

        my comment is please use newer and more power MCU

    1. It’s OK brother. They bashed Arduino before the same way they’re bashing Anito now when they used AtMega168. But look, how many are praising Arduino now.

      As for me I wouldn’t give an Arduino Mega to a kindergarten student. What would they do with it? I’ll choose the cheaper one, it doesn’t matter if it’s less capable. It’s all they need and it’s called Engineering. (-:

      (-:

  9. philrobotics sells it locally for…
    Anito Local php price is 650 pesos = 15 USD
    Arduino Local php price is 1544 pesos = 36 USD

  10. I think the use of PIC16F877A is due to it being more prevalent in the Philippines. I haven’t met a Filipino EE who isn’t intimate with that microcontroller.

    Most electronics engineering microcontroller classes use PICs and professors tend to teach what they know. Hence the reason why most electronics store in the Philippines carry that microcontroller. And yes, they sell it dirt-cheap in the Philippines, even in small quantities.

    It is old, yes. It is antiquated, yes. Can it teach you microcontroller programming? YES.

    TLDR; That old microcontroller sells like hotcake in the Philippines, it is sufficient for many jobs, a lot of Filipino EE knows it, hence the reason why they use it as an educational vehicle.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s