Antonionni Inserito: 7 ottobre 2008 Segnala Inserito: 7 ottobre 2008 (modificato) Ciao a tutti devo fare un progettino per un esame, che consiste nel leggere un dato dalla seriale, elaborarlo e spedirlo su un altra seriale.Ho fatto una schedina che fà uso del max232 che si interfaccia con la PIC 18F452.Però durante il test delprogramma (che funzionicchia) succede qualcosa di strano: dopo qualche decina di secondi il tutto si pianta, ho notato che se tocco il filo collegato al pin 1 riprende a funzionare, ma non è mal saldato il filo, è come se ci fosse qualche interferenza.Poi ho configurato l'RB4 come ingresso che attiva un interrupt quando portato a massa, però spesso il programma entra nella funzione di interrupt senza che io prema il relativo pulsante.C'è qualche accorgimento per esempio per lo stack o altro? Come mai ottengo quei comportamenti strani?? Ho usato un quarzo che avevo in laboratorio di 4,43MHz, forse devo usare un quarzo da 4MHz? O è meglio uno da 20??Grazie infinite a chiunque mi darà una mano, perchè sono un pò disperato ... Modificato: 7 ottobre 2008 da Antonionni
Livio Orsini Inserita: 8 ottobre 2008 Segnala Inserita: 8 ottobre 2008 (modificato) Se hai usato un contenitore DIP il pin 1 corrisponde allo MCLR. Da quello che scrivi sembra di capire che il pin è libero da collegamenti, cosa da non farsi assolutamente.Questo pin deve essere collegato alla tensione positiva tramite una resistenza di circa 4k7.Tutti i pins, se non collegati ad altri dispositivi, devono essere chiusi a 0 a +V tramite una resistenza di circa 4k7.Se li lasci liberi acchiappano disturbi e, se sono pins che funzionano come interupts, possono mandarti il programma "a farfalle". Modificato: 8 ottobre 2008 da Livio Orsini
Antonionni Inserita: 8 ottobre 2008 Autore Segnala Inserita: 8 ottobre 2008 Grazie Livio era proprio quello (il pin 1), ci ero arrivato dopo che avevo notato che "toccandolo" il uP dava i numeri. L'ho messo a +Vcc con una R10k ed ora è stabile. Anzi, come consigli tu domani metto a +Vcc (con la R) gli altri pin, in particolare quelli della RB.Senti un altra cosa:vorrei implementare il watchdog. Nel main del programmino non ho nulla perchè uso gli interrupt. Come lo implemento? Incremento una variabile nel main e quando raggiunge un certo valore resetto il watchdog o ci sono altri metodi?Altra cosa ... il parametro WDTPS che significato ha e come si calcola/imposta?? Grazie ancora ...
Livio Orsini Inserita: 9 ottobre 2008 Segnala Inserita: 9 ottobre 2008 Cito a memoria, dovrebbe riguardare il tempo di watch dog, leggi l'apposito capitolo sul manuale del micro.Se non vuoi usare il dispositivo interno al micro, puoi fare un CCZ (computer crazy) molto sicuro che segnala anche un'eventuale loop perverso in una routine di interrupt.Prendi un porta libera del micro. Con questa piloti un raddrizzatore a valore di picco. La tensione ricavata la metti in ingresso ad un trigger di scmih. Poi nel main program dai un impulso alto della durata di alcuni us. Se l'uscita non viene rinfrescata ogni tot ms (dipende dal valore di capacità usato) l'uscita del trigger va a zero indicando che c'è tropporitardo.
Antonionni Inserita: 9 ottobre 2008 Autore Segnala Inserita: 9 ottobre 2008 Grazie, molto gentile.Ora mi cimento!
Antonionni Inserita: 10 ottobre 2008 Autore Segnala Inserita: 10 ottobre 2008 Ho provato a cercare qualche info in più su questa cosa, ma non ho trovato nulla!Hai mica qualche link???Grazie. ..
Livio Orsini Inserita: 11 ottobre 2008 Segnala Inserita: 11 ottobre 2008 Non so se esiste documentazione in proposito. L'acronimo CCZ è un termine usato di chi fa assi e posizionatori.COmunque la tecnica è quella che ti ho descritto. Potrei anche metterei in linea il circuitino Hw, non è niente di eccezionale.
Antonionni Inserita: 11 ottobre 2008 Autore Segnala Inserita: 11 ottobre 2008 Bhè ... se non ti scoccia ... sai che figura farei col prof ...Altrimenti grazie lo stesso!!
Livio Orsini Inserita: 12 ottobre 2008 Segnala Inserita: 12 ottobre 2008 (modificato) Questo è il circuitino. Con un impulso largo 100us e periodo 25ms il circuito da funzionamento OK. Se allunghi il ritardo tra un impulso ed il successivo a 30ms l'uscita da non OK.Come ulteriore niglioria puoi pensare ad una memoria dello stato non OK, magari con un flip flop "D", in modo che al primo loop troppo lungo del micro scatti l'allarme e permanga..Variando i valori di RC cambia anche il tempo d'intervento.Ovviamente il generatore d'impulsi è costuito dalla porta del micro. Modificato: 12 ottobre 2008 da Livio Orsini
Antonionni Inserita: 12 ottobre 2008 Autore Segnala Inserita: 12 ottobre 2008 Grazie, sei stato molto gentile.
Antonionni Inserita: 28 ottobre 2008 Autore Segnala Inserita: 28 ottobre 2008 Stavo rivedendo questo circuitino e mi è sorta una domanda: l'uscita del trigger di cui parli, dove la mando? Ad un ingresso del PIC?
Livio Orsini Inserita: 28 ottobre 2008 Segnala Inserita: 28 ottobre 2008 No deve andare ad un circuito esterno. Per esempio nelle applicazioni industriali taglia le uscite e da l'allarme. In alcuni casi fa partire l'emergenza.
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