Ik heb de code aangepast zodat er eerst een volledige boodschap wordt doorgestuurd alvorens een nieuwe aanvraag wordt verzonden.
Ik gebruik de 00 als CR, ik tel 18 cijfers maar weet nog steeds niet wat ze betekenen. Kan het zijn dat de software UART toch niet zo goed werkt?
void loop()
{
// Send time protocol command
if(data == "0" and mata == "0"){
mySerial.write(0x3F);
delay(40);
mySerial.write(0x0D); //<CR>
delay(40);
// send = true;
}
// Receive data
mySerial.listen();
if (mySerial.available()){
// Strip down the parity bit
char c = (mySerial.read() & 0x7F);
//Serial.print(c);
// Convert Byte to Hex
data = (String)("0123456789ABCDEF" [(c & 0x70) >> 4]);
mata = (String)("0123456789ABCDEF" [c & 0x0F]);
Serial.print(data);
Serial.print(mata);
/*Serial.print("0123456789ABCDEF" [(c & 0x70) >> 4]);
Serial.print("0123456789ABCDEF" [c & 0x0F]);*/
Serial.print(" ");
}
}
Het resultaat:
Start sync
Stop sync
60 79 66 66 26 26 62 62 66 26 62 26 62 66 66 66 26 00
Ik kan proberen om een atmeega32 aan te sluiten op de module en deze met SPI ofzo te laten spreken met de Arduino en deze op zijn beurt met de pc (ik heb geen LCD scherm voor mijn atmega32).
buckfast_beekeeper
Van Lambiek wordt goede geuze gemaakt.
Van elke ontvangen byte mag je alleen de eerste nibble (bits 0-3) gebruiken. De 2de nibble (bits 4-7) bevat andere zaken. Bits 4 en 5 zijn 1, 6 is 0 en 7 is de pariteit.
0x60 = 96 = 0110 0000 zou dan geen geldige byte zijn. Omdat bit 4 0 is.
0x66 = 102 = 0110 0110 is dan ook niet geldig.
0x26 = 38 = 0010 0110 idem.
Probeer een keer alleen de eerste nibble door te zenden.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Wat de 'eerste' nibble is, is een kwestie van interpretatie... 
Daarom spreken we liever van LSN(ibble, bits 0...3) en MSN(ibble, bits 4...7). Data zit in LSN in dit geval.