Secondo voi può andare? Ho provato a simularlo con PIC SIMULATOR IDE 5.20 ma non funziona cioè arrivato alla funzione sleep il programma si ferma e se metto a ON una delle
4 linee di input della porta B non succede niente. Ho notato inoltre che se assembo e compilo lo stesso programma con PIC SIMULATOR IDE mi vengono fuori degli errori che non avevo con Mplab. Aiutatemi a capire come funziona questo software che trovo molto utile. Grazie. Francesco
Non importa aggiungere un ORG, il compilatore sa gia si aggiungere all'indirizzo 5 PM il resto del codice ...
qui aggiungere il PULL-UP sul PORTB non fa male .... se ti serve ...
bcf OPTION_REG, RBPU
Qui è consigliabile inserire un LOOP che dici ???? Una volta eseguiro il primo SLEEP ... dove va ??? Si dovrebbe resettasre ma meglio sistemarlo no ???
Aggiungerei ...
Wait_Loop sleep goto Wait_Loop
Ti accorgi solo del primo passaggio, meglio inserire uno XOR sul valore del BIT almeno inverte lo stato a tutti gli INTERRUPT
ALLERME: movlw 0b00000001 xorwf PORT_A,F retfie
Manca il salvataggio dell'ambiente di lavoro W, FSR, STATUS ecc ... cmq dovrebbe andare ...
Prova a ricontrollare ...
delle
Hai provato con MPLAB 6.60 .... l'ambiente IDE ufficiale di microchip ... se non funziona li .... non va di sicuro ....
Ciao Gabriele, grazie per aver risposto, non ci speravo più. Allora, ho fatto le modifiche che mi hai indicato ed ho aggiunto un ciclo di ritardo ( LOOP). Il ciclo di ritardo LOOP lo ricavato dal programma PicLoops. Ho fatto la simulazione con Mplab 5.00 però arrivato al ciclo di ritardo non ne esce più forse perchè devo aspettare molto cioè la simulazione non avviene in tempo reale cioè a 4 MH? Se è così, quanto tempo devo aspettare per un ciclo di ritardo di 1 secondo? Questo è il programma modificato.
Ci sono errori? Come posso ritardare l'evento interrupt di una 15 di secondi cioè dove devo mettere il ritardo ? Mi spiego meglio sto costruendo un antifurto per auto collegando il circuito alle porte dell'auto, per cui dopo che accendo il circuito vorrei che aspettasse un 15 di secondi prima di controllare le porte ( le porte sono collegate ai pin della porta B per gli interrupt). Grazie per la disponibilità. Francesco
Non controllo spesso il neswgroup, ma se posso dare una mano lo faccio volentieri.
di
Un ciclo di ritardo si chiama "DELAY" ;-) ...
non
Perchè usi MPLAB così vecchio ??? Scarica il nuovo MPLAB IDE 6.60 .... effettivamente con quella vechhia verzione la simulazione è un pò lenta 15 secondi possono diventare 1 minuto, nella nuova versione non è ancora in real-time ma ci manca poco ... ti consiglio di aggiornarla.
secondo?
La cosa è indefinibile, dipende anche dalla velocità del PC (almeno con la vers. 5.00, con la 6.60 è real-time o giu di lì).
A prima vista sembra di no, comuque per una maggior chiarezza di lettura, metti le routine prima del programma principale ... ;-). Noto una modifica all' ISR (Interrupt Service Routine) perchè non togli lo XORWF sul PORTA se lo fai lampeggirae da solo, non serve più a questo punto ... no ???
devo
Il pic va in SLEEP, appena arriva un evento, setta un FLAG, non appena esce dall'ISR, il programma principale controllerà questo FLAG, se è HIGH (stato precedente LOW) eseguirà un ritardo di 15 sec e poi la procedura, una volta finito si riporta all'inzio, ovvero il SLEEP. Se il FLAG è invariato ritorna in SLEEP senza eseguire alcunchè.
circuito
Con i PIC ti sarai reso conto anche tu che l'unica limitazione è nella fantasia.
Per tornare al tuo programma se vuoi (senza toccare neite del tuo ingegno) posso vedere di dargli una ritoccattina, almeno impari anche qualche trucchetto ;-)
Ciao, ho messo in download mplab 6.60 tra qualche giorno posso utilizzarlo( modem
56 K). Fai pure le modifiche vuoi così poso imparare nuove cose. Vorrei come ti avevo detto che il pic aspettasse un 15-20 secondi prima di testare i pin della porta B ( tempo necessario per poter uscire dall' auto), poi deve andare in sleep in modo da consumare poca corrente, poi con l'evento interrupt ( apertura di una delle porte dell'auto)deve mettere a 1 una delle linee della porta A per circa un secondo perchè sulla porta A collego un tasto di un cellulare per mandare la chiamata :-) Ora vorrei fare questo poi più in là faremo un'altra piccola modifica. Grazie ancora. Francesco
Ciao, ho dato uno sguardo al listato e devo dire che ci ho capito poco :-( Comunque mi pare di aver capito, correggimi se sbaglio, che il pic aspetti
15 secondi dopo che è partito l'interrupt mentre io vorrei che il pic , una volta acceso, non facesse niente per 15 secondi ( tempo per uscire dall'auto) altrimenti come apro la porta per uscire mi parte l'allarme; quindi ricapitolando, accendo il circuito, aspetta 15 secondi, dopo di chè l'eventuale apertura di una delle porte dell'auto deve far partire l'interrupt (cioè l'allarme) che deve mettere subito a 1 il bit 0 della porta A per circa 1 secondo per poi ritornare a zero. Poi possiamo fare una piccola modifica ( e forse è questo che tu intendevi con i 15 secondi) cioè quando il circuito è accesso ed io devo aprire la portiera, ovviamente parte l'allarme per cui possiamo fare che l'allarme parti dopo un 5-10 secondi, tempo per spegnere il circuito. Se poi sai come creare e gestire un telecomando per disattivare l'allarme sarebbe il massimo :-) Vabbe ora limitiamoci a questo. Francesco
Piano piano lo capirai ... soprattutto simulandolo ...
una
OK, non è una grossa complicazione basta inserire un ritardo all'accensione.
OK sistemo anche questa parte ...
OK questo c'è già, 15 secondi, casomai metto un #define all'inizio del programma così impostiamo 3 valori di timer:
- Accensione.
- Ritardo Antifurto.
- Tempo high BIT su port A.
Se vuoi anche quello mi devi pagare :-P .... stò scherzando. Cosa vuoi usare per fare ciò ??? Un modulo Aurel ??? Hai qualche preferenza ??? Vuoi fare anche un telecontrollo a distanza con GSM, magari anche con il GPS ... sarebbe na figata :-) ... manda un SMS se la macchina si muove ... mandando anche le coordinate. Possiamo anche chiamare noi l'auto per sapere dove stà, magari facendo anche scattare l'antifurto e/o accendendo spegnendo uscite.
Guarda anche al fuuro :-).
Controlla la posta dopo mezzanotte ... dovrebbe essere pronto.
Ciao ho letto la posta e fra un pò posso simulare il programma con mplab così ci capisco meglio. A cosa servono gli altri file che ci sono nel progetto tipo Francesco.mcp .mcs .mcw?
l'allarme
usare
mandando
stà,
Questo magari si può fare più in là, così mi complico ancora di più. Puoi darmi qualche informazione sul modulo Aurel, qualche link va anche bene. Sarebbe bello comandare il circuito con un telecomando. Se vuoi ti mando il disegno del circuito in formato Fidocad così gli dai anche uno sguardo correggendo un pò di errori che sicuramente ci saranno. Come hai capito il circuito deve funzionare in auto e vorrei utilizzare la batteria dell'auto, poi anche gli ingressi cioè le portiere sono a 12 V ma il pic, se non sbaglio, non accetta 12 V in input come posso fare? Grazie Francesco
Sicuramente meglio del 5.00, nella vers. 6.60 l'interfaccia grafica è un pò cambiata, ma molto familiare ...
Sono file del progetto, Watch Windows, Setup imulazione, ecc ...
formatting link
Bello e non molto complicato ...
Ok ... posso dargli un'occhiata ... meglio OrCad .. no ??? :-)
Hai ragione il PIC accetta solo ingressi 0-Vcc o meglio 0-5V. ci sono molti modi, trattandosi di un solo ingresso, possiamo:
1) Mettere una resistenza che 10K verso il PIN e un diodo con Anodo al PIN e Katodo a VCC.
2) Costruire un partitiore, in modo da avere 5 volt con ingresso 14,4 Volt (Tensione batteria in carica).
3) Usare dei disaccoppiatori ottici.
(1) - (2) sono semplici (3) migliore ma un pò piu complicata.
Ciao, ho simulato il programma con mplab 6.60 e funziona però facendo Animate è troppo lento mentre con Run è veloce però non vedo i cambiamenti in Special Function Register. In pratica per capire se il programma funziona ho fatto Run e dopo un pò stoppavo per vedere dove era arrivato, poi gli davo l'input e così via. Come simuli tu il programma? Prima di fare la simulazione deve fare sempre Make? C'è un modo per vedere in tempo reale(o quasi) i cambiamenti nel Special Function Register? Ti allego il circuito con cui sto facendo le prove del programma dove al posto del cellulare sto utilizzando una calcolatrice cioè ho saldato due fili su un tasto :-) Ho provato il programma con questo circuito ma non va. Purtroppo non ho Orcad. Nel disegno del circuito manca qualcosa tipo il reset ma la parte che mi interessa penso sia l'ingresso su RB5.
[FIDOCAD] TY 150 55 5 3 270 0 0 * Pic 16f84 LI 160 60 180 60 MC 185 60 0 0 980 LI 180 60 185 60 LI 185 70 170 70 LI 170 70 170 65 LI 170 65 160 65 LI 185 60 200 60 MC 200 60 0 0 170 MC 200 70 0 0 170 LI 185 70 200 70 LI 210 60 220 60 LI 210 70 220 70 MC 220 60 3 0 040 MC 220 70 3 0 040 LI 160 55 170 55 LI 170 55 170 40 LI 170 40 120 40 LI 120 40 120 55 TY 170 50 5 3 90 0 0 * RA0 BE 145 48 145 52 150 52 150 48 LI 135 70 130 70 LI 130 70 130 110 MC 130 110 0 0 040 TY 160 61 4 2 0 0 0 * 15 TY 160 56 4 2 0 0 0 * 16 TY 160 51 4 2 0 0 0 * 17 MC 135 50 0 0 650 TY 130 66 5 3 0 0 0 * 5 LI 160 70 165 70 LI 165 70 165 80 LI 165 80 180 80 TY 160 66 4 2 0 0 0 * 14 LI 160 90 165 90 LI 165 90 165 100 TY 160 86 4 2 0 0 0 * 11 TY 167 95 4 2 0 0 0 * RB5 TY 188 63 4 2 0 0 0 * 4 MH TY 207 56 4 2 0 0 0 * 27 pF TY 207 66 4 2 0 0 0 * 27 pF MC 180 80 0 0 170 LI 175 80 175 75 LI 190 80 200 80 LI 175 75 225 75 MC 225 75 0 0 010 TY 232 73 4 2 0 0 0 * Vcc = 5 V MC 220 80 3 0 040 LI 200 80 221 80 TY 187 76 4 2 0 0 0 * 100 nF MC 95 55 0 1 340 MC 95 85 0 0 040 LI 95 75 95 85 LI 75 55 60 55 TY 95 50 5 3 0 0 0 * 1 TY 95 75 5 3 0 0 0 * 2 TY 75 50 5 3 0 0 0 * 5 TY 75 75 5 3 0 0 0 * 4 TY 100 71 5 3 90 0 0 * 4n25 LI 60 55 45 55 MC 45 55 2 0 074 LI 75 75 45 75 MC 45 75 2 0 074 TY 34 93 5 3 90 0 0 * Contatti cellulare LI 95 55 120 55 MC 245 110 0 0 010 TY 253 108 4 2 0 0 0 * Vcc = 5 V LI 225 110 245 110 MC 205 110 1 0 115 TY 195 103 5 3 0 0 0 * 10 K LI 205 110 225 110 LI 165 100 190 100 LI 190 100 190 110 LI 190 110 195 110 MC 185 110 1 0 750 LI 185 110 190 110 LI 130 110 132 110 LI 132 110 170 110
Ciao ... hai anche la mia email ... questo post altrimenti diventa lungo un secolo ... ;-).
Special
La funzione "Animate" ha una velocità impostabile, controlla nelle opzioni ... Special Function Register, sono i registri del Processore, la RAM è File Register ...
Io vado Step-Step con F8 fino ad un call, mi fermo, se voglio vedere cosa fa la routine che stò per chiamare, continuo con F8 se so già che funziona e cosa fa, ma soprattutto che registri modifica e quali devo passare, li sistemo (a mano) e poi faccio SETP-OUT o metto un BreakPoint dopo la Call e faccio RUN, la simulazione si ferma subito dopo la Call.
Solo la prima volta o sei fai delle modifiche al programma, cmq te lo chiede lo stesso MPLAB, quando fai una modifica di effettuare un nuovo make.
In tempo reale non è possibile in alcun modo, nemmeno con l'emulatore, solo dopo lo STOP puoi vedere lo stato dei registri. In Real-Time sarebbe cmq impossibile ... il PC non ce la farebbe a stare dietro a tutti i registri ...
:-) ... per provare .... va bene ... potevi mettere anche un LED a questo punto ... cmq il tasto chiude un circuito o si aspetta una tensione ???
Basta controllare .... :-) ... difficile che una cosa funzioni al primo colpo .... non funziona quasi mai ...
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.