Vai Indietro   PcTuner Forum > Sezione Hardware > Programmazione PIC
PcTuner Overclock
Arcade Registrazione Blogs Regolamento Feedback FAQ Lista Utenti Calendario Segna come Letti

Ultimi 5 blog pubblicati su PcTuner Blog
Data Titolo

Rispondi
 
Strumenti Discussione Modalità Visualizzazione
Vecchio 08-02-2005, 15.08.24   #1
B&M Coasterman
 
L'avatar di  Matro
 

Iscritto da: 06-12-2003
Locazione: Padova
Messaggi: 8,929
Feedback: (1)
F.A.Q. sui PICmicro

Quante volte ci è capitato di perdere la testa per una settimana nella programmazione di un pic, per scoprire che era una fesseria che ci bloccava?
Con questo thread voglio raccogliere le principali f.a.q. riguardanti i PICmicro, con le domande che da tanto ci ponevamo e le risposte ai problemi più svariati in modo da non bloccarci nella stesura del nostro programma (e per evitare i soliti 3d di aiuto )

INDICE

1 Globali
2 Architettura
3 Periferiche
3.1 Input/Output
3.2 Timer
3.3 A/D Converter
4 Link utili


1. Globali

Cos'è un PICmicro, per gli amici PIC?

Un PIC è un circuito integrato, che al suo interno ha tutta la circuiteria necessaria per far parte della grande famiglia dei microcontrollori. NON è quindi un microprocessore, poiché il microcontrollore ha una serie di periferiche mancanti nel microprocessore. Per una spiegazione più dettagliata, fare riferimento al corso.

Ho sentito che si programmano col computer: che linguaggi posso usare?

I linguaggi utilizzabili sono molti: si va dall'assembler, al c, basic e tanti altri. Non esiste il linguaggio ideale: ognuno ha i suoi pro e contro.
Ad esempio, l'assembler è ostico da imparare e programmare per un newbie, ma ha il vantaggio di essere "gratis", di poter essere trovato in molti source e tutorial e di poter fare applicazioni che con altri linguaggi sarebbe difficile.
Il C è una via di mezzo: coniuga la relativa facilità di programmazione con il fatto di trovare qualche compilatore gratis.
Qualche, infatti i compilatori più completi sono a pagamento.
Il basic invece è il linguaggio più semplice, ma in questo caso nessun compilatore free ci verrà incontro.

Ho compilato il mio bel file *.hex, ora come lo inserisco nel PIC?

Per poter inserire il nostro file esadecimale nel pic, abbiamo bisogno di un supporto hardware e software. Hardware perché abbiamo bisogno di un programmatore (ludipipo, propic2 clone, ecc), e software come interfaccia per poter usare il programmatore con il nostro pc. I software dipendono in base al programmatore scelto: ce ne sono di universali come ICprog, altri si usano solo con certi programmatori (es: EpicWin funziona solo con programmatori paralleli).

2. Architettura

2.1. Memoria

Il pic che sto usando ha 400 byte di ram disponibili, eppure se inserisco tot variabili che non superano "x" bytes il compilatore (o l'assemblatore) mi da errore!

La memoria, in un pic, è divisa solitamente in 4 banchi. Questi si selezionano tramite due bit (2^2=4) e ci permettono di sfruttare tutta la memoria.

3. Periferiche

3.1. Input/Output

Ho provato in mille modi, ma la porta RA4 del mio 16F84 si ostina a non dare segno di output!

La porta RA4 di questo PICmicro, poiché è condivisa con il modulo timer, è di tipo open-collector (a collettore aperto): bisognerà quindi inserire una resistenza di pull-up per usarla come un normale output.

Non funzionano tutte le porte x del mio pic. Ah, ha l'adc!

Ecco, i pin di entrata dell'adc sono gli stessi della porta x usata come I/O digitale; Bisogna quindi impostare (solitamente tramite il registro ADCON1) i pin voluti come ingresso o uscita digitali, poiché di default sono impostati come ingresso analogico.

3.2. Timer

Perché il mio cronometro/orologio/xxx non riesco a farlo preciso preciso?

La risposta sarebbe lunghetta, qui. In qualsiasi caso, comunque, c'è qualcosa di errato nel programma che non aggiorna i secondi proprio alla cadenza di 1hz. Ma fin qui ci eravamo arrivati tutti
isogna innanzitutto controllare di NON mettere assolutamente mano al registro TMRx (dove x è il n° del timer) per ridurre il conteggio e adattarlo al proprio quarzo: infatti appena si modifica questo registro, prima di cominciare nuovamente ad incrementarsi passerà qualche ciclo di clock, prezioso per i nostri timings.
Se siamo sicuri che il programma sia giusto, c'è anche da chiedersi se il quarzo dia la frequenza giusta.

3.3. A/D Converter

Perché quando metto l'output alto a qualche porta il valore dell'adc sballa?

Tipico caso di tensione di alimentazione poco stabilizzata (mi è capitato anche con alimentatori perfettamente stabilizzati, ma switching). Spesso succede quando la Vref+ e Vref- sono prese direttamente dal positivo e dalla massa del PICmicro: alzando un pin di output, la tensione di alimentazione del PIC si abbassa (anche di poco), ottenendo quindi letture errate.

4. Link utili

- Guida alla programmazione in assembly --> Guida al linguaggio assembly, di Camillo Ferrari
- Guida alla programmazione in PICBASIC --> Introduzione al PicBasic, di Massimiliano Pischedda
- FiserTek --> Il "best seller" per programmare in C
- Pic By Example --> La controparte che insegna l'assembly
__________________

Ultima Modifica di Matro : 26-03-2007 20.59.51.
Matro Non in Linea   Rispondi Citando

Advertising
Vecchio 15-09-2006, 16.18.29   #2
B&M Coasterman
 
L'avatar di  Matro
 

Iscritto da: 06-12-2003
Locazione: Padova
Messaggi: 8,929
Feedback: (1)
Aggiunti i link e sistemato qualche punto, se avete qualcosa da segnalare lo aggiungerò
__________________
Matro Non in Linea   Rispondi Citando
Vecchio 22-03-2007, 13.51.43   #3
Registered User
 

Iscritto da: 22-03-2005
Locazione: Genova
Messaggi: 619
Feedback: (0)
Ciao Matro,
volevo solo segnalarti che qualche compilatore free di basic c'e' anche se ha dei limiti di codice ed e' il Mikrobasic, tra l'altro c'e' anche il Microc e Micropascal della Mikroelettronica.

A presto
aduri Non in Linea   Rispondi Citando
Vecchio 22-03-2007, 14.03.03   #4
Super Moderator
 
L'avatar di  FluidGuitar
 

Iscritto da: 04-01-2001
Locazione: Torino
Messaggi: 4,024
Feedback: (0)
Vorresti aggiungere anche le nostre guide?

http://www.pctuner.net/articoli/Pic/...(Parte_Prima)/

http://www.pctuner.net/articoli/Pic/...o_in_PICBASIC/
__________________

Tu non sai niente, Jon Snow!
FluidGuitar Non in Linea   Rispondi Citando
Vecchio 02-10-2008, 16.58.58   #5
Registered User
 

Iscritto da: 19-06-2006
Messaggi: 282
Feedback: (0)
Sarebbemolto utile aggiungere in queste FAQ un programma di esempio semplicissimo (il classico "hello world"... che in PIC equivale a... far lampeggiare un led), ma presentato nei vari linguaggi: ASM, C, e un paio di BASIC.
Naturalmente, anche se semplice, il listato dovrebbe essere ampiamente commentato...

Io sono 3 giorni che cerco un listato base, ma ne ho trovati una decina diversi, ognuno dei quali "pensa" che sia inutile commentare una parte del listato... per cui alla fine non riesco a capire quali sono le cose fondamentali da fare in un programma di base.
Allora, una cosa da fare è impostare la configuration word, e fin qui ok; ma poi i vari "ORG", "INCLUDE", "DEFINE" e "EQU" quand'e' che servono? sempre, mai, a volte....
e a COSA servono?
__________________
-- JumpJack --
------------------
Meglio sys 16384 o sys 64738?
jumpjack Non in Linea   Rispondi Citando
Vecchio 02-10-2008, 19.57.38   #6
Registered User
 

Iscritto da: 29-10-2006
Messaggi: 1,548
Feedback: (0)
Quote:
Originariamente inviato da jumpjack Visualizza Messaggio
ma poi i vari "ORG", "INCLUDE", "DEFINE" e "EQU" quand'e' che servono? sempre, mai, a volte....
e a COSA servono?
per questi basterebbe consultare il manuale di MPASM per sapere dove, come e quando vanno usati...
Comunque queste FAQ sono fatte per risolvere piccoli dubbi/problemi che possono occorrere agli inizi, non è una guida alla programmazione; piuttosto puoi consultare le millemila guide online (tipo la mia ), o comprarti un libro!!
__________________
Paolo BB Conte - Utente PIC Dipendente
DEV - L'Elettronica Open Source
Le mie Foto

Ultima Modifica di BitBerzerkir : 02-10-2008 20.04.57.
BitBerzerkir Non in Linea   Rispondi Citando
Vecchio 03-10-2008, 08.39.29   #7
Registered User
 

Iscritto da: 19-06-2006
Messaggi: 282
Feedback: (0)
Quote:
Originariamente inviato da BitBerzerkir Visualizza Messaggio
per questi basterebbe consultare il manuale di MPASM per sapere dove, come e quando vanno usati...
Comunque queste FAQ sono fatte per risolvere piccoli dubbi/problemi che possono occorrere agli inizi, non è una guida alla programmazione; piuttosto puoi consultare le millemila guide online (tipo la mia ), o comprarti un libro!!
non mi serve una guida alla programmazione: lo so come si programma in assembly, e ci sono millemila guide e i datasheet.... ma le impostazioni a inizio programma sono cosi' "banali" che vengono date completamente per scontate!
__________________
-- JumpJack --
------------------
Meglio sys 16384 o sys 64738?
jumpjack Non in Linea   Rispondi Citando
Vecchio 09-03-2009, 10.35.23   #8
Registered User
 

Iscritto da: 01-10-2007
Messaggi: 18
Feedback: (0)
un how-to per neofiti

ciao, ho scritto un how-to su come connettere un PIC 16F627
al pc tramite porta seriale.

Ho descritto nel dettaglio tutte le connessioni e ho riportato il codice C completo per programmare il PIC.

L'articolo è su
http://digilander.libero.it/giampow/.../pic_rs232.pdf

Ciao
Giampaolo
giampow Non in Linea   Rispondi Citando
Vecchio 09-03-2009, 20.53.37   #9
Registered User
 

Iscritto da: 19-06-2006
Messaggi: 282
Feedback: (0)
Quote:
Originariamente inviato da giampow Visualizza Messaggio
ciao, ho scritto un how-to su come connettere un PIC 16F627
al pc tramite porta seriale.
interessante. Suppongo vada bene anche per 628a?
__________________
-- JumpJack --
------------------
Meglio sys 16384 o sys 64738?
jumpjack Non in Linea   Rispondi Citando
Vecchio 11-03-2009, 11.56.21   #10
Registered User
 

Iscritto da: 01-10-2007
Messaggi: 18
Feedback: (0)
Quote:
Originariamente inviato da jumpjack Visualizza Messaggio
interessante. Suppongo vada bene anche per 628a?
sì, dovrebbe andare bene anche per il 16f628A,
le differenze con il 16F627 sono minime (credo che riguardino solo la dimensione della ROM).

Comunque in HI-LITE puoi scegliere da interfaccia il pic che usi.

Se hai consigli da darmi per migliorare l'articolo, te ne sono grato.

Ciao
giampow Non in Linea   Rispondi Citando
Vecchio 15-03-2009, 15.24.51   #11
Registered User
 

Iscritto da: 19-06-2006
Messaggi: 282
Feedback: (0)
Quote:
Originariamente inviato da giampow Visualizza Messaggio
sì, dovrebbe andare bene anche per il 16f628A,
le differenze con il 16F627 sono minime (credo che riguardino solo la dimensione della ROM).

Comunque in HI-LITE puoi scegliere da interfaccia il pic che usi.

Se hai consigli da darmi per migliorare l'articolo, te ne sono grato.

Ciao
Credo ci sia un'imprecisione sull'oscillatore: o si usa quello interno, OPPURE metti un quarzo, mentre nel tutorial le due cose sembrano coincidere (o forse non ho capito io).
E pàoi farebbe sicuramente comodo avere uno stampato della "breadboard", piuttosto che una foto, oppure un elenco delle connessioni usate, perche' dalle foto è quasi impossibile capire come vanno collegati i fili!
E poi mi chiedevo se sarebbe possibile realizzare il circuito senza RS-232, visto che per me è impossibile trovarlo senza ordinarlo: magari con una seconda alimentazione, a 12V o quello che serve?

Quanto al listato, nella variabile TEST posso inserire quello che mi pare?

P.S:
Ah, sarebbe anche utile capire come cavolo si usa HI-TIDE... Come tutte le "prospettive" di Eclipse, non si capisce una mazza di come si usa!!!
__________________
-- JumpJack --
------------------
Meglio sys 16384 o sys 64738?

Ultima Modifica di jumpjack : 15-03-2009 15.50.59.
jumpjack Non in Linea   Rispondi Citando
Vecchio 26-03-2009, 13.24.22   #12
Registered User
 

Iscritto da: 25-03-2009
Messaggi: 1
Feedback: (0)
Salve a tutta la comunita' ho notato che i link proposti in questo messaggio non mi funzionano, portano a pagina non trovata, sono io che sono imbranato
mi interessava leggere le guide che stavate proponendo sulla programmazione con PicBasic.
elettrone Non in Linea   Rispondi Citando
Rispondi Per le vostre immagini su questo forum potete usare PcTunerUp!
Iscriviti gratuitamente alla nostra newsletter.


Utenti attualmente attivi che stanno leggendo questa discussione: 2 (0 utenti e 2 visitatori)
 
Strumenti Discussione
Modalità Visualizzazione

Regole di scrittura
non Puoi inserire messaggi
non Puoi rispondere ai messaggi
non Puoi inviare allegati
non Puoi modificare i tuoi messaggi

codice vB è Attivo
Smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Disattivato
Pingbacks are Disattivato
Refbacks are Disattivato
Vai al Forum


Tutti gli Orari sono GMT +1. Attualmente sono le 18.18.29.


Powered by vBulletin Versione 3.6.12
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright © 2009 - Master New Media S.r.l. a socio unico - P.I. 02947530784. Tutti i diritti di proprietà letteraria e artistica sono riservati- Privacy
www.pctuner.net è testata telematica registrata presso il Tribunale di Torino, n. 39 del 07.05.2008, Editore Master New Media S.r.l.