Paoletto Inserito: 22 gennaio 2004 Segnala Inserito: 22 gennaio 2004 Salve a tutti sono nuovo del forum ma ho avuto modo di constatare,con piacere,che è molto a modo!ho bisogno di un consiglio:mi diverto con i pic,realizzando vari circuiti con essi,scopiazzando i software;ma pian piano mi sto dedicando a scrivere i programmi utilizzando il pic basic pro e devo dire che mi diverte di più.Questa è la domanda da ignorantone:come posso far svolgere contemporaneamente al pic due azioni?Cioè come posso abilitare due porte contemporaneamente e non in successione, poste come uscita al verificarsi di un evento x?Grazie ed un grosso saluto da Paolino.
ifachsoftware Inserita: 22 gennaio 2004 Segnala Inserita: 22 gennaio 2004 Puoi scrivere nella word del canale in cui sono le due uscite (do' per scontato che siano entrambe sullo stesso canale) e per farlo devi fare un mascheramento dello stato attuale della porta con un or dove gli unici bit ad 1 sono quelli da alzare.Tieni a mente che la contemporaneita' assoluta non esiste , considera che dentro ad una porta del PIC c'e' dell'eletrronica e che nonostanze scrivi nello stesso momento una porta puo' avere un piccolissimo ritardo rispetto all'altra anche se infinitesimo.Ciao
Paoletto Inserita: 22 gennaio 2004 Autore Segnala Inserita: 22 gennaio 2004 Grazie ma mi hai bloccato con dei termini per me quasi ostrogoti,scusa l'ignoranza.Allora: sto usando la portb di un pic 16f84a,all'arrivo di un cambio di stato sulla rb0, rb1 e rb2 vanno in high per un tempo diverso tra loro,la contemporaneità può anche slittare a 1".Mi faresti se è possibile un esempio pratico di come scrivere il programma.Grazie per l'interessamento.
ifachsoftware Inserita: 22 gennaio 2004 Segnala Inserita: 22 gennaio 2004 Scusami , ma prima mi parli di uscite e poi di ingressi , spiegami meglio che cosa vuoi fare ....Ciao
Paoletto Inserita: 22 gennaio 2004 Autore Segnala Inserita: 22 gennaio 2004 Grazie per il tempo che mi dedichi.Comincio tutto dal principio:a me serve che, due timer entrino in funzione quasi contemporaneamente,con tempi diversi,quando viene pigiato un pulsante.Mi puoi aiutare? Ciao grazie.
barbarona Inserita: 22 gennaio 2004 Segnala Inserita: 22 gennaio 2004 ciao paoletto,innanzittutto puoi indicarmi il nome del pic che stai utilizzando.per poter fare l'operazione da te richiesta e' necessario abilitare l'interrupt del timer e un'interrupt esterno , tali operazioni sono possibili solo nel caso in cui il tuo pic contenga le periferiche sopra descritte.
Paoletto Inserita: 22 gennaio 2004 Autore Segnala Inserita: 22 gennaio 2004 Ciao come ho scritto prima è un 16f84a.Ciao.
bit Inserita: 22 gennaio 2004 Segnala Inserita: 22 gennaio 2004 Di quanto hai detto che è il ritardo sull'attivazione delle due uscite?
Paoletto Inserita: 22 gennaio 2004 Autore Segnala Inserita: 22 gennaio 2004 Basta pure che vadano in attivazione una dopo l'altra di poco c/a 1".Ciao
bit Inserita: 22 gennaio 2004 Segnala Inserita: 22 gennaio 2004 Il problema allora è del software. Il pic può introdurti un ritardo dovuto ad alcune istruzioni scritte tra le due attivazioni, ma ti permette di attivare contemporaneamente due pin della stessa porta.Nel tuo caso il problema è relativo al programma che hai scritto, non hai tenuto conto sicuramente di qualcosa nei vari cicli.Posta il programma (assembler grazie, altri linguaggi non li so usare) che vediamo.Ah! Spiega bene cosa dovrebbe fare.Ciao!
Paoletto Inserita: 22 gennaio 2004 Autore Segnala Inserita: 22 gennaio 2004 sto usando la portb di un pic 16f84a,all'arrivo di un cambio di stato, sulla rb0,messa come ingresso, la rb1 e la rb2 messe come uscite, devono comandare due transistor quasi simultaneamente per un tempo diverso tra loro.In basic sono riuscito a fare andare il discorso solo in sequenza cioè all'arrivo del cambio di stato sulla ra0 , la rb1 inizia il lavoro per il tempo prefissato da "pause"poi si ferma ed attacca la rb2 fino alla fine del prog.Ciao.
Paoletto Inserita: 22 gennaio 2004 Autore Segnala Inserita: 22 gennaio 2004 Scusa dimenticavo di dirti che mi potrebbe andare bene un programmino in assembler ,con la possibilità di poter variare il tempo di azionamento dei due transistor.Dovresti dirmi dove cambiare il file .asm per ottenere tempi diversi.Ciao e grazie.
bit Inserita: 22 gennaio 2004 Segnala Inserita: 22 gennaio 2004 Capito il problema!Tu leggi lo stato del pulsante, quando lo trovi premuto attivi la prima uscita e aspetti un ciclo di ritardo, poi la disattivi. Dopo attivi la seconda uscita (ecco l'errore), attendi un secondo ciclo di ritardo e la disattivi.Le soluzioni sono tante, alcune più eleganti, alcune più semplici ma ugualmente efficaci.I due tempi sono fissi vero? Dunque uno dei due sara maggiore dell'altro... (per forza!)Allora fai così:Supponiamo che la prima uscita debba rimanere attivata per 2 secondi, e la seconda per 3.Leggi lo stato del pulsante, quando lo trovi attivato attivi ENTRAMBE le uscite. Poi lanci il ciclo di ritardo dell'uscita che si deve disattivare prima (nell'esempio fatto 2 secondi).Trascorso questo tempo disattivi la SOLA prima uscita e lanci un altro ciclo di ritardo, di valore pari alla differenza dei due ritardi (nell'esempio fatto quindi di 3-2 = 1 secondo). Trascorso questo tempo disattivi anche la seconda uscita e il ciclo ricomincia.Capito?
Paoletto Inserita: 22 gennaio 2004 Autore Segnala Inserita: 22 gennaio 2004 Grazie bit ti farò sapere che caos combinerò!Ciao ed ancora grazie,sei stato gentilissimo.
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