Goedemiddag,
Graag had ik wat hulp bij het volgende;ik wil met een 16F877 seriële data inlezen welke via een max232 binnenkomt op rx tx van de pic.
Aanvankelijk wilde ik wat code gebruiken welke ik gebruikt heb voor het parsen van data uit een GPS-unit. Door gebruik te maken van "wait".
Dat is echter alleen mogelijk in combinatie met Hserin en niet met Hrsin.
Helaas ben ik toch gebonden aan Hrsin, dit omdat de baudrate 115200 is van de binnenkomende data. Die snelheid wordt niet ondersteunt door Hserin.
Nu heb ik na veel lezen inmiddels al weer een paar dagen een houten kop en vraag hier om een zetje
Eerst even een weergave van de binnenkomende data welke als ascii geïnterpreteerd dient te worden;
00110001 00110010 00110111 00111011 etc.
Vertaald naar ascii krijg je dan;
1 2 7 ;
Daar waar etc. staat volgen dan nog 8 bytes waarna de hele datastroom geactualiseerd op nieuw wordt aangeboden (en door mij weer ingelezen moet worden)
Wat ik er van begrepen heb is dat de USART een fifo buffer heeft welke steeds maar 2 bytes kan bevatten en daarna "een vlag geeft" als teken dat er een overflow plaats vindt.
Middels interrupts kan je steeds tijdig de buffer leeghalen maar dat maakt het (voor mij) ingewikkelder terwijl dat niet nodig lijkt.
Ik dacht het volgende toe te passen;
RCSTA=%10010000
TXSTA=%00100100
Declare Hserial_clear = on
Declare Hserial_baud = 115200
Dim serdata[4] As Word
serdata[0] = Hrsin
serdata[1] = Hrsin
serdata[2] = Hrsin
serdata[3] = Hrsin
Door het commando "Declare Hserial_clear = on" ben ik in de veronderstelling dat iedere keer als ik Hrsin gebruik de buffer wordt leeggemaakt en gevuld met de volgende 2 bytes.
Toch komt er in de pic niet binnen wat ik verwacht (ik controleer namelijk met HTerm de binnenkomende data.
Als ik de pic naar de lcd de waardes van de serdata[0] etc. laat schrijven komen er andere waardes zowel in ascii als bin.
Ziet iemand wat er fout gaat of moet ik per sé aan de interrupt?