Guest elektron Posted September 3, 2012 Share Posted September 3, 2012 Buna ziua tuturor ,De citva timp lucrez la un proiect pentru o salupa telecomandata(RC ) Am pus pe ea un PIC16F690 ,care va transmite urmatoarele telemasuri : temperatura la cele doua motoare curentii consumati de cele doua motoare tensiunea bateriei .Pentru citirea datelor in regim "local " am pus un display LCD 2x16 Pina aici totul merge OK ! Acum as dori sa am aceste telemasuri linga telecomanda RC ,adica sa le transmit de la salupa spre telecomanda RC .Nu reusesc sa fac transmisia asincrona seriala cu PIC16F690?Daca ma poate ajuta cineva ,m-as bucura mult . Codul l-am scris in Basic ( Proton ) ,iar simularea o fac cu Proteus v7.10 ,dar m-as buxura si daca mi-ar indica cineva un cod in C++ .La nevoie vin cu mai multe detalii !Va multumesc anticipat ! Link to comment
one Posted September 4, 2012 Share Posted September 4, 2012 Bineinteles ca poti... sau ai putea.Foloseste module FM pe 433MHz sau module ZigBee (2.4GhZ).Nu stiu ce cod iti poate indica cineva cand nu dai schema de conexiuni si precizia masurarii curentilor... 8bit, 16bit...pentru transmisia seriala cu PIC cred ca este suficient sa scrii in Google... PIC UART example Link to comment
Guest elektron Posted September 7, 2012 Share Posted September 7, 2012 Daca cineva este dispus sa ma ajute revin cu schema .Transmisia merge acum ,dar doar pentru un parametru .Cred ca va trebui sa folosesc o intrerupere sa pot transmite toti 5 parametrii ? Link to comment
costi002 Posted September 7, 2012 Share Posted September 7, 2012 eu ma gandesc ca ar trebui sa stiim daca problema este la emisie sau la receptie.tu unde unde crezi ca este problema? Link to comment
Guest elektron Posted September 7, 2012 Share Posted September 7, 2012 Deocamdata am scris codul doar pentru emisie ,iar proba o fac pe calculator prin simulare ,in Proteus .Astfel se poate observa prin debbug ca se transmite doi byte ( lowbyte si high byte ) indiferent de citi parametrii as introduce in registrul shift serial. Cred ca ar trebui sa folosesc cumva si flagul din TMR care se face "high" de fiecare data ce se termina o transmisie .Am sa atasez schema si codul pentru cine doreste sa arunce o privire .Multumesc anticipat ! Tx-UART.txt Link to comment
costi002 Posted September 7, 2012 Share Posted September 7, 2012 eu cu C sunt la inceput.Eu am reusit sa transmit foarte usor 20 byte, unul dupa altul catre un pc. cel mai bine este sa iti faci partea hard si sa transmiti pe serial catre pc si vezi valorile in hiperteminal. cand acesta va fi ok, continui cu receptia, unde este un pic mai dificil ca trebuie sa iti iei rapid datele din buffer, altfel le pierzi. Link to comment
Guest elektron Posted September 7, 2012 Share Posted September 7, 2012 Nu reusesc sa atasez codul copiat intr-un fisier cu extensia "txt" caci vad ca nu ma lasa sa-l pun cu extensia originala " bas" ? ce sa fac ? Link to comment
Liviu M Posted September 7, 2012 Share Posted September 7, 2012 Mie codul asta imi merge: TXEN = 1; // activat numai cand am nevoie for (ucIdx = 0; (ucIdx < cMessLen) ; ucIdx++) { TXREG = *cMessage; //char cMessage[] e bufferul meu de transmisie, cMessLen e lungimea mesajului while (TRMT == 0) //wait for Transmit Shift register to be empty { asm("NOP"); } __delay_us(60); //lungimea unui bit la 16660 baud. Nu stiu daca-i necesar peste tot *cMessage++; } TXEN = 0;Dupa cum mi-a mers si for (ucIdx = 0; (ucIdx < cMessLen) ; ucIdx++) { TXREG = *cMessage; __delay_ms(5); *cMessage++; }da' la ultima varianta se pierde timp aiurea. Link to comment
Guest elektron Posted September 7, 2012 Share Posted September 7, 2012 Vad ca s-a reusit upload-ul . Cred ca ar trebui incrementat un contor care sa numere parametrii ce trebuie transmisi si dupa fiecare parametru contorul sa se incrementeze cu o unitate .Dar nu stiu cum sa scriu asta ? Link to comment
Liviu M Posted September 7, 2012 Share Posted September 7, 2012 Cat de lung e un word? Cati biti are?Cat de lung e un float?Cum e implementata functia HSerOut? Link to comment
Elef Posted September 7, 2012 Share Posted September 7, 2012 As zice sa grupezi parametrii intr-o structura de genu:struct PACKET{ type1 param1..typen param2}Transmiti toata structura si la receptie verifici daca ti-au sosit toti octetii.Stii cati octeti trebuie sa ajunga - un sizeof(PACKET) ar indeajuns. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now