dott.cicala Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 (modificato) ma è troppo rumoroso E' vero! Ho dovuto togliere un condensatore perchè premendo il pulsante generava un impulso di -110dBm a 16kHz. L'antirimbalzo è software 😉 Il file .hex :020000000328D3 :10000600210099019A0108308C0022008C01200001 :10001600A101A011A0122011A01020008C191528F2 :10002600711416287110201A1A2803141B2803109D :10003600711C2128031C2128201422282010711845 :100046002628201227282016201C332801302200BB :100056008C060C1830288C1431288C102000A10135 :1000660022000C1C4F28803020002106F000803032 :100076000A3A700203184028A10A80302106F000CF :1000860080300A3A7002013003180030F000701810 :100096004E2820114F28201522008C1C6B288030FA :1000A60020002106F00080300A3A700203185C280E :1000B600A10A80302106F00080300A3A7002013031 :1000C60003180030F00070186A28A0106B28A014DE :1000D60020002019712822000C15732822000C110B :1000E6002000A018792822000C167B2822000C126A :0400F60010287C282A :020000040001F9 :04000E00A40FFF1C20 :00000001FF Il programma in un void 🤪 //****************************************************************************** // Project : // Author : S.T. 4 PLC Forum // Date : 26/12/2019 // MCU : PIC12F1840 - INt.OSC. 31kHz // Compiler: MikroC PRO for PIC V7.5.0 //****************************************************************************** //****** TAGs ****************************************************************** sbit Led1 at LATA.B0; sbit Led2 at LATA.B1; sbit Out1 at LATA.B2; sbit Pbutton at RA3_BIT; sbit Out2 at LATA.B4; sbit Out3 at LATA.B5; bit FsButton, mem, mOut1, mOut2; short step; //****************************************************************************** //****************************************************************************** void main() { //****************************************************************************** // Registro configurazione Oscillatore //****************************************************************************** OSCCON = 0b00000000; //****************************************************************************** // Registri configurazione PORT[A] //****************************************************************************** TRISA = 0b00001000; // RA0-RA1-RA2-RA4=OUT - RA3-RA5=INPUT //****************************************************************************** LATA = 0; step = 0; mOut1 = 0; mOut2 = 0; //****************************************************************************** // //****************************************************************************** while(1) { FsButton = !Pbutton &! mem; mem = !Pbutton; if(FsButton) { Led1=~Led1; Led2=!Led1; step=0; } if(Led1) { if(step<10)step++; mOut1=(step<10); } if(Led2) { if(step<10)step++; mOut2=(step<10); } Out1=!mOut1; Out2=!mOut2; } } Modificato: 28 dicembre 2019 da dott.cicala
gabri-z Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 Questo è quel che sono riuscito a tirare fuori dal LT Spice , ma sto ancora studiando...
gabri-z Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 a 16kHz. Tralasciando l'ampiezza , , 'sta frequenza non la sentono in tanti dopo la maggior età , dicono che sia un effetto del testosterone....
dott.cicala Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 Questo è rumore! continua fino a 10MHz poi si riduce, ma a 30MHz c'è ancora, Cosa sarà? Ghirlanda di led cinesi
dott.cicala Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 Questo è quel che sono riuscito a tirare fuori dal LT Spice Il circuito qual'è?
dott.cicala Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 Questo è il pic da 50Hz a 10MHz. Praticamente....NON c'è
Mauro Dalseno Inserita: 28 dicembre 2019 Autore Segnala Inserita: 28 dicembre 2019 Stefano, il mio amico vedendo i tuoi post ha cambiato idea e vuole tornare a usare il PIC, mi ha detto che Lunedì se i negozi di componentistica elettronica mantovani sono aperti va a comprare i componenti.... il PIC occupa poco spazio e da quanto si capisce dalle tue schermate dovrebbe andare bene.
gabri-z Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 Il circuito qual'è? Il mio , in matita , non posso ancora simulare il 4017 . A proposito della tua '' sonda logica '' , ce la presenteresti nel sotto-forum adeguato ? Non credo si possa chiamare pubblicità , magari se fosse , un moderatore toglierà il nome .
gabri-z Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 (modificato) il PIC occupa poco spazio e da quanto si capisce dalle tue schermate dovrebbe andare bene. Nessun altro circuito potrebbe battere uno col pic per la funzione del circuito data . Dimenticavo , sta volta puoi saltare il condizionale VA ! Modificato: 28 dicembre 2019 da gabri-z
dott.cicala Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 (modificato) Il mio , in matita Accipicchia, simulare il digitale con LTspice è roba da mal di testa A proposito della tua '' sonda logica ' E' una cinesata da poche decine di €€ clone di questo Mi ha sorpreso per quanto funzioni bene il mio amico vedendo i tuoi post ha cambiato idea e vuole tornare a usare il PIC Va bene qualsiasi pic a 8 pin serie 12F1xxx, non quelli vecchi 12Fxxx. Io ho il 12F1501, il 12F1572 e il 12F1840 e l'ho provato sugli ultimi due. Il codice più sopra non è quello che serve a te...ho fatto un po' di confusione, quello è per pilotare i led con l'uscita a livello basso. Quando lo trovi mi dici che pic hai che lo ricompilo. Il codice giusto per il 1840 è questo //****************************************************************************** // Project : // Author : S.T. 4 PLC Forum // Date : 26/12/2019 // MCU : PIC12F1840 - INt.OSC. 31kHz // Compiler: MikroC PRO for PIC V7.5.0 //****************************************************************************** //****** TAGs ****************************************************************** sbit Led1 at LATA.B0; sbit Led2 at LATA.B1; sbit Out1 at LATA.B2; sbit Pbutton at RA3_BIT; sbit Out2 at LATA.B4; bit FsButton, app, wait; short step; //****************************************************************************** //****************************************************************************** void main() { //****************************************************************************** // Registro configurazione Oscillatore //****************************************************************************** OSCCON = 0b00000000; // 31kHz LF-LP //****************************************************************************** // Registri configurazione PORT[A] //****************************************************************************** TRISA = 0b00101000; // RA0-RA1-RA2-RA4=OUT - RA3-RA5=INPUT //****************************************************************************** LATA = 0; // Azzro Latch step = 0; // Azzero conteggio //****************************************************************************** // //****************************************************************************** while(1) { wait = (Out1||Out2)&!Pbutton; //Attendo fine mpulso FsButton = !Pbutton &! app &!wait; //Fronte discesa pulsante app = !Pbutton; //Appoggio per fronte if(FsButton) // C'è il fonte? { Led1=~Led1; // Inverto stato Led1 Led2=!Led1; // Led2 è l'inverso di Led1 step=0; // Cicli di ritardo } if(Led1) // Led1 è acceso? { if(step<31)step++; // Conto fino a 31 Out1=(step<31); // Attivo uscita per 31 cicli } if(Led2) // Led2 è acceso? { if(step<31)step++; // Conto fino a 31 Out2=(step<31); // Attivo uscita per 31 cicli } } } file .hex :020000000328D3 :10000600210099019A0108308C0022008C01200001 :10001600A101A011A0122011A01020008C191528F2 :10002600711416287110201A1A2803141B2803109D :10003600711C2128031C2128201422282010711845 :100046002628201227282016201C332801302200BB :100056008C060C1830288C1431288C102000A10135 :1000660022000C1C4F28803020002106F000803032 :100076000A3A700203184028A10A80302106F000CF :1000860080300A3A7002013003180030F000701810 :100096004E2820114F28201522008C1C6B288030FA :1000A60020002106F00080300A3A700203185C280E :1000B600A10A80302106F00080300A3A7002013031 :1000C60003180030F00070186A28A0106B28A014DE :1000D60020002019712822000C15732822000C110B :1000E6002000A018792822000C167B2822000C126A :0400F60010287C282A :020000040001F9 :04000E00A40FFF1C20 :00000001FF Un'altra cosa che si riesce a fare è impedire di emettere un nuovo impulso mentre è in corso il precedente Oltre che filtrare ogni rimbalzo del pulsante senza nessun componente esterno Modificato: 28 dicembre 2019 da dott.cicala
gabri-z Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 Accipicchia, simulare il digitale con LTspice è roba da mal di testa Lo sarà per chi sa usarlo , per me è uguale !
gabri-z Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 Dott' hai cambiato il codice qui ,oppure hai monitorato i ''puls'' prima dei transistor ? Adesso sono della stessa polarità con le uscite LED .
GiRock Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 (modificato) In Proteus il tempo del monostabile 4538 non viene simulato, ovvero non viene dedotto dalla lettura RC esterna, deve essere settato nelle proprietà alla voce Monostable Time Constant, ai tempi aveva fregato anche me convinto di aver impostato valori errati, poi ho scoperto l'arcano... Il funzionamento corretto del circuito è presto riassunto: 1) Accendi l'ambaradan e tutti i LED sono spenti, le uscite degli impulsi sono a livello logico 1 avendo le sue pull-up2) Premi una volta il pulsante, (*) si accende il LED LD1 e contemporaneamente l'uscita O1 dell'impulso si setta a 0 fino al rilascio del pulsante che lo ripristina a 13) Premi ancora il pulsante, si spegne LD1 e si accende LD2, l'uscita O2 dell'impulso si setta a 0 fino al rilascio del pulsante che lo ripristina a 14) Ripremi il pulsante e salti alla condizione (*) e via discorrendo fino al successivo riavvio del circuito Ad ogni modo, stai facendo un grande lavoro anche questa volta come sempre... Modificato: 28 dicembre 2019 da GiRock
dott.cicala Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 Si ho cambiato il codice perché 1) Il biled lo piloto direttamente ed è a catodo comune 2) Gli impulsi pilotano i transistor per avere il collegamento a collettore aperto, quindi per mandare bassi gli ingressi del mux devo eccitare i bjt, che sono npn Per tale ragione le uscite hanno lo stesso stato (attivo alto) Il funzionamento è come da specifica: All'accensione nessuna uscita attiva, quindi il mux è tenuto alto dal pullup (non a schema) i led sono spenti. Premendo il pulsante (attivo basso) viene attivato il led 1 e generato l'impulso 1. Alla successiva pressione si spegne il led1, si accende il led2 e viene generato l'impulso 2. Alla successiva pressione si spegne il led2, si accende il led1 e viene generato l'impulso 1 e via di seguito. Ovvio che l'analizzatore logico ha bisogno di un trigger per iniziare l'acquisizione che nella figura qui sopra è preso dal segnale Pulse_P1, di conseguenza la situazione iniziale con tutto spento si vede ben poco. Confermo quindi l'ultimo schema e codice pubblicati. Ad ogni modo, stai facendo un grande lavoro Grazie
gabri-z Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 i ,oppure hai monitorato i ''puls'' prima dei transistor ? L'avevo intuito .
dott.cicala Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 Qui si vede meglio e con questo....ho finito!
gabri-z Inserita: 28 dicembre 2019 Segnala Inserita: 28 dicembre 2019 Beh , così è più facile leggerlo , sul primo che hai messo , mi sono attorcigliato il collo per vedere il sincronismo.... Quel 0,34s è il tempo minimo per un programma , mentre non accetta un altro impulso ?
Mauro Dalseno Inserita: 29 dicembre 2019 Autore Segnala Inserita: 29 dicembre 2019 Quando lo trovi mi dici che pic hai che lo ricompilo. Il codice giusto per il 1840 è questo Ne ho ordinati un paio su internet, così lo faccio anche io quel circuito.... mi hai invogliato.... domanda: il testo per il file .hex l'ho copiato in un file di testo txt e poi ho cambiato l'estensione in .hex, è corretta questa procedura?
dott.cicala Inserita: 29 dicembre 2019 Segnala Inserita: 29 dicembre 2019 Quel 0,34s è il tempo minimo per un programma , mentre non accetta un altro impulso ? Sì, se il bottone è premuto ed è in corso un impulso allora aspetta . L'impulso dura 31 cicli all'interno del While wait = (Out1||Out2)&!Pbutton; Out1=(step<31)
GiRock Inserita: 29 dicembre 2019 Segnala Inserita: 29 dicembre 2019 Scusa Dottore, non era meglio mettere tutto in sleep mode dopo ogni pressione del pulsante? Usando la cattura dei fronti in ingresso e l'interrupt, si potrebbe spegnere il PIC evitando qualsiasi rumore aggiuntivo anche se l'analizzatore di spettro non ne rileva, a mio parere sarebbe stata la cosa più sensata anche se il codice risulterebbe un poco più complicato da scrivere, avevo usato un sistena analogo sia per un campanello elettronico che per un frequenzimetro/duty-cyclometro con buoni risultati... Ad ogni modo, conoscendo la tua meticolosità nelle analisi circuitali, non ho dubbi che anche così il tutto funzioni a dovere, speriamo che risponda fedelmente alle specifiche richieste...
dott.cicala Inserita: 29 dicembre 2019 Segnala Inserita: 29 dicembre 2019 non era meglio mettere tutto in sleep mode Certamente sì. Ma volevo appunto scrivere un codice semplice da spiegare. Visto che hai lanciato il sasso....ora lascio a te il compito di scrivere il codice come hai suggerito
Mauro Dalseno Inserita: 29 dicembre 2019 Autore Segnala Inserita: 29 dicembre 2019 Certamente sì. Ma volevo appunto scrivere un codice semplice da spiegare. Visto che hai lanciato il sasso....ora lascio a te il compito di scrivere il codice come hai suggerito Non pensavo di avviare una gatta del genere.... non tiratemi degli accidenti 🙄
dott.cicala Inserita: 29 dicembre 2019 Segnala Inserita: 29 dicembre 2019 Non pensavo di avviare una gatta del genere.... non tiratemi degli accidenti 🙄 Assolutamente no. Ci avevo pensato ma comunque... ...Anche in sleep il micro ha pur sempre bisogno di un clock che non si spegne mai...ed è quello che ho usato io 9.0 POWER-DOWN MODE (SLEEP) 5. 31 kHz LFINTOSC is unaffected and peripherals that operate from it may continue operation in Sleep.
gabri-z Inserita: 29 dicembre 2019 Segnala Inserita: 29 dicembre 2019 Questo l'ho letto dopo , visto che tu eri impegnato , e lo associato al ''tema'' . // Conto fino a 31 Out1=(step<31); // Attivo uscita per 31 cicli
Messaggi consigliati