Here is a routine for a PIC16F877 that will extract all the GPRMB data fields and selected GPRMC fields. It works with a Garmin Foretrex as the NMEA source and I use both an on-board LCD and a...
Type: Posts; User: btaylor; Keyword(s):
Here is a routine for a PIC16F877 that will extract all the GPRMB data fields and selected GPRMC fields. It works with a Garmin Foretrex as the NMEA source and I use both an on-board LCD and a...
Here is a routine that will extract all fields of the RMB sentence. You can modify it for other strings.
Cheers
Brian
GetData:
' Add code here for GPRMC, etc
GetRMBData: ' capture 84...
I use a PIC 16F877 to decode. I use an array of 85 characters to collect the input data string then set about unpacking the string based on counting the commas.
GetData:
ProcessRMC:
...
Problem solved.
I originally had my TRIS statements immediately following the port definitions. By making the first line of my code a PAUSE 2500 statement followed by the TRIS etc, the system now...
The LCDs I already purchased from ELECTUS have the backlight permanently ON.
I still want to solve this problem as we will all come across slow start power supplies sooner or later. If we can...
Here is my version of your assembler. I have verified on the scope that I can strobe the enable line with lcdenable = 1, delay, then lcdenable = 0.
this program still will not start with a slow...
Hi Darrel,
Thanks for all the effort you have put into this. Below is my entire program, using your LCD code. It still does not work - the LCD top line are dark squares and the lower line is all...
Hi Darrel,
I do not have any Densitron LCDs, The LCDs I am using (I have 3) have data sheets viewable at
https://secure4.vivid-design.com.au/electus/products_uploaded/QP-5515.pdf
They are...
Hi mister-e.
Your code, after fixing the start/loop and flag issues, does not work on power up. It does work after a MCLR reset but so do all my attempts.
I am trying now to implement the full...
Hi Mister-e.
The PIC always starts. I know this because I have solenoids and switches and the switches always control the solenoids correctly. I think that rules out BOD or LVP issues. The 2 x...
I have implemented Darrel's suggestions and they improve the situation but do not fix it. The LCD now starts about 50% of the time - up from less than 10% - but still not a solid solution.
I...
Thanks,
I will be back on that project in 48 hours so I will let you know how it goes. Your explanations make excellent sense.
Thanks again
Brian
I have problems with an LCD which will not start after power up about 90% of the time. The code is running as all other functions work as expected but the LCD is just 16 black squares where I expect...
I'm not sure of your real application but you will have big trouble trying to pulse width modulate a DC exciter current with an SCR. An SCR will initially be off but once turned on needs to see the...
Don't forget that the configuration fuses are set before you load your basic code. You might have a PIC set for RC or slow speed (XT) to save power.
To operate at 20 MHz you must set the...
Serial communications (serin/serout - not hserin/hserout) with PBP and a 20 MHz PIC easily goes past 38,400 bps. I use 38,400 bps in several projects for PIC to PIC datagrams.
What I recommend...
It should be possible to read the entire chip (i.e. the low address PBP code and the high address bootloader) as one fiile in a programmer such as EPIC. That file can then be used to program any new...
I am not surprised that each line averages 800 uSecs. You have some pretty complex logic in those statements.
Have a look at the machine code listing the basic source produces and you will see...
I ended up making up a programming harness than linked the target board to my EPIC programmer. Similar to your schematic except I found I had to groundthe LV Prog pin of the PIC16LF877A TQFN...
HSERIN/OUT require you to manually manage over-run errors and suchlike in the USART. This is hinted at in the paper manual but not mentioned at all in the on-line help that comes up in MicroCode...
I assume you are using a 4 MHz crystal where the PULSOUT unit time would be 10 uS per count giving 1500 uS for a centred servo.
Your code will loop extremely fast - way too fast for a servo thst...
I need to get current consumption to a minimum. I think I am handling all the I/O pins correctly (set all ports to outputs and drive the pins high or low depending on what is attached to each pin)....
Is it possible to re-write the configuration word once the chip (877A) has been loaded with a boot loader and soldered on the board?
I realise the config memory location is above the address range...
I think your verbal description is wrong. As written, your output is always driven by input 2.
How are you making the transition from pot position to pulsewidth? Analog or digital input?
How...
Thanks for the insights guys. I will restate my problem.
I have two PIC16F88 and two PIC16F877A on a single 100 mm square board. I have been using serin/out2 with the mode number set to 16390...