Condor Inserito: 10 gennaio 2004 Segnala Share Inserito: 10 gennaio 2004 Ho realizzato un circuitino con un 16f877,dove alla porta B ho collegato un display lcd e nella porta A,rispettivamente 0,1,2,3 quattro pulsanti.E' possibile dopo aver messo in stand-by il micro,farlo riaccendere alla pressione di un dei quattro pulsanti?grazie Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 10 gennaio 2004 Segnala Share Inserita: 10 gennaio 2004 Si puoi svegliarlo con l'interrupt per cambio di stato .Pero' il cambio di stato e' solo per RB4,5,6,7. quindi ti suggerisco di cambiare il collegamento e usare la porta B per i pulsanti.Uno stralcio del manuale del 877...12.13.1 WAKE-UP FROM SLEEPThe device can wake-up from SLEEP through one ofthe following events:1. External RESET input on MCLR pin.2. Watchdog Timer Wake-up (if WDT wasenabled).3. Interrupt from INT pin, RB port change orperipheral interrupt.External MCLR Reset will cause a device RESET. Allother events are considered a continuation of programexecution and cause a “wake-up”. The TO and PD bitsin the STATUS register can be used to determine thecause of device RESET. The PD bit, which is set onpower-up, is cleared when SLEEP is invoked. The TObit is cleared if a WDT time-out occurred and causedwake-up.The following peripheral interrupts can wake the devicefrom SLEEP:1. PSP read or write (PIC16F874/877 only).2. TMR1 interrupt. Timer1 must be operating as anasynchronous counter.3. CCP Capture mode interrupt.4. Special event trigger (Timer1 in Asynchronousmode using an external clock).5. SSP (START/STOP) bit detect interrupt.6. SSP transmit or receive in Slave mode(SPI/I2C).7. USART RX or TX (Synchronous Slave mode).8. A/D conversion (when A/D clock source is RC).9. EEPROM write operation completionOther peripherals cannot generate interrupts since duringSLEEP, no on-chip clocks are present. Link al commento Condividi su altri siti More sharing options...
Condor Inserita: 10 gennaio 2004 Autore Segnala Share Inserita: 10 gennaio 2004 Grazie sei stato gentilissimo ora provo..... Link al commento Condividi su altri siti More sharing options...
Condor Inserita: 1 febbraio 2004 Autore Segnala Share Inserita: 1 febbraio 2004 Ho fatto Ora funziona tutto però ho un'altro problemino/oneTi spiego,la scheda che stò realizzando,dovrebbe gestire una macchina per la vendita automatica,uso un 18f452che è del tutto simile ad un 16f877 con il doppio della memoria,al quale ho collegato un selettore di monete,un display, 4 tasti selezione più uno per la programmazione,4 motori con relativi 4 finecorsa e 4 sensori presenza prodotto ed una serie di led per segnalare la regolarità o l'irregolarità della varie selezioni.Ho scritto praticamente tutto il software,il quale funziona perfettamente tranne una cosa,sempre riguardante lo stand-bySiccome la macchina ha la possibilità di funzionare sia a rete che a batterie,quando seleziono in fase di programmazione macchina,il funzionamento a batterie ,qui abilito lo stand-by,dopo x secondi si spengono le periferiche Display compreso ed il pic và in stand-by,al suo risveglio,che avviene appunto o premendo un tasto o inserendo una moneta nel seettore,il display non scrive più o meglio mi fà una riga di rettangoli neri "le manca l'nizializzazione"Come posso fare a risolvere questo problema?Come compilatore uso il proton+ ho provato a farle ricare dopo il risveglio la stringa di inizializzazione ma non me la prende.C'è la possibilità di mettere anche il display in stand-by,con qualche istruzione,in modo che tenga in memoria l'inizializzazione?CiaoGrazie Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 1 febbraio 2004 Segnala Share Inserita: 1 febbraio 2004 Potresti fare una cosa,Non spegnere tutto il display , ma solo spegnere il backlight e disabilitare la visualizzazione dei caratteri.Se vuoi propio togliere l'alimentazione , allora devi mandare tutti i codici di inizializzazione dopo aver aspettato il tempo minimo di accensione dell'lcd.Ti consiglio di fare una routine tipo init_display e di chiamarla durante la prima accensione e dopo ogni risveglio dallo sleep.Piccolo consiglio , se e' un distribuitore automatico , quando e' in basso consumo il display deve visualizzare qualche cosa , perche se e' tutto spento , come posso fidarmi ad inserire una moneta ? .. e se me la mangia ? Link al commento Condividi su altri siti More sharing options...
Condor Inserita: 1 febbraio 2004 Autore Segnala Share Inserita: 1 febbraio 2004 Grazie per la risposta ora provo.....Per il piccolo consiglio,hai perfettamente ragione,il fatto è che ho provato in tutti i modi a farlo entrare in testa al BOSS,ma lui dice che deve funzionare così,anche perchè questa scheda và a sostituire una scheda gia esistente costruita in Spagna,che lavora in questo modo..quindi.......Il boss è il boss e allora.....Ciao Link al commento Condividi su altri siti More sharing options...
Condor Inserita: 1 febbraio 2004 Autore Segnala Share Inserita: 1 febbraio 2004 a dimenticavo al risveglio non può mangiare nessuna moneta in quanto ho usato un particolare selettore con il preavviso in pratica lui è sempre inibito una volta riconusciuta la moneta in 10 ms comunica alla scheda di che valore è o meglio se si tratta della moneta 1 o 2 o 3 ecc poi la scheda in max 30 ms deve dire al selettore di accettarla in caso contrario viene restituita,quindi inserendo la moneta io ottengo solamente il risveglio e la moneta viene restituita Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 2 febbraio 2004 Segnala Share Inserita: 2 febbraio 2004 C'è la possibilità di mettere anche il display in stand-by Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 2 febbraio 2004 Segnala Share Inserita: 2 febbraio 2004 (modificato) a dimenticavo al risveglio non può mangiare nessuna moneta Modificato: 2 febbraio 2004 da dlgcom Link al commento Condividi su altri siti More sharing options...
Condor Inserita: 18 febbraio 2004 Autore Segnala Share Inserita: 18 febbraio 2004 Rieccomi nuovamente......ora il problema sono gli assorbimenti di corrente.Attenendosi a qello che dice microchip, l'assorbimento del micro in sleep mode,dovrebbe aggirarsi intorno ai 40/50 uA,io invece non riesco a scendere al di sotto di 1.2 mA.Prima di mettere il micro in sleep mode setto tutti gli I/O come imput "se non lo faccio l'assorbimento non scende al di sotto di 35/40 mA"dopodichè abilito l'interrupt,il WDT lo tengo disattivatoCos'altro devo fare per far scendere questo dannato assorbimento?Grazie Ciao Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 18 febbraio 2004 Segnala Share Inserita: 18 febbraio 2004 Sei sicuro di non avere altro che consuma , tipo il display o qualche altro circuito?Solo il PIC se non esce dallo sleep deve consumare veramente poco.. Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 18 febbraio 2004 Segnala Share Inserita: 18 febbraio 2004 Volevo tornare sull'argomento dello SLEEP , anch'io ho un PIC pero' un 16F628 e ho collegato due tasti sugli ingressi PB4,PB5 utilizzando i pull-up interni , pero' non riesco a risvegliarlo , sapete darmi qualche indicazione ?Ciao e grazie Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 18 febbraio 2004 Segnala Share Inserita: 18 febbraio 2004 Per svegliarlo devi prima di tutto abilitare l'interrupt per cambio di stato nelle porte PB4-7.poi entrare in sleep , prova anche a disabilitare il watchdog che a volte da problemi.... Link al commento Condividi su altri siti More sharing options...
Condor Inserita: 19 febbraio 2004 Autore Segnala Share Inserita: 19 febbraio 2004 Dunque ho fatto un pò di prove ed ho scoperto la causa di questo assorbimento elevato.Per comodità,le resistenze di pull-up sui quattro tasti collegati ai piedini B4-7,le ho messe esterne,non ho abilitato quelle interne al pic e sono proprio queste la causa,cioè se le scollego dall'alimentazione,l'assorbimento scende a 35/40 microampere solamente che poi non posso più risvegliare il pic....allora ho provato ad abilitare quelle interne,risultato,mentre con quelle esterne collegate l'assorbimento è di circa 1.2 milliampere,con quelle interne sale fino a 3 milliampere.Le resistenze che ho usato io sono da 10kohm,che cosa mi consigli per aggirare questo inconveniente?se mettessi un valore più elevato tipo 33/47kohm?Ciao Grazie Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 19 febbraio 2004 Segnala Share Inserita: 19 febbraio 2004 Grazie Luca Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 23 febbraio 2004 Segnala Share Inserita: 23 febbraio 2004 Volevo dirvi che ho risolto , il problema era legato al fatto che nella mia applicazione (un telecomando) in cui gestisco in un loop la sequenza corretta dei pulsanti per inviare i dati , abilitando l'interrupt di fatto mi bloccava l'esecuzione , ho risolto disabilitando l'interrupt RB nella subroutine dell'interrupt che serve quindi solo per venire risvegliato , e riabilito l'interrupt dopo aver spedito i dati e successivamente rimando il tutto in SLEEP.Grazie ancora Ciao 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