![]() |
Problema !!! ALLORA.. STUDIANDO E LEGGENDO DATASHEET COMPRESO.. APPRENDO CHE IL PWM NON SERVE E' SUFFICIENTE USARE IL MODULO TMR0 PERO PERO PERO.. C'E UN PROBLEMA CHE MI STA FACENDO GIRARE LE BAL.. OVVERO PRIMA DI OGNI COSA OCCORRE LEGGERE IL SEGNALE DALLA RICEVENTE... ECCO E MI SPIEGO, HO FATTO UNA SEPLICE ROUTINE CHE FUNZIONA SOLO SE USO UN TEST PER SERVER OVVERO QUEI DISPOSITIVI CHE GENERANO DEGLI IMPULSI UGUALI A QUELLI PROVENIENTI DA UNA RICEVENTE, CON IL POTENZIOMETRO SI PUO VARIARE LA POSISZIONE DEL SERVO FIN QUI SPETTACOLARE TUTTO OK... PERO SE USO LO STESSO CON UNA QUALUNQUE RICEVENTE.. KO!!! NIENTE DA FARE ELETTROENCEFALOGRAMMA PIATTO!!! CHE NE PENSATE? ECCO LA ROUTINE: ;----------------------------------------------------- ; This software read data fron Hitech receiver. ; For each pulse it's show value by led in binary mode ; the value 40 < COUNT < 207 ; ; software by Fausto Giudice ;----------------------------------------------------- PROCESSOR 16F628 RADIX DEC INCLUDE "P16F628.INC" __CONFIG 11110100010000B ;----------------------------------------------------- COUNT EQU 32 CL EQU 33 ;----------------------------------------------------- ORG 0 ; ; -------------------------------- ; SET ANALOG/DIGITAL INPUTS PORT A ; -------------------------------- ; MOVLW 7 ;QUESTA OPZIONE E' NECESSARIA SE SI VUOLE USARE PORTA COME INPUT MOVWF CMCON ;CMCON=7 set comperators off ; ; ---------------- ; INITIALIZE PORTS ; ---------------- ; BSF STATUS,RP0 ; ** BANK1 ** MOVLW b'00000000' MOVWF TRISB ; portB all pins output MOVLW b'11110100' MOVWF TRISA ; RB7-RB4 and RB1(RX)=input, others output BCF STATUS,RP0 ; ** BANK0 ** CLRF COUNT CLRF PORTB MAIN BTFSS PORTA,2 ; IF (bit 0 di PORTA è = 1) GOTO $-1 MOVLW 178 ; 1uS | MOVWF CL ; 1uS | 4uS GOTO $+1 ; 2uS | ****** ATTESA DI 0.9 mS ****** GOTO $+1 ; 2uS | DECFSZ CL,F ; 1uS | 5uS * (178 - 1) = 885uS + 4 + 2 = 891 uS circa GOTO $-2 ; 2uS | XX BTFSS PORTA,2 ; 2uS GOTO SHOW INCF COUNT,F ; attesa di 1uS GOTO XX ; attesa di 2uS totale 5uS SHOW MOVF COUNT,W MOVWF PORTB CLRF COUNT GOTO MAIN END |
completo non ho detto che l'output me lo faccio restituire sulla porta B con 8 Led che in binario mi offrono il numero del tempo a partire dal 1 mS, fino al secondo ovviamente il primo millisecondo lo faccio scorrere,, poi cominicio ad incrementare COUNT che incrementarà circa ogni 5 uS , Il fatto è che con la RX non legge nessun bit già fin dall'inizio!! quinidi non incrementa niente! ho provato anche la tecnica illustrata qui Regolatore giri. ma il risulktato è lo stesso.. ovviamente di questo suggerimento ho solo selezionato la parte che riguarda la lettura del segnale in arrivo dalla ricevente a dopo fausto Citazione:
|
Deve funzionare... controlla di essere collegato sul pin giusto e con la massa del ricevitore collegata alla massa del micro; nei commenti hai scritto bit 0 di PORTB, ma tu testi il bit 2! visto che usi il 628 che ha anche il timer1, è più facile fare la lettura così: MAIN CLRF TMR1L CLRF TMR1H BTFSS PORTA,2 GOTO $-1 BSF T1CON,0 BTFSC PORTA,2 GOTO $-1 BCF T1CON,0 (valore dell'impulso in timer1) Se vuoi misurare solo dopo 1 mS, carichi il timer1 a -1000 (0xFC17) in modo che vada in overflow dopo 1ms e ricomincia a contare da zero. Michele |
risposta ringrazio MSchiepp; ma ringrazio anche Juljila che anche se non scrive so che legge.. e il suo consiglio mi è parso molto utile in privato fermo restando la procedura scritta inizialmente, sembrerebbe funzionare qualcosa, ho messo nella ricevente 6V mentre sul 16F628 5V altrimenti andrebbe in fumo. Bene con una ricevente Hitec 40 MHz FUNZIONA!, anche se l'escursione è più corta , oscilla tra i 55 e i 191, mentre il servo test da 1 a 255 esatti, diciamo che il servo test ha una buona escursione. Detto questo però cambio ricevente passo ad una OPTTIMA 2,4GHz pur alimentandola con 6v niente. Per cui credo che la difficoltà stia nell'impedenza dei Pin dell'16F628 troppo alta da non permettere l'ingresso del segnale, insomma l' '1' lo legge come uno zero.... che fare? torno su MSchiepp: grazie per il suggerimento , tieni presente che i commenti sono copiati da altri sorgenti, per cui si trovano incollati senza aderenza alla vera istruzione! per le porte nessun problema conosco bene i registri TRISB e TRISA , per cui ..anzi adesso ho messo la DEFINE in modo che con una sola modifica posso cambiare la porta di ingresso , ho letto il tuo codice, ottimo, prenderò spunto di lavorare anche con timer1 visto che ha 2 byte anzichè uno, credo che per l'estensione possa essere utile. a dopo fausto Citazione:
|
ok salve a tutti ringraziandovi vi spiego un po come è andata, ho messo un 78L05 in cui l'uscita alimenta il PIC (5v) mentre l'ingresso con una tensione di 5,5 v alimenta la ricevente, funziona anche con la 2,4GHz, tutto bene . Adesso sicomme sono rompi pal.. continuo voglio l'output sul PC, bene, tutto ok per il servo test mentre nuovamente guai con la radio!! stavolta pur offrendo la corrente come con i led .. niente.. devo lavorare con le resistenze, come suggerito da jujila ecco la routine: MAIN BTFSS PULSEIN ; IF (bit 0 di PORTA è = 1) GOTO $-1 MOVLW 178 ; 1uS | MOVWF CL ; 1uS | 4uS GOTO $+1 ; 2uS | ****** ATTESA DI 0.9 mS ****** GOTO $+1 ; 2uS | DECFSZ CL,F ; 1uS | 5uS * (178 - 1) = 885uS + 4 + 2 = 891 uS circa GOTO $-2 ; 2uS | XX BTFSS PULSEIN ; 2uS GOTO SHOW INCF COUNT,F ; attesa di 1uS GOTO XX ; attesa di 2uS totale 5uS SHOW MOVF COUNT,W CALL send CLRF COUNT GOTO MAIN |
oscilloscopio allora eccomi oggi ho fatto delle prove con il prof. di elettronica, in sostanza il servo test crea dei segnali ad onda quadra simili a quelli che offre una ricevente, con la differenza che se alimento il servo test con un voltaggio di 5 volt allora il picco del segnale avrà appunto 5 v , tale da fa scattare la soglia attraverso la quale il PIC 16F628 legge " uno " infatti il risultato è sorprendende, ottengo 1 se il servo test è al minimo e ottengo 254 se il servo è al massimo, insomma quello che desideravo. Invece la ricevente pur alimentadola con 5,5 volt offre un segnale d'onda quadra con picchi da 3,44 v probabilmente insufficienti, a far leggere al PIC che è arrivato un " uno ". Allora le cose da fare sono due o aumentiamo il voltaggio di questi picchi d'onda quadra, oppure abbassiamo la soglia attraverso la quale un Microcontrollore legge il valore come uno invece che zero. Come aumentare il picco ? serve un transistor, come dimensionarlo? Come abbassare la soglia di impedenza di un piedino di ingresso di un PIC? a voi i commenti fausto |
forse si allora serve un amplificatore operazionale ad alimentazione singola da 5 volt.. in sostanza con un regolatore di tensione diamo all'operazionale una Vrif di 3 volt , una Vin che sarà il segnale della ricevente , poi abbiamo la Vdd da 5 Volt infine l'uscita che va al pin del 16F628 .. credo che così possa funzionare la pagina 68 del datasheet del 16F628 dovrebbe dare conferma con il buffer rappresentato in figura.. a dopo |
Funziona allora vi aggiorno, usando un semplice 78L05 ho risolto il problema, adesso con la tx rx 2,4 GHz benissimo leggo i numeri prodotti dai counter.. e stato sufficinete alimentare la RX con 6 volt, sempre i 6 volt li metto all'ingresso del 78L05 , all'uscita dello stesso invece (5 v) metto l'ingresso del PIC , il gioco e' fatto! benissimo alla posizione piu bassa incrementa fino a 34, nella posizione massima 207, adesso comincio a scrivere due software uno che non fa uso del timer l'altro invece con uno dei timer, o lo zero oppure timer 1 vedremo.. |
Credo che il problema non sia legato all'impedenza di ingresso ma dal tipo di porta. Se ho capito bene hai usato la PORTA che ha ingressi a Trigger di Schmitt quindi riconosce il livello alto solo a 0,8xVDD quindi a 5V di VDD la soglia è a 4V per la salita e a 0,2xVDD=1v in discesa. Se usi la PORTB invece essendo TTL legge già il livello alto a 2-2,2V e il livello basso sotto 0,8V. In alternativa, se devi usare per forza la PORTA, puoi provare a mettere una resistenza da 1K in serie al segnale della rx e una di pull-up da 4,7K tra il pin di ingresso e il +5V. |
Citazione:
ottimo, grazie! |
| Tutti gli orari sono GMT +2. Adesso sono le 13:27. |
Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002