BeNoPPP is covered by the MIT license, see the included LICENSE file for information.
BeNoPPP is a complete rewrite of noppp 0.3, for the BeOS operating system. You can find more information about noppp here: http://www.covingtoninnovations.com/noppp/. Noppp is a low cost programmer for the PIC 16C8x, 16F8x and 16F8xx microcontrollers from Microchip. To program your own controllers, you will need to build a programer and use this a software. The first version of BeNoPPP only worked with the noppp hardware, but now several other programmers, including David Tait's PARPIC and SERPIC, are supported (see below for a list).
The programer must be connected to the PC via a parallel or serial port. You'll need a "real" port (i.e. on the motherboard, or on an ISA card), as the design isn't compatible with USB-to-parallel or USB-to-serial converters. Compatibility with laptops is also not guaranteed.
BeNoPPP is made of two parts: a kernel driver that can talk to the hardware, and an application that can talk to the driver and has a GUI.
The official BeNoPPP site is http://www.becoz.org/beos/proj/bepic.
The binary package you download from the site is a SoftwareValet package, and it will install automatically on your BeOS system. Just follow the instructions.
You can also download the source code and compile it yourself. The source code for the driver is in the KernelDriver folder. Build it, and move the noppp file to the /boot/home/config/add-ons/kernel/drivers/bin. Then create a link /boot/home/config/add-ons/kernel/drivers/dev/misc/benoppp pointing to /boot/home/config/add-ons/kernel/drivers/bin/benoppp. If the driver is installed correctly, you should now see a benoppp entry if you type ls /dev/misc in a terminal.
Then you can compile the application (in the Application folder), and install it where you want. BeNoPPP is ready to run!
This HTML documentation is also included in the source package. You can rebuild it from the documentation.xml file using a XSLT processor. For example with xsltproc: xsltproc doc2html.xsl documentation.xml > readme.html .
First you'll need to build a programer. I recommend the noppp board, whose schematic can be found on the noppp page, or David Tait's PARPIC/SERPIC, that can be found here (click on the 'download fpp' link). Usually the programer presented are designed for a PIC 16C84/16F84 microcontroller, but it can also be used for the 16F87x family; just check the pin numbers for GND, V+, /MCLR, B6 and B7, that can be different. Check below for the list of PIC controllers currently supported by BeNoPPP.
You must connect the programer to a parallel or serial port, depending on the chosen schematic, and then you can run BeNoPPP and test it. BeNoPPP will need to know the hardware type and the IO base address of the port. In most cases this will be 378 (LPT1) for parallel and 3F8 (COM1) or 2F8 (COM2) for serial. If it doesn't work, try and look in you BIOS setup if it is configured at another address. Select your hardware in the 'Hardware' box and the correct address in the 'port' box and then select the 'test' tab.
Don't forget to plug a power source in the programer if needed, and then clic on the 'Start' button and follow the instructions. You'll also need to know how to check if the programer is in read or write mode. This depends on the hardware type.
If all the tests pass correctly, you have a working programer and you can start playing with PIC's!
The noppp board connects to the parallel port. You can find the schematic here. I've tested successfully this board, and the automatic detection works.
To detect if the programer is in read or write mode, check the voltage between GND and the junction of D1,D2 and R1. It should be under 1V in write mode and over 4V in read mode. With some motherboards (such as mine, which has a VIA southbridge) the BUSY line isn't sensitive enough. As a result, BeNoPPP doesn't detect the programer, and the second read test fails. If you have the same symptoms, try and lower the value of R6, or even replace it by a wire. After this the programer should be detected and both read tests should pass. If it still isn't the case you probably have something wrong in your circuit, around D1, D2, R3 or R6.
PARPIC is a programer by David Tait, that also connects to the parallel port, and that you can find here (click on the 'download fpp' link). I haven't tested it, and am waiting for feedback on this.
The automatic detection doesn't work. In read mode, the junction of R5 and Q2 must be over 4V, and in write mode it must be under 2V.
SERPIC is a programer by David Tait, that also connects to the serial port, and that you can find here (click on the 'download fpp' link). I've tested it with a 16F84.
The automatic detection doesn't work, and there aren't read and write modes, so you can't test them.
P16PRO is another PIC programer, you can find more details here (click on 'hardware' and go to the P16PRO section. The PICALL programmer isn't supported).
Two configurations can be selected in BeNoPPP. One is for the 40 pin chips, and the other one is for all the other PIC's. I haven't tested this programer, and am waiting for feedback on this. The automatic detection doesn't work either (I think I'll have to rewrite the automatic detector), and ther aren't real read and write modes, and you can't test them.
BeNoPPP can also support other parallel or serial programers. You can create other pin configurations to adapt it to your hardware. To do that go to the 'pins' tab and click on the 'New config' button. Give your configuration a name, and tell if it will be connected to a parallel or serial port. The 'based on' menu lets you choose an existing configuration to copy from, or you can leave 'none' for a blank configuration. Click on 'OK' and the new configuration is selected.
In the tab below, 8 functions can be defined. Each function can be in two states, 0 or 1.
The mode 5V to VPP (mclr=0 and vpp=0) doesn't have to be supported by the programer. The function 'in' has been doubled because in some programers two pins must be controlled.
For each function, you can select a pin in the parallel or serial port. For a parallel port pin, a function set to 0 will correspond to 0V, and a function set to 1 will correspond to 5V. For a serial port pin, a function set to 0 will correspond to -12V, and a function set to 1 will correspond to +12V. You can reverse this by selecting the 'inv' checkbox. You don't have to select a pin for every function, if you let '(none)', the function won't be activated. With most programers, in read mode the B7 pin will have to be pulled up by a resistor, with the same pin used to write a bit, so the 'write' and 'in1' functions will often have the same configuration.
BeNoPPP should support all the PIC controlers that have ISP (In-Circuit-Programing) capability as described in the Microchip datasheets DS30262E and DS39025F. This at least includes the 16F8x and 16F87x families, but could also include other controlers. Here is the device list included in BeNoPPP:
I've only tested BeNoPPP with the 16F872 and the 16F84, but it should work with the other controlers in this list. If you want to program another PIC, you'll have to modify the sources. If you haven't done it yet, download the sources and edit the BeNoPPPsrc/Application/PicList.cpp file (inside the 'Utils' group in the BeIDE project). Insert a line between the PicDefines c_PicList[]={ and {0} }; lines with the correct parameters for your device. You can use another line as an example and modify it. Then recompile the application and run it (you'll don't need to recompile and reinstall the driver).
Then 4 tabs let you do different actions on your PIC:
The parameters in the tabs should be self explanatory. Select the PIC type and choose a file name. BeNoPPP can read and write hex files in the Intel INHX8M, INHX16 and INHX32 formats. You must select a format in the 'read' tab, but for the 'write' and 'verify' operations the format is detected automaticaly. In the 'write' tab, you have a 'verify' option. If you uncheck it, the data won't be verified after having been written in the PIC.
Currently there is only one option there: you can disable the 'detect' option, and in that case BeNoPPP won't try anymore to detect the programer before an action.
I hope you'll enjoy using BeNoPPP, and if you have a comment, you can send me an email or go to the forum on the web site. Thanks!