Ik heb een draadloze opnemer op basis van een Atmel mega8, ds18b20 en een ir transistor gemaakt. Het draadloze deel wordt gedaan door een eenvoudige 433 Mhz AM transmitter. De transmitter is aan de USART gehangen en de baud rate is 4800, 8N1. De AVR loopt op de interne 1 Mhz clock.
De 433 Mhz transmitter is aan (ie zend) als de data input hoog is, en is uit als de datapin laag is. Omdat het
ttl serieele idle toestand van de AVR USART hoog is, wordt de transmitter uitgezet als de zend buffer leeg is.
En weer aangezet (incl 50 ms delay voor het zenden) als er een acket gestuurd moet worden.
(note er zijn 2 nodes gebouwd, probleem komt op beide voor)

Een oude laptop fungeert als basis station. Aan de serieele poort hangt een 433 Mhz AM ontvanger(met MAX232).

De zender stuurt kleine messages van 7 bytes. De eerste is en start byte, de daarop volgende 6 bytes zijn in de 3 bytes payload die in manchester code zijn omgezet.
Vervolgens komen nog 2 manchester encoded bytes.

Dit werkt goed.

Maar het probleem is dat zodra ik messages met meer dan 3 bytes nuttige payload verstuur de communicatie niet meer werkt. Oftewel 7 bytes messages (3 manchester encoded bytes) gaat altijd (>95%) goed, meer dan 7 gaat meestal (>80%) fout.

Helaas heb ik geen scoop of ander apparaat om de data die van de 433 Mhz ontvanger komt te bekijken.
Met een test programma zie ik dat bij langere berichten de laptop de extra bytes niet ziet, af en toe zijn ze corrupt (manchester code error).
Mogelijk raakt laptop serieele poort synchronisatie kwijt???

Ik ben benieuwd of iemand een verklaring heeft voor dit probleem. En ten tweede of er ideeen zijn om de data communicatie te verbeteren.

Groeten, Renato

[Bericht gewijzigd door rtramon op (10%)]

Probeer eens een kristalletje bij je avr

Even iets meer worden gebruiken: de interne klok is niet zo erg nauwkeurig. Met een extern xtal los je dat op. Bij een onnauwkeurige klok kan het gebeuren dat je sample momenten van je bits op een gegeven moment naast de bits gaan lopen. Dan mis je dus bits, of sample je een bit 2x. Daardoor mis je data.
Oplossing dus zoals pientertje post.

Bedankt voor snelle reacties.

Na "ff" proberen met een kristal er bij, lijkt dat niks uit te maken.

Ik heb een tweede ontvanger gebouwd en aan desktop PC gehangen. Daar treed "het probleem" niet op. Ook bij omwisselen van de ontvangers tussen laptop en PC, blijft het probleem opde laptop bestaan en op de desktop niet.

laptop draait netbsd, desktop ubuntu linux.

Wordt vervolgd.....

De verklaring van het fenomeen is ws dat de oude laptop UART gevoelig is voor het "vieze" seriele signaal wat uit de 433 Mhz ontvanger komt.

De workaround op het moment is dat de ontvanger nu ook een microcontroller heeft. De mcu serial Rx hangt aan de ontvanger, terwijl de Tx naar de laptop gaat.
Simpel programma stuurt de ontvangen messages door, en zie communicatie is nu correct.