![]() |
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 .. |
Citazione:
Il watchdog timer l'hai levato? |
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.. |
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.. |
2 Allegato/i Configurazione disponibile ad inizio progetto : Cosa devo spuntar per vedere funzionare il tutto ?? |
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.. |
Citazione:
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) |
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. |
Citazione:
Queste opzioni sono valide anche per i miei pic? |
Citazione:
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.. |
Citazione:
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. |
Citazione:
Se lo compila, dovrebbe essere giusto anche come hai scritto tu, però...:rolleyes: provare non costa nulla |
Citazione:
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 |
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: |
prova ad invertire l'ordine ovvero parti dalla gpio.2 e scendi alla gpio.0 |
Citazione:
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 . . |
Citazione:
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 |
Citazione:
|
Citazione:
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). |
Citazione:
GPIO Bit Error in PIC12F675 forse un problema del PIC? vado a cercare nel sito microchip...:fiu: |
Beccato !!!!! mi era capitato con il 12F675 ma a questo punto suppongo sia presente anche nel 12F683 GPIO Bit Error in PIC12F675 |
Ti ho bruciato di un minuto :fiu: :D |
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 .. |
Citazione:
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.... |
Citazione:
|
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: |
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. |
Citazione:
|
Citazione:
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