here is my code to detect 232, it only detects the first edge since the start bit is always the same value, @9600baud detect every 100us afterwards, my code is @300baud now so change the 3.33ms wait to 100us
it sounds like your timing is off just abit, so it is lined enough for the first bit but dis-aligns for the rest, also if you try using edge detection on each bit it wont work since two zeros in a row wont display an edge in between,
also if you are interested in just testing the gps, you can always just hook in to a serial port and set up data terminal software, i have similar gps too that puts out the $GPG codes too, and thats how i tested mine,
my code is in basic, but should be easy for you to convert, the first loop loads 9 BYTES to an array then takes its time in the second loop to load the array to eeprom
loop b loads the bits to a byte
loop a loads the byte to array
rotate val right command is same as: val=val/2;
Code:
Sub RXX (Out VAL)
For AAA = 1 To 8
VAL = 0
For BBB = 1 To 9
Rotate VAL Right
If PORTB.6 = 1 Then
VAL = VAL + 128
End If
Wait 3 ms
Wait 33 10us
Next
Wait 3 ms
Wait 33 10us
If PORTB.6 = 0 Then
RXXA(AAA) = VAL
Else
RXXA(AAA) = 0
End If
Next
For AAA = 1 To 8
If ((RXXA(AAA) > 0) And (RXXA(AAA) < 255)) Then
EPWrite AAA, RXXA(AAA)
BIT 128
LCD AAA
Wait 100 ms
End If
Next
Exit Sub
End Sub
...but how are you decoding? if you are not using hardware?