Vai al contenuto
PLC Forum


Puntatori Con I Pic - AIUTOOOOOOOO????


Kledia

Messaggi consigliati

Salve a tutti,

è da un po di giorni che sto cercando di imparare a programmare i pic in assembler ma ho proprio difficoltà a capire e saper utilizzare i puntatori(ovvero l'indirizzamento indiretto)!

Tra pochi giorni ho un esame all'univ e ci sarà sicuramente da scrivere un bel programma per il pic ed ho bisogno urgentemente di una mano.

Sareste cosi gentili??'

Accetto aiuti sotto qualunque forma(esempi,documenti,testi...spiegazioni)

grazie e.....conto su di voi!!!!

Link al commento
Condividi su altri siti


L'indirizzamento indiretto usa due registri che sono INDF e FSR.

Si deve caricare in FRS l'indirizzo della locazione di memoria che vuoi leggere o scrivere.

Poi si scrive in INDF il valore che vuoi passare nella locazione appena puntata in FSR.

piccolo esempio per cancellare le pos di memoria da 20h a 2fh che trovi nel data sheet.

                MOVLW 0x20;carica l'indirizzo
                MOVWF FSR;della RAM
NEXT        CLRF INDF;cancella la posizione
                INCF FSR,F;incrementa il puntatore
                BTFSS FSR,4;e' ultima locazione?
                GOTO NEXT;no cancella prossima
CONTINUE  ;si continua

Link al commento
Condividi su altri siti

grazie dlgcom ma questo lo avevo già trovato :( !

Mi servirebbe una mano in più.

Ho trovato(sempre in rete) degli esempi all'interno di alcuni programmi in assembler ma ho difficoltà a comprenderli completamente.............UFFI!

Mi servirebbe un aiuto di un esperto/appassionato che sarebbe disposto ad aiutarmi a comprendere............so di chiedere troppo ma non riesco ad uscirne fuori e il tempo per il mio esame stringe!

Link al commento
Condividi su altri siti

Si il tempo stringe... ho ancora una settimana!

In un compito si chiedeva di scrivere una routine in modo da fare comunicare due pic(una per il trasmettitore ed una per il ricevitore).Il problema era che uno acquiseva 4 tipi di segnali,l'altro li riceveva e (in un modo scelto da me) doveva visualizzare il risultato.

L'unico suggerimento era di utilizzare i puntatori....!

Il collega che mi spiegava alcune cose ha passato l'esame lo scorso appello ed ora per mia sfortuna sono rimasta a sbatterci la testa da sola.....ci fosse almeno un testo chiaro(semplice) da cui imparare!!!

comunque scusa per lo sfogo....torno a studiare!

Link al commento
Condividi su altri siti

Forse i tuoi problemi sono diversi dal semplice uso dei puntatori.

Non dici niente su come vuoi fare comunicare i due dispositivi: in modo parallelo? in modo seriale? E se usi il modo seriale intendi servirti della modalità sincrona o asincrona?

Così a sensazione io riterrei adatto l'uso di modalità seriale sincrona con il bus SPI, di cui i PIC sono dotati.

Però potresti benissimo usare un metodo parallelo, se i due dispositivi sono vicini.

Prova a descrivere meglio quello che intendi fare.

Certo che se avessi incominciato a pensarci un poco per tempo............

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Come dice Livio , i puntatori sono l'ultimo tuo problema .

Devi iniziare a dividere in blocchi il tuo progetto .

potresti dividerlo cosi'

blocco 1 : acquisizione dei 4 segnali

- se sono analigici devi configurare gli ingressi AD, fare una scansione e memorizzarli in variabili pronte a essere spedite quando necessario.

blocco 2 : trasmissione dati

- creare routine di trasmissione tra i due PIC , la cosa piu' semplice e' usare rs232. con pic della serie 16f87x hai gia una UART interna che ti facilita molto le cose.

blocco 3 : routine di visualizzazione

- non dici se lo vuoi su display lcd o su pc o altro.

Adesso io non so' quale e' il tuo livello di conoscenza dei pic.

Dei tre blocchi quali sei in grado di fare?

Non per scoraggiarti , ma un programmino cosi' se non hai niente di pronto non lo fai in una settimana.

Link al commento
Condividi su altri siti

ifachsoftware

Penso che il fatto di usare dei puntatori ti sia stato richiesto come logico modo per approcciare tale problema :

Se devi trasferire dei dati da un pic all'altro (per esempio in seriale , ma la stessa logica vale anche in maniera parallela ...) ti conviene usare un buffer di x caratteri in cui inserisci i dati man mano che ti arrivano (e per far questo van bene i puntatori) , per immagazzinarli ad ogni interrupt dato dal pic al ricevimento di un carattere prendi il dato e lo metti nella locazione di memoria puntata dal tuo puntatore , che verra' incrementato di 1 per essere pronto per immagazzinare il successivo.

Quando ti sono arrivati i 4 caratteri li vai a processare e resetti il puntatore a 0.

Il fatto di immagazzinare i caratteri su interrupt e' fatto per non perdere informazioni , in quanto che il PIC ha un buffer di un solo carattere e se non lo salvi velocemente , rischi di perderlo ed ottenere l'errore di buffer overrun.

Ciao :)

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...