| | #1 (permalink) Top |
| User Data registr.: 22-02-2009
Messaggi: 2
| gestire segnale in ingresso pic
Ciao a tutti, anche io sto cercando di cimentarmi con i pic per questioni modellistiche, ho letto un sacco di post qui sul forum e anche vari articoli/guide su internet però non riesco a trovare ciò che mi serve; mi sono procurato picbasic di modo da poter scrivere con un altro codice il che mi aiuta parecchio essendo nuovo dell'ambiente però purtroppo non riesco a venirne a capo, il problema è questo:dovrei far leggere al pic (pensavo un classicissimo 16f84A o un 16f628) il segnale in uscita dalla ricevente che va all'esc per far poi pilotare al pic dei led ecc in particolari momenti.. ad esempio premendo lo stick a fondo oppure dopo averlo fatto tornare in posizione 0 avrei a disposizione anche dei sw per simulare i pic di modo da fare veloci prove.. però non sono riuscito a capire come fare per gestire questi segnali.. (tipo 1,75ms ....1,50ms ... 1,25ms a seconda delle posizioni), ho trovato qualcosa circa l'uso del timer, o degli interrupt... però erano discorsi incentrati su piccole problematiche in cui si poteva leggere solo una piccola parte di codice..troppo piccola per poterne capire il funzionamento. Spero di essermi spiegato.. ho voluto provare a scrivere qui perchè nonostante cercando nel forum non ho trovato una risposta.. ho letto molti post di gente davvero preparata percui .. beh spero in un aiutino |
| | |
| | #2 (permalink) Top |
| User Data registr.: 11-11-2006 Residenza: Romano di L.(BG)
Messaggi: 536
|
Salve ti spiego come farei..ma tieni conto che non programmo i pic da un pò e che cmq ho avuto poca esperienza....allora io farei cosi: intanto setti i prescaler del timer in modo che il timer possa contare 1 ms poi setti sul pin d'ingresso del segnale l'interrupt sul fronte di salita....e metti il pic in attesa appena arriva il fronte di salita del segnale sul pin del pic questo genera un interrupt allora viene richiamata la funzione di gestione dell'interrupt che deve fare le seguenti cose: far partire il timer e settare sul fronte di discesa l'interrupt del pin d'ingresso e stop..il pic deve poi restare in attesa che il timer generi l'interrupt per l'overflow una volta generato l'interrupt del timer viene eseguita la funzione che tu hai scritto per gestire questo interrupt, questa funzione non deve far altro che resettare il timer e farlo ripartire e metti il pic nuovamente in attesa a questo punto aspetti che venga generato un nuovo interrupt da parte del pin di ingresso viene richiamata nuovamente la funzione per la gestione dell'interrupt e questa volta bisogna solamente leggere il valore del timer.......... |
| | |
| | #3 (permalink) Top |
| User Data registr.: 09-09-2005 Residenza: Scandicci (FI)
Messaggi: 4.216
![]() |
Ciao, in PicBasic (microEngineering Labs - Development tools for Microchip PICmicro MCUs including PicBasic and EPIC programmer) c'è un comando che fa il caso tuo si chiama PULSIN (lettura) e PULSOUT (scrittura), sotto un pò di codice loop: . . PULSIN porta.0,1,W0 ' if W0 >= 90 and w0 < 126 then goto sequenza1 if W0 >= 126 and w0 < 162 then goto sequenza2 if W0 >= 162 and w0 <= 210 then goto sequenza3 . . sequenza1: fai questo1 goto loop . sequenza2: fai questo2 goto loop . sequenza3: fai questo2 goto loop . end Saluti |
| | |
| | #4 (permalink) Top |
| User |
piccola aggiunta od alternativa a quanto suggerito da g.mosfet: Il TMR0 deve essere settato in free-running con clock di 1...5us, (in modalità a 16 bit se possibile), a seconda della risoluzione che vuoi ottenere nel misurare la durata dell'impulso (da 250 a 1000 step). L'ingresso degli impulsi va messo sulla porta RB0 e va abilitato l'interrupt sul fronte di salita della stessa. Appena arriva un impulso, nella routine di interrupt della RB0 leggi il valore del timer e lo salvi in una variabile, poi inverti il fronte dell'interrupt. Quando arriva il fronte di discesa sottrai al nuovo valore del timer il vecchio salvato e così hai direttamente la durata dell'impulso, poi ricommuti l'interrupt sul fronte di salita Ora hai circa 18 ms liberi per far fare tutto quello che vuoi al PIC. Usando sempre il TMR0 potresti creare impulsi in uscita a Ton variabile sincroni con quello di ingresso. Un consiglio, le routine di interrupt scrivile in assembler o se il compilatore lo permette scrivendo direttamente nei registri del PIC senza usare librerie che talune volte sono di dubbia efficienza.
__________________ Peace & Love Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein) |
| | |
| | #5 (permalink) Top | |
| User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
| Citazione:
Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. | |
| | |
| | #6 (permalink) Top | |
| User | Citazione:
Se all'amico basta una risoluzione di 256 step nella lettura della durata dell'impulso può comunque utilizzare anche un counter ad 8 bit.
__________________ Peace & Love Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein) | |
| | |
| | #8 (permalink) Top | |
| User | Citazione:
Ho messo più tempo a descrivere il metodo che ha implementarlo ![]() ![]() ![]() ![]() Inoltre con i micro con poche risorse hw è d'obbligo imparare ed utilizzare tecniche di programmazione efficienti.
__________________ Peace & Love Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein) | |
| | |
| | #9 (permalink) Top | |
| User Data registr.: 09-09-2005 Residenza: Scandicci (FI)
Messaggi: 4.216
![]() | Citazione:
![]() SAluti | |
| | |
| | #10 (permalink) Top |
| User Data registr.: 22-02-2009
Messaggi: 2
|
che dire.... grazie mille a tutti per l'aiuto è dire poco! ![]() ho fatto delle piccole prove al simulatore e dovremmo esserci!! purtroppo contavo di fare delle prove fisiche questa sera ma ho qualche rogna al programmatore (sospetto del cavo.. in quanto facendo il test hw su icprog non mi tornano dei valori :-\ ) percui temo che dovrò rimandare a domani i test veri e propri.. comunque vi terrò aggiornati ! ancora grazie mille!!! |
| | |
![]() |
| Bookmarks |
| |
Discussioni simili | ||||
| Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
| Come fate a gestire i thread che vi interessano? | aleall | Segnalazione Bug e consigli | 6 | 23 ottobre 08 11:45 |
| gestire un servo con un potenziometro | jeshinji | Circuiti Elettronici | 5 | 08 agosto 08 11:45 |
| E' facile gestire un elicottero a scoppio? | Helifante | Elimodellismo Principianti | 11 | 10 febbraio 06 18:16 |
| Gestire 2 regolatori con una trasmittente... | Kymera76 | Circuiti Elettronici | 11 | 24 maggio 05 11:33 |
| Pic, mio caro Pic.... | fai4602 | Circuiti Elettronici | 7 | 24 novembre 03 20:34 |