eclissi123 Inserito: 18 maggio 2006 Segnala Share Inserito: 18 maggio 2006 Salve, voglio fare comunicare due microcontrollori ( un PIC16F876 e PIC16F877A) con l'utilizzo di due moduli aurel rtf-data-saw. Ho creato due circuiti (distanti non piu' di dieci metri) ed ho collegato i microcontrollori ai rispettivi moduli aurel attraverso i piedini PINC6 (TX) e PINC7 (RX).Uso il modulo USART con 1200 baud. Inoltre utilizzo un compilatore C e le funzioni messe a disposizione getc() e putc(). Vado al probleama... invio un carattere (putc(0xAA)) ma non ricevo niente dall'altra parte, cos'è che sbaglio?Ho provato la connessione senza moduli aurel (connetendo tramite fili RX/TX...) ed utilizzando un'unica alimentazione, in questo modo la comunicazione funziona perfettamente.Grazie per l'aiuto Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 18 maggio 2006 Segnala Share Inserita: 18 maggio 2006 Se usi la funzione cerca troverai del mio codice in C per fare quanto ti interessa.Comunque il tuo problema dovrebbe essere che alla prima trasmissione dovresti inviare una serie di caratteri fittizi e poi la stringa vera e propria (i primi li scarti e i successivi li decodifichi) il tutto serve a stabilizzare la trasmissione .Ciao Link al commento Condividi su altri siti More sharing options...
eclissi123 Inserita: 18 maggio 2006 Autore Segnala Share Inserita: 18 maggio 2006 Grazie ifachsoftware per avermi risposto.Ho provato a mandare una serie di caratteri fittizi ma il risultato è sempre lo stesso non ricevo niente. Il trasmettitore lo accendo solo durante una trasmissione (per ogni accensione gli do una pausa di 500 ms) può essere questo il problema? Devo tenerlo sempre acceso il trasmettitore?Ho notato che il PIN di trasmissione del PIC rimane acceso in assenza di trasmissione, è normale?All'inzio il ricevente (anche se non si trasmettitore non invia niente) riceve una serie di 0 come se nel pin C7 (RX) non c'è collegato niente, ho controllato e ricontrollato le connessione e sono corrette.Può essere che sbaglio qualcosa nel codice? Riporto il trasmettitore: while(1){ if(kbhit()){ data = getchar(); printc("Dato ricevuto!!"); //Stampa su LCD delay_ms(2000); clr(); for(i=0;i<8;i++){ if(bit_test(data,i)) printc('1'); else printc('0'); } delay_ms(2000); clr(); printc("In ricezione...\n"); } }Il trasmettitore://Invio una serie i stringhe insignificanti... output_high(PIN_C5); delay_ms(500); putc(0xff); putc(0xAA); putc(0xff); putc(0xAA); putc(0xff); ........ delay_ms(500);while(TRUE){ clr(); printc("Trasmettere?\n"); printc("Si\b->\bOK"); while(!input(PIN_B7)) delay_ms(1); clr(); output_high(PIN_C5); //accendo il trasmettitore delay_ms(500); printc("Inizio..."); delay_ms(1000); putc(0xAA); delay_ms(100); clr(); printc("Dato\bTrasmesso!!"); delay_ms(2000); output_low(PIN_C5); }Grazie per l'aiuto Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 18 maggio 2006 Segnala Share Inserita: 18 maggio 2006 prova ad usare printf("stringa");per trasmettere ....giusot per vedere se ti arriva qualcosa ciao Link al commento Condividi su altri siti More sharing options...
eclissi123 Inserita: 18 maggio 2006 Autore Segnala Share Inserita: 18 maggio 2006 Niente, ho provato con printf ma il problema rimane lo stesso. Sarà che sbaglio la connessione dei pin nel modulo AUREL? Riporto lo schema:PIN 1 -> GNDPIN2 -> TX (PIN_C6 del PIC)PIN6 -> GNDPIN8 -> PIN_C5 del PICPIN9 -> Antenna (filo di rame lungo 17 cm)PIN10 -> GNDPIN20 -> GNDPIN23 -> RX (PIN_C7 del PIC)PIN25 -> +5 VHo seguito il datasheet. Link al commento Condividi su altri siti More sharing options...
accacca Inserita: 18 maggio 2006 Segnala Share Inserita: 18 maggio 2006 Salvo fai come dice ifach. Non puoi inviare via radio i dati come se usassi un cavo 232Devi usare una codifica bilanciata (es. Manchester) dei dati e un header noto per sincronizzare l'inizio messaggio. Il tuo modulo Aurel fa da solo questo o lo devi fare tu?Non c'è problema ad accendere/spegnere il trasmettitore anzi penso la trasmisisone continua della protante sia vietata quindi devi accendere/spegnere.Il ricevitore raccoglie tutto quello che trova in funzione della sua sensibilità. Devi aspettarti commutazioni indesiderate e ricezioni spurie sulla linea del ricevitore che filtri sw. Link al commento Condividi su altri siti More sharing options...
eclissi123 Inserita: 18 maggio 2006 Autore Segnala Share Inserita: 18 maggio 2006 Infatti avevo l'intenzione di utilizzare la codifica Manchester, ma il problema è che non ricevo niente neanche un bit.Perché all'inizio il ricevitore riceve una serie di zeri anche se il trasmettitore non invia niente?Se scollego al ricevitore il modulo Aurel è la stessa cosa. Link al commento Condividi su altri siti More sharing options...
accacca Inserita: 19 maggio 2006 Segnala Share Inserita: 19 maggio 2006 (modificato) Io farei questa prova accendi il trasmettitore.Sull'RX del ricevitore devi avere un segnale stabile che corrisponde allo stato di riposo della linea RX.(Sarebbe meglio controlloare con un oscilloscopio).Se anche così l'RX si muove il problema è nei moduli radio o nella loro cconfigurazione (se c'è)Se invece è corretto io provere a collegare il modulo trasemttitore al PC così puoi fare tutte le prove che vuoi. Con qualsiasi programma tipo Hyperterminal mandi un carattere al ricevitore e vedi cosa succede.Sei sicuro che nei dintorni non ci sia nessuno sulla stessa frequenza? Modificato: 19 maggio 2006 da accacca Link al commento Condividi su altri siti More sharing options...
eclissi123 Inserita: 19 maggio 2006 Autore Segnala Share Inserita: 19 maggio 2006 Accaca ho risolto il problema, usando la comunicazione su protocollo Rs232 il segnale di riposo è alto mentre con il modulo aurel il segnale di riposo deve rimanere basso. Quindi, ho inserito il parametro INVERTER nella direttiva #use rs232 e adesso funziona perfettamente.Ho risolto il problema riflettendo su quello che mi hai detto:"Non c'è problema ad accendere/spegnere il trasmettitore anzi penso la trasmisisone continua della protante sia vietata quindi devi accendere/spegnere."Grazie per l'aiuto Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora