forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
RF komunikace mezi 2 AVR

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR
 
Nikeed12
Účastník
Účastník


Založen: 19.1.2012
Příspěvky: 11

PříspěvekZaslal: 27 leden 2017, 16:35    Předmět: RF komunikace mezi 2 AVR Citovat

Ahoj, nemá někdo ověřený program v Cčku pro RF komunikaci s vyřešeným protokolem ? zkoušel jsem program z těchto stránek:
http://winavr.scienceprog.com/example-avr-projects/running-tx433-and-rx433-rf-modules-with-avr-microcontrollers.html
Vysílač nejspíše fungoval, protože po jeho zapnutí jsem na výstupu RX modul chytal obdelníkový signál a po vypnutí jen šum.

Problém mám ale hlavně s příjimačem, jako první zradu jsem zjistil ve vektoru přerušení. Místo ISR(USART_RXC_vect) musí být ISR(USART__RXC_vect) (divné že na to kompilátor neupozornil, používám Winavr překladač).
Ale ani po této úpravě program nefunguje a připadá mi to, že procesor je neustále v rutině přerušení a kvuli šumu nedokáže přijmout správně data, nebo nevím, ohledně RF komunikace toho moc nevím a teprve se je učím.

Moc by mi pomohlo kdyby jste měl někdo funkční kod, nebo mě nakopli kde by mohl být problém s výše uvedeným příkladem, díky.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 708

PříspěvekZaslal: 27 leden 2017, 19:45    Předmět: Citovat

Už se to tady probíralo. Z přijímače pořád nějaká data lezou. Je to "přeložený" šum z okolí. Jakmile zapneš vysílač, tak signál vysílače tenhle šum potlačí a dostaneš na vstupu data, která jdou z vysílače. Jakmile vysílač vypneš, postupně se na lince opět objeví šum. Dělám to tak, že přijímám data trvale, až dostanu posloupnost 0x00 (ve starších diskuzích najdeš 0x55). Jakmile je jich alespoň 10 za sebou, vím, že můžu začít přijímat data. První byte označuje začátek dat = startovací byte (například 0xDD) a za ním následují data. Pokud první byte není startovací byte (není 0xDD), tak sekvenci zahazuju a čekám na další posloupnost minimálně 10x 0x00 a nový startovací byte. Vysílat 0x00 jako preamble má několik výhod. Jednak není mezi bity žádná sestupná hrana (kromě start bitu), tudíž se lépe synchronizuje přijímač s vysílačem a jedna lze z délky log. 0 na vstupu určit rychlost přenosu, pokud není pevně daná. Pokud je pak možno, tak vysílač je nastaven na 8N2, přijímač na 8N1. Tím dochází v podstatě k automatické synchronizaci přijímače s vysílačem během celého přenosu dat a není tím pádem nutné dělat synchronizační mezery mezi jednotlivými byty nebo není nutné dlouhé přenosy dělit na kratší pakety. Není ani nutné použití krystalů.

Data tím pádem musíš trvale přijímat, analyzovat a zahazovat nebo zpracovávat podle toho, co dorazilo.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
kocourek45
Nováček
Nováček


Založen: 27.11.2013
Příspěvky: 8

PříspěvekZaslal: 29 leden 2017, 10:15    Předmět: Citovat

Dělal jsem komunikaci 2xAVR s moduly RFM12B s obsluhou přes přerušení, ale v assembleru.
Mám dotaz k synchronizaci USART, v dokumentaci se píše, že přijímač ignoruje nastavení dvou stop bitů a vyhodnocuje jen ten první stop bit, takže když nastavím dva stop bity v obousměrné komunikaci, měla by probíhat synchronizace po každém bajtu a v obou směrech. Je to tak?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 708

PříspěvekZaslal: 29 leden 2017, 12:16    Předmět: Citovat

Nevím, jak USART v AVRku souvisí s modulem RFM12B, který se ovládá pomocí SPI. Nicméně v dokumentaci AVRka opravdu píšou, že přijímač ignoruje 2. STOP bit. Otázkou je, jestli jen ignoruje jeho stav (1/0) nebo jestli po prvním STOP bitu už ukončuje příjem bytu a začíná čekat na START bit. Pokud jenom ignoruje jeho stav a START bit začíná detekovat až po uplynutí času STOP bitu, pak obousměrná synchronizace fungovat nemusí. Pokud ho ale ignoruje úplně a po prvním STOP bitu začne čekat na nový START bit, pak to fungovat bude.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
kocourek45
Nováček
Nováček


Založen: 27.11.2013
Příspěvky: 8

PříspěvekZaslal: 29 leden 2017, 20:35    Předmět: Citovat

USART a RFM12B spolu nesouvisí. Komunikaci USART jsem dělal před RF komunikací, narazil jsem na problémy s komunikací při použití interních RC oscilátoru a použít 2 STOP bity mě nenapadlo, jak se k tomu vrátím vyzkouším. Díky za radu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)