Vicus Inserita: 11 aprile 2016 Autore Segnala Inserita: 11 aprile 2016 Se invece volessi chiudere gli interruttori verso massa oltre a mettere le r di pull up invece che pull down cosa dovrei fare? L'ingrato triggera sul fronte di salita?
gabri-z Inserita: 11 aprile 2016 Segnala Inserita: 11 aprile 2016 Non credo che si complichi tanto , si , salita se parli del 4035 ; lasciami un po' di tempo , sono al lavoro
gabri-z Inserita: 11 aprile 2016 Segnala Inserita: 11 aprile 2016 Hai bisogno di uscita attiva per '' zero '' o sei costretto avere capo comune dei pulsanti a ''zero '' ? pic , piC , pIC , PIC !
Vicus Inserita: 12 aprile 2016 Autore Segnala Inserita: 12 aprile 2016 La seconda, devo usare un cavo 4x0,22 più schermo.
Vicus Inserita: 14 maggio 2016 Autore Segnala Inserita: 14 maggio 2016 Ciao, vi aggiorno: ho optato per la soluzione con micro. L'ho ordinato e mi arriverà la settimana prossima in compenso è arrivato il programmatore che però non funziona. Conoscete un modo per programmare i pic con arduino?
dott.cicala Inserita: 14 maggio 2016 Segnala Inserita: 14 maggio 2016 Che programmatore hai ordinato...che non funziona? Se hai un adattatore usb-rs232 o addirittura la rs232 sul pc, puoi costruire il prommer presentato nel mio intervento del 23 marzo. Funziona sicuramente...se costruito correttamente. Che pic vuoi usare?
Vicus Inserita: 14 maggio 2016 Autore Segnala Inserita: 14 maggio 2016 Quello che mi hai consigliato tu ovvero il PIC16F88. Il programmatore è un TL866A e il self check mi da 5 errori nel "over current protection" e infatti non riesce a programmarmi una prom. Ha pure l'icsp ma non so se funzioni. Seguendo questo: il pic hai il pull up interno?
dott.cicala Inserita: 14 maggio 2016 Segnala Inserita: 14 maggio 2016 Quote TL866A ho capito.....quello cinese Da quanto ho visto, non costa nemmeno poco. Purtroppo a volte capita di comprare aggeggi cinesi che non funzionano ma solitamente i venditori cinesi sono disposti anche a sostituirli, i tempi sono molto lunghi. A me è capitato con un noise generator: ci son voluti più di 3 mesi per averne uno funzionante Il 16F88 ha il weak pull up su portB....non è una resistenza ma un pmos....che non va caricato troppo, va bene appunto per i pulsanti. Il codice lo avevo a suo tempo collaudato e quindi è perfettamente funzionante. E' possibile programmare i pic anche con arduino.....in rete c'è qualcosa....ma a me arduino dà l'orticaria, anche se ne ho più di uno.... ....e poi ho il pickit3 e la easy pic7...quindi....non ci ho mai provato....ma adesso che ci penso....proverò con la red pitaya
Vicus Inserita: 15 maggio 2016 Autore Segnala Inserita: 15 maggio 2016 Red pitaya è un bel aggeggino. Dovrò cercarmi qualcuno con un programmatore per portare il progetto a termine in breve tempo. Qui c'è qualcuno nel triangolo Vicenza-Treviso-Padova?
Vicus Inserita: 12 giugno 2016 Autore Segnala Inserita: 12 giugno 2016 Ok, ho la scheda finita. Mi basta programmare il pic e fare il primo test. Il codice che mi avete dato è questo: :020000001628C0 :0E0006008312031321088A00200882000800DC :1000140003208A110A128000840AA00A0319A10A83 :08002400F003031D0A28080087 :10002C004D30831603138F0083129F0183169F019B :10003C009B01F03085000F3086008312850107305C :10004C00831681008B018C018D0183128C018D0133 :10005C0083168E010F3083120605A200A301003017 :10006C00A3050030A3004628013085006628023025 :10007C0085006628043085006628083085006628CF :10008C0000302306031D4C280E30220603193A2893 :10009C0000302306031D54280D30220603193D2879 :1000AC0000302306031D5C280B3022060319402860 :1000BC0000302306031D6428073022060319432849 :0400CC003028672849 :04400E00183FFF3F19 :00000001FF ora che faccio? Io ho fatto così, creo un file .hex e ci copio dentro quello che c'è qui sopra. Apro il programmatore e apro l'hex. C'è la possibilità di inserire da che riga partire, solo code, all memory e altre opzioni. Lascio tutto di default?
Vicus Inserita: 17 giugno 2016 Autore Segnala Inserita: 17 giugno 2016 cFinito di montare il tutto ma non funziona. Cosa ho sbagliato?
Vicus Inserita: 17 giugno 2016 Autore Segnala Inserita: 17 giugno 2016 Capito tutto, ha usato gli altri quattro ingressi, da 0 a 3 mentre io ho usato quelli dello schema ovvero da 4 a 7. Modifico il firmware e provo a ricaricarlo.
dott.cicala Inserita: 17 giugno 2016 Segnala Inserita: 17 giugno 2016 Alt un attimo Non me lo ricordo più....però l'avevo provato e funzionava. PortB dove sono collegati i pulsanti è letta a byte. Mask è una maschera che mette in AND il valore di portB con 0x07 che vale 00001111. Quindi i pulsanti vanno collegati da RB0 a RB3 Da RB0 a RB3 significa usare i pesi binari da 20 a 23 cioè i valori decimali 1-2-4-8 Quindi il case deve essere MASK:= PORTB & 0x0f; switch (MASK) { CASE 1: PORTA:=1; break; CASE 2: PORTA:=2; break; CASE 4: PORTA:=4; break; CASE 8: PORTA:=8; break; } Le uscite sono collegate da RA0 A RA3 e scritte nello stesso modo
gabri-z Inserita: 17 giugno 2016 Segnala Inserita: 17 giugno 2016 Quote con 0x07 che vale 00001111 Come OT , mi daresti un po di .....luce ?
dott.cicala Inserita: 17 giugno 2016 Segnala Inserita: 17 giugno 2016 e...ho sbagliato un'altra volta....volevo dire 0x0F F in esadecimale vale 15 in decimale che vale 1111 in binario ogni bit da destra a sinistra vale 2n dove n è il numero del bit. Il bit 3 ad esempio vale 23 cioè 8 in decimale. Un byte è composto da 8 bit e quindi si ha da dx a sx 27...... 20 In decimale ogni bit della portaB che ha 8 ingressi e quindi è un byte vale 128-64-32-16-8-4-2-1 Se facciamo la somma di ognuno otteniamo partendo dal caso in cui gli ingressi sono tutti spenti a quello in cui sono tutti accesi, ( ma vale anche per le uscite) abbiamo un campo di valori che va da 0 a 255, cioè 256 combinazioni. In questo circuito, con l'istruzione switch - case, viene riconosciuto un solo valore per volta che può assumere la porta dove sono collegati i pulsanti e siccome sono quattro, gli altri 4 ingressi non utilizzati vengono mascherati. Si ha il valore della maschera che vale 00001111 e il valore dei pulsanti che può valere 0001 - 0010 - 0100 - 1000 che appunto in decimale significa 1-2-4-8. Se si premono più pulsanti contemporaneamente si avrà una combinazione diversa non compresa nel case e quindi non verrà attivata nessuna uscita. E come sono attivate le uscite? Le uscite sono su un'altra porta, la portA che ha 4 ingressi ma stanzia sempre 8 bit, quindi un byte. L'uscita RA0 ha valore decimale 1 - RA1 vale 2 - RA2 vale 4 - RA3 Vale 8, cioè 2n dove n è il numero del bit e in questo caso dell'ingresso o dell'uscita. Spero che Ho stato spiegato
dott.cicala Inserita: 17 giugno 2016 Segnala Inserita: 17 giugno 2016 come...non sono stato abbastanza chiaro? e allora mi spiego meglio.... se facciamo la AND fra 00001111 e portB con il pulsante su RB0 premuto, leggendo il byte PortB avremo 00000001 AND 00001111= 00000001 = 1 dec - con RB1 premuto 00000010 AND 00001111= 00000010 = 2 dec con RB2 premuto 00000100 AND 00001111= 00000100 = 4 dec con RB3 premuto 00001000 AND 00001111= 00001000 = 8 dec se ponessimo a 1 RB7 avremo 10000000 AND 00001111= 00000000 Ora, se scriviamo 8 in nella porta RA otterremo che RA assumerebbe il valore binario 00001000 cioè si accenderebbe RA3 che vale 23 cioè 8...e così via switch alla fine è un commutatore che si posiziona solamente alla posizione definita dal valore associato al CASE e in quella posizione esegue l'istruzione presente.... ...quindi....non può non funzionare....
dott.cicala Inserita: 17 giugno 2016 Segnala Inserita: 17 giugno 2016 ora la domanda nasce spontanea.... come costruire un ciclotrone con una pila mini stilo da 1,5v....scarica?
gabri-z Inserita: 17 giugno 2016 Segnala Inserita: 17 giugno 2016 Quote come costruire un ciclotrone con una pila mini stilo da 1,5v....scarica? Semplice da dire ... la vendi come buona e scapi .. te ne procuri altre 10 quasi scariche e le vendi per buone ; cambi quartiere , dopo cinque giri cosi , cambi città , poi ripeti , e dopo 500 passi 1/10 , potrai provare di trovare uno sponsor per il ciclotrone ; a Lui conviene raccontare la Tua ascensione , sarà più fiducioso sapendo 'sta verità
Vicus Inserita: 18 giugno 2016 Autore Segnala Inserita: 18 giugno 2016 Comunque nello schema si usano RB4 RB5 RB6 ed RB7. Le modifiche al codice che ho fatto sono state: settare quei pin come ingressi, modificare la maschera in 0xf0, cambiare i valori in 224, 208, 176 e 112. Ci ho messo un po' a capire cosa e come però alla fine ci sono riuscito. Quello che mi ha messo fuori strada è questa dichiarazione: // Inputs sbit P1 at RB0_BIT; sbit P2 at RB1_BIT; sbit P3 at RB2_BIT; sbit P4 at RB3_BIT; che dubito serva a qualcosa. Ora devo solo inserire delle pause tra quando chiudo un uscita e abilito l'altra. Qualche suggerimento sull'istruzione "aspetta senza fare qualcosa".
dott.cicala Inserita: 18 giugno 2016 Segnala Inserita: 18 giugno 2016 Sono contento che ci sei riuscito. In effetti la dichiarazione di P1-P2-P3-P4 non serve a nulla perché in un secondo momento ho deciso di leggere e scrivere le porte in un colpo solo considerandole come dei Bytes come spiegato più sopra, visto che la funzione richiesta era alquanto elementare. Poi un po' di confusine devo ammettere di averla fatta, tra schema e codice....colpa dell'ora tarda che purtroppo non viene più indicata a fianco dei messaggi....la nuova piattaforma del forum ha eliminato le cose utili di quello vecchio...è il nuovo che avanza o gli avanzi del nuovo. Ora, disappunto a parte, sembra che la specifica di progetto sia cambiata. Oltre a quanto fatto vorresti introdurre un ritardo tra lo spegnimento di un'uscita e l'accensione di un'altra. Non c'è molto da modificare, bastano due/tre righe... Sarebbe interessante e costruttivo nei confronti di quanti hanno partecipato alla discussione, se pubblicassi la tua soluzione....prima che il tutto piombi nell'oblio e non ve ne rimanga più traccia.
Vicus Inserita: 18 giugno 2016 Autore Segnala Inserita: 18 giugno 2016 Poi lo faccio, la funzione C "aspetta senza fare niente" come si chiama?
dott.cicala Inserita: 18 giugno 2016 Segnala Inserita: 18 giugno 2016 Aspetta senza far niente?? Forse intendi..._delay(ms) ?
Vicus Inserita: 18 giugno 2016 Autore Segnala Inserita: 18 giugno 2016 Si vorrei dare un qualche ms prima di attivare la nuova uscita.
dott.cicala Inserita: 18 giugno 2016 Segnala Inserita: 18 giugno 2016 ma quale compilatore stai usando? Pubblica il codice
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