BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   PIC12f683 e configurazione (https://www.baronerosso.it/forum/circuiti-elettronici/186827-pic12f683-e-configurazione.html)

Alfa_life 19 settembre 10 12:53

PIC12f683 e configurazione
 
Buongiorno a tutti , ho qualche problema con la configurazione iniziale del 12f683.
Ho gia provato diversi modi ma non c'è verso di vedere il programma girare.
Il programma è semplice, non uso ne convertitore AD ne Vref , ho il classico quarzo da 4 MHz con i 2 condensatori sugloi appositi piedini e devo pilotare GPIO0 1 e 2 semplicemente in digitale intervallando livelli logici 1 e 0 da alcuni delay_ms(xxx) e poi ripetere il ciclo.
Devo muovere 3 servi ciclicamente e continuamente.
Il programmatore riconosce il pic , vede se è gia presete un software e lo svuota, carica quello nuovo ma quando do corrente alla scheda non fa nulla..
Quanda inizio un nuovo progetto con mikrobasic ci sono delle impostazioni da eseguire e non so che configurazione mettere per poter avere il PIC in un sorta di "defult" che mi permette di eseguire vari programmi..
Con il 16F876a spuntavo (wtd off) , (xt osc on) e funziona tutto e ho fatto diversi tipi di software dalla comunicazione rs232 a usb e movimento servi come sopra ecc..
Come devo impostare il 12f683 ??? Qualcuno avrebbe voglia di darmi qualche dritta ???? Grazie mille a tutti ..

illez 19 settembre 10 13:26

Citazione:

Originalmente inviato da Alfa_life (Messaggio 2228897)
Quanda inizio un nuovo progetto con mikrobasic ci sono delle impostazioni da eseguire e non so che configurazione mettere per poter avere il PIC in un sorta di "defult" che mi permette di eseguire vari programmi..
Con il 16F876a spuntavo (wtd off) , (xt osc on) e funziona tutto e ho fatto diversi tipi di software dalla comunicazione rs232 a usb e movimento servi come sopra ecc..
Come devo impostare il 12f683 ??? Qualcuno avrebbe voglia di darmi qualche dritta ???? Grazie mille a tutti ..

Qui cosa hai impostato?
Il watchdog timer l'hai levato?

Alfa_life 19 settembre 10 14:47

si ho fatto come per il 16f876a ma con questo pic non funziona e non so cos' altro devo selezionare ad esempio nel 16f876a non devo decidere della presenza o meno del "masterclear", dove io ho collegato la classica resistenza di 4,7k a vcc 5V . vedro di postare anche immagine del circuito .. probabilmente ho sbagliato altro e non me ne rendo conto..

questo il testo del programma

program servi_mover
dim x as byte
dim y as byte
main:
trisio.0=0
trisio.1=0
trisio.2=0
y=40
while true
for x= 0 to y
gpio.0=0
gpio.1=0
gpio.2=0
delay_ms(20)
gpio.0=1
gpio.1=1
gpio.2=1
delay_us(1500)
next x
for x= 0 to y
gpio.0=0
gpio.1=0
gpio.2=0
delay_ms(20)
gpio.0=1
gpio.1=1
gpio.2=1
delay_us(600)
next x
for x= 0 to y
gpio.0=0
gpio.1=0
gpio.2=0
delay_ms(20)
gpio.0=1
gpio.1=1
gpio.2=1
delay_us(2400)
next x
gpio.0=0
gpio.1=0
gpio.2=0
wend
end.

praticamente 3 posizioni fisse che i servi raggiungono e continuano a ripetere , nulla di complesso..

Alfa_life 19 settembre 10 15:09

1 Allegato/i
schema elettrico:

alimentazione stabilizzata a 5v..

diodo e condensatore su alimentazione del pic per non avere problemi con eventuali ritorni dei servi e garantire alimentazione continua anche durante gli spunti dei servi..

condensatori sulle alimentazioni dei servi sempre per sopperire agli assorbimenti negli spunti ..

quarzato e con resistenza per masterclear..

Alfa_life 19 settembre 10 15:14

2 Allegato/i
Configurazione disponibile ad inizio progetto :

Cosa devo spuntar per vedere funzionare il tutto ??

romoloman 19 settembre 10 15:57

Ti consiglio due cose, anche se non ho avuto modo per ragioni di fretta di vedere il tuo circuito.
1) il 12F683 ha un oscillatore interno abbastanza preciso fino a 8Mhz perchè ti devi sbattere a metterci un quarzo ?
2) esiste un bel programmino che si chiama pic simulator ide se il programma gira li allora il problema è nel circuito..

illez 19 settembre 10 17:01

Citazione:

Originalmente inviato da Alfa_life (Messaggio 2229036)
Configurazione disponibile ad inizio progetto :

Cosa devo spuntar per vedere funzionare il tutto ??

Io inizierei spuntando wdt_off e _xt_osc (non usi il watchdog e hai il quarzo esterno a 4mhz se non ho capito male)

Prova e poi vediamo.

[edit]
non uso il basic ma ho dato un'occhiata veloce al codice, non mi sembra s bagliato.
non ho mai usato nemmeno il 12F683: romoloman ti dice che ha un oscillatore interno preciso: se è così leva pure il quarzo e spunta (vado a naso non conoscendo il basic) _intosc (e deseleziona _xt_osc, ovviamente)

romoloman 19 settembre 10 17:40

Non uso mikrobasic ma picbasic pro..
Non è che gli devi specificare da qualche parte almeno la frequenza del quarzo che hai montato ?
In picbasic pro ho una declare tipo XTAL 4 per specificare la frequenza.

Normalmente nei pie programmi con i 12F629/675/683 uso le seguenti opzioni:
INTRC_OSC_NOCLKOUT: oscillatore interno abilitato non riportato su nessun pin (in questo modo si recuperano i pin GP4 e GP5)
WDT_OFF: Watchdog timer off
CP_OFF: codice non protetto
CPD_OFF: dati non protetti
RTE_ON: ritardo in accensione abilitato
BODEN_OFF: reset su caduta di tensione disabilitato
MCLRE_OFF: Master Clear disabilitato (recupero una linea)

Credo qualcosa di analogo debba esistere anche sul Mikrobasic.

italo.driussi 19 settembre 10 21:03

Citazione:

Originalmente inviato da romoloman (Messaggio 2229173)
Non uso mikrobasic ma picbasic pro..
Non è che gli devi specificare da qualche parte almeno la frequenza del quarzo che hai montato ?
In picbasic pro ho una declare tipo XTAL 4 per specificare la frequenza.

Normalmente nei pie programmi con i 12F629/675/683 uso le seguenti opzioni:
INTRC_OSC_NOCLKOUT: oscillatore interno abilitato non riportato su nessun pin (in questo modo si recuperano i pin GP4 e GP5)
WDT_OFF: Watchdog timer off
CP_OFF: codice non protetto
CPD_OFF: dati non protetti
RTE_ON: ritardo in accensione abilitato
BODEN_OFF: reset su caduta di tensione disabilitato
MCLRE_OFF: Master Clear disabilitato (recupero una linea)

Credo qualcosa di analogo debba esistere anche sul Mikrobasic.

Uso anch' io da poco il picbasic pro, per adesso con il 16f84, ed ho ordinato un paio di 16f628.

Queste opzioni sono valide anche per i miei pic?

romoloman 19 settembre 10 21:25

Citazione:

Originalmente inviato da italo.driussi (Messaggio 2229386)
Uso anch' io da poco il picbasic pro, per adesso con il 16f84, ed ho ordinato un paio di 16f628.

Queste opzioni sono valide anche per i miei pic?

Per il 16F84 di sicuro no...
Non ha oscillatore interno...
Per il 16F84 normalmente uso

Device 16F84A
Declare XTAL 4

Per il 16F628 potrebbero anche andare visto che ha oscillatore interno..

Alfa_life 20 settembre 10 04:11

Citazione:

Originalmente inviato da romoloman (Messaggio 2229089)
1) il 12F683 ha un oscillatore interno abbastanza preciso fino a 8Mhz perchè ti devi sbattere a metterci un quarzo ?
2) esiste un bel programmino che si chiama pic simulator ide se il programma gira li allora il problema è nel circuito..

Non c'è un motivo preciso, ho sempre fatto tutti gli schemi con quarzo e anche in questo c'è andato in automatico senza controllare la presenza del oscillatore interno in quanto mi bastano 3 pin liberi, in oltre pensavo che mantenendo stessa tipologia di circuito potevo mantenere stessa configurazione ed invece non è cosi, con wdt_off e xt _osc_on , non funziona..
Anche in mikrobasic si definisce la frequenza nell apposita casella, unica parte della configurazione che credo di non aver sbagliato, in quanto ho sempre scritto 4 ed è sempre andata bene, comunque ricontrollo se bisogna scrivere il valore in MHz per maggiore sicurezza, poi provo comunque ad eliminare il quarzo e il master clear per provare la tua configurazione sperando che cominci a funzionare..
Il programma di cui parli simula i diversi dispositivi o controlla semplicemente se il software è corretto??
Perche lo stesso software sul 16f876a funziona, ovviamente invertendo GPIO.n con portc.n , e invertendo trisio.n=0 con trisc.n=0 . dove n sta per il numero della porta.

illez 20 settembre 10 07:33

Citazione:

Originalmente inviato da Alfa_life (Messaggio 2229838)
Perche lo stesso software sul 16f876a funziona, ovviamente invertendo GPIO.n con portc.n , e invertendo trisio.n=0 con trisc.n=0 . dove n sta per il numero della porta.

Non conoscendo il mikrobasic potrei dire una solenne baggianata, ma perché non provi ad indirizzare i pin come porta.n???
Se lo compila, dovrebbe essere giusto anche come hai scritto tu, però...:rolleyes:
provare non costa nulla

romoloman 20 settembre 10 07:54

Citazione:

Originalmente inviato da Alfa_life (Messaggio 2229838)
Il programma di cui parli simula i diversi dispositivi o controlla semplicemente se il software è corretto??

No il software emula anche un discreto numero di dispositivi hardware compresi un generatore d'impulsi in ingresso un oscilloscopio, moduli LCD etc etc inoltre ha integrato un suo compilatore basic
lo puoi vedere al seguente link
PIC Simulator IDE with Basic Compiler, Assembler, Disassembler and Debugger

La licenza ad uso personale costa 39€ e secondo me vale tutti i soldi che costa, puoi scaricare il software ti funziona per 30 volte in versione demo

illez 20 settembre 10 12:32

Per curiosità ho installato il mikrobasic e il simulatore;
il programma non funziona, accende e spegne solo una porta :blink:

In pratica le istruzioni
gpio.0=1
gpio.1=1
gpio.2=1

accendono la porta 0, poi 1 (e si spegne la 0) e poi 2 (e si spengono le altre 2)
romoloman, come te lo spieghi??

In ogni caso, mi funziona se scrivo
GPIO=7
oppure
GPIO=0

bo'...:unsure:

romoloman 20 settembre 10 13:17

prova ad invertire l'ordine ovvero parti dalla gpio.2 e scendi alla gpio.0

Alfa_life 20 settembre 10 13:22

Citazione:

Originalmente inviato da illez (Messaggio 2230118)
Per curiosità ho installato il mikrobasic e il simulatore;
il programma non funziona, accende e spegne solo una porta :blink:

In pratica le istruzioni
gpio.0=1
gpio.1=1
gpio.2=1

accendono la porta 0, poi 1 (e si spegne la 0) e poi 2 (e si spengono le altre 2)
romoloman, come te lo spieghi??

In ogni caso, mi funziona se scrivo
GPIO=7
oppure
GPIO=0

bo'...:unsure:


Funziona ...

Grazie grazie grazie ..


Utilizzando gpio = 0 e gpio = 7 intervallandoli degli appositi delay i servi si muovono ..

E impostando master_clear_0ff e osc_int_on funziona anche senza quarzo e ho 3 pin liberi in piu per altre utenze..

grazie a tutti ..
poi quando romoloman risponderà a illez vedremo di capire come mai accada questo..

non posso scrivere port.n nel 12f683 perche il 16f876a ha da datasheet 3 porte ( A B C ) relativemante con 6 pin , 8 pin e 8 pin , mentre il 12f683 ne ha solo una e non si chiama nemmeno porta A ma solo GPIO0 , 1 , 2 , 3 ecc ..

Comunque per ora tutto risolto , la cosa si complicherà un po quando dovrò far muovere i 3 servi con movimenti diversi ..

Grazie ancora a tutti . .

illez 20 settembre 10 13:31

Citazione:

Originalmente inviato da romoloman (Messaggio 2230172)
prova ad invertire l'ordine ovvero parti dalla gpio.2 e scendi alla gpio.0

idem, vale solo l'ultima.

Ho googlato un pochino ma non ho trovato possibili spiegazioni; ho guardato l'assembly, il codice prodotto è:
$000F $1105 BCF GPIO, 2
$0010 $1085 BCF GPIO, 1
$0011 $1005 BCF GPIO, 0

Non sono un guru dei PIC, ma questa cosa non me la spiego

romoloman 20 settembre 10 13:31

Citazione:

Originalmente inviato da Alfa_life (Messaggio 2230180)
Funziona ...

grazie a tutti ..
poi quando romoloman risponderà a illez vedremo di capire come mai accada questo..

Con proton picbasic pro sono sicuro che se non lo faccio in quel modo ovvero dal bit più alto al bit più basso non funziona...

romoloman 20 settembre 10 13:38

Citazione:

Originalmente inviato da illez (Messaggio 2230195)
idem, vale solo l'ultima.

Ho googlato un pochino ma non ho trovato possibili spiegazioni; ho guardato l'assembly, il codice prodotto è:
$000F $1105 BCF GPIO, 2
$0010 $1085 BCF GPIO, 1
$0011 $1005 BCF GPIO, 0

Non sono un guru dei PIC, ma questa cosa non me la spiego

Strano, lascerebbe pensare a un baco del compilatore assembler perché l'istruzione prodotta è corretta:
BCF, BSF Example: BCF status,Z
These instructions clear (BCF) or set (BSF) the indicated bit in a register. The bit may have a name (like Z) or you can use a number from 0 to 7 (0 is the least significant bit and 7 is the most significant).

illez 20 settembre 10 13:41

Citazione:

Originalmente inviato da romoloman (Messaggio 2230206)
Strano, lascerebbe pensare a un baco del compilatore assembler perché l'istruzione prodotta è corretta:
BCF, BSF Example: BCF status,Z
These instructions clear (BCF) or set (BSF) the indicated bit in a register. The bit may have a name (like Z) or you can use a number from 0 to 7 (0 is the least significant bit and 7 is the most significant).

Leggi qui:
GPIO Bit Error in PIC12F675

forse un problema del PIC?

vado a cercare nel sito microchip...:fiu:

romoloman 20 settembre 10 13:42

Beccato !!!!!
mi era capitato con il 12F675 ma a questo punto suppongo sia presente anche nel 12F683

GPIO Bit Error in PIC12F675

illez 20 settembre 10 13:44

Ti ho bruciato di un minuto :fiu:
:D

Alfa_life 20 settembre 10 13:46

quindi se scrivo

gpio.2=1
gpio.1=1
gpio.0=1

e non

gpio.0=1
gpio.1=1
gpio.2=1

puo essere che anche il mio software funzioni ??

quando torno dal lavoro piu tardi provo e poi vi faccio sapere ..

grazie ..

romoloman 20 settembre 10 13:49

Citazione:

Originalmente inviato da Alfa_life (Messaggio 2230223)
quindi se scrivo

gpio.2=1
gpio.1=1
gpio.0=1

e non

gpio.0=1
gpio.1=1
gpio.2=1

puo essere che anche il mio software funzioni ??

quando torno dal lavoro piu tardi provo e poi vi faccio sapere ??

grazie ..

ha fatto la prova illez e la risposta è negativa....
mi sa che è un baco del PIC..
per capire se è cosi si risolve alla svelta ...
prova a mettere un delay di 200 ns fra una riga e l'altra.... se con un delay funziona allora è bacato il PIC....

illez 20 settembre 10 13:49

Citazione:

Originalmente inviato da Alfa_life (Messaggio 2230223)
quindi se scrivo

gpio.2=1
gpio.1=1
gpio.0=1

e non

gpio.0=1
gpio.1=1
gpio.2=1

puo essere che anche il mio software funzioni ??

quando torno dal lavoro piu tardi provo e poi vi faccio sapere ..

grazie ..

Prova, ma al simulatore non va.:rolleyes:

Ema996 21 settembre 10 22:05

Io uso il 16F628A devo dire che è da paura.... ho dato un occhio allo schema elettrico, a lume di naso inizierei con il controllare il Mem Clear, e poi sicuramente usare il clock interno sarebbe più pratico (se non hai bisogno di conteggi molto lunghi e precisi), poi credo che almeno il comando Define del PIC lo dovresti inserire ....:approved:

Alfa_life 23 settembre 10 20:48

Per ora ho risolto in questo modo :

inizio:

gpio = 7
delay_ms(xx)
gpio=0
delay_ms(yy)

gpio=7
delay_ms(xx)
gpio=0
delay_ms(yy)

ripeti da inizio

dovendo i 3 servi effettuare gli stessi movimenti per tempo infinito posso lasciarlo cosi ..

Grazie per l aiuto siete stati tutti molto utili.

Mrk89 23 settembre 10 21:19

Citazione:

Originalmente inviato da Alfa_life (Messaggio 2235396)
Per ora ho risolto in questo modo :

inizio:

gpio = 7
delay_ms(xx)
gpio=0
delay_ms(yy)

gpio=7
delay_ms(xx)
gpio=0
delay_ms(yy)

ripeti da inizio

dovendo i 3 servi effettuare gli stessi movimenti per tempo infinito posso lasciarlo cosi ..

Grazie per l aiuto siete stati tutti molto utili.

A questo punto, se i 3 servi devono muoversi contemporaneamente bastava scrivere GPIO=1 al posto di GPIO=7 e collegavi tutti e 3 i segnali all'uscita GPIO.0:P

Alfa_life 24 settembre 10 13:11

Citazione:

Originalmente inviato da Mrk89 (Messaggio 2235489)
A questo punto, se i 3 servi devono muoversi contemporaneamente bastava scrivere GPIO=1 al posto di GPIO=7 e collegavi tutti e 3 i segnali all'uscita GPIO.0:P

Non ci avevo pensato .

Comunque ora lo lascio cosi anche perche dovrò , piu avanti, muoverli separatamente ..


Tutti gli orari sono GMT +2. Adesso sono le 14:49.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002