PIC16F84A Salve qualcuno puo indicarmi una subroutine che mi generi 5 ms di ritardo (delay) con quarzo 4 MHz ? la dovrei utilizzare per la gestione in multiplexer... Scritta in assembly...anche qualcosa di semplice decrementando qualche registro... non vorrei utilizzare il Tmr0...
voi solitamente quanti ms di ritardo utilizzate per il multiplex?
Re: Subroutine 5ms con quarzo 4 MHz 16F84A
Inviato: 1 apr 2015, 15:38
da Paolino
Puoi provare a visitare questa pagina. Inserendo i dati che vuoi tu (Fosc = 4MHz, ritardo di 5ms), ottieni qualcosa del tipo:
;4 cycles (including call) return ; Generated by http://www.golovchenko.org/cgi-bin/delay (December 7, 2005 version) ; Wed Apr 1 13:37:40 2015 GMT ; See also various delay routines at http://www.piclist.com/techref/microchip/delays.htm
Non so quanto possa essere preciso, qualche misura la farei.
Perché no vuoi scomodare il TMR0?
Ciao.
Paolo.
Re: Subroutine 5ms con quarzo 4 MHz 16F84A
Inviato: 1 apr 2015, 16:48
da carlomusumeci
non so non è sprecato utilizzare il tmr0 per il multiplexer? la cosa verrebbe piu semplificata? poi volevo sapere quanti ms usate solitamente per fare l'operazione del multiplex...5ms ? 100ms?
Re: Subroutine 5ms con quarzo 4 MHz 16F84A
Inviato: 1 apr 2015, 17:16
da Paolino
Dovresti illustrare che cosa devi multiplexzare. Display? Di che tipo? Oppure qualcos'altro?
Se fossero display, ad esempio 4, personalmente impiegherei un timer (TMR0 ad esempio) con la gestione dell'interrupt. Sull'evento overflow del timer, si scatena l'interrupt che permette di pilotare la linea multiplex desiderata.
Quantificare il tempo è ancora una questione da chiarire sulla base dell'applicazione. Con i display (ancora loro) devi garantire che ci siano una buona luminosità dei caratteri e l'assenza di sfarfallii (flickering), davvero fastidiosi. Se hai fino a 4 display, credo che 50ms può essere una base di partenza dalla quale poi scostarsi gradatamente per ottimizzare il tutto.
Ciao.
Paolo.
Re: Subroutine 5ms con quarzo 4 MHz 16F84A
Inviato: 1 apr 2015, 21:30
da carlomusumeci
Ciao Paolino grazie devo pilotare un riquadro pieno di led...per esempio prendo un quadro 4x4 = 16 led... ma che successivamente potrebbe diventare un 8x8 per visualizzare caratteri (lettere) piu chiari... li piloto tramite la sola portb... dal bit 0 al bit 3 piloto le basi da bit 4 a bit 7 piloto le linee orizzontali...
Dryden ha scritto:Non ti conviene fare una macro con dentro tutti i numeri da visualizzare e poi chiamare la macro all'interrupt?
se hai inteso scrivere che la macro verrebbe eseguita all'interno della routine di interrupt questo non costituisce proprio una corretta soluzione. Questo, naturalmente, a prescindere dal linguaggio che si utilizza.
Saluti
Re: Subroutine 5ms con quarzo 4 MHz 16F84A
Inviato: 2 apr 2015, 17:45
da carlomusumeci
Ciao,grazie della risposta...credo che la chiamata del ritardo lo messa al punto giusto...certamente poi verrà strutturata meglio la visualizzazione dei numeri con le macro..è giusto il codice che ho scritto?
Re: Subroutine 5ms con quarzo 4 MHz 16F84A
Inviato: 5 apr 2015, 16:04
da carlomusumeci
Grazie ragazzi sono riuscitto nella realizzazione del multiplexer...allego un video che ho girato...[url]https://www.youtube.com/watch?v=[/url]
inizialmente visualizzavo il numero '11' poi mi sono "divertito" e ho creato qualche gioco carino Grazie
Re: Subroutine 5ms con quarzo 4 MHz 16F84A
Inviato: 6 apr 2015, 8:23
da Paolino
Ciao carlomusumeci. Complimenti per la realizzazione
Una domanda: come hai poi realizzato la temporizzazione? RItardo fisso o interrupt di TMR0?