Pagina 1 di 4
varie riguardo PIC
Inviato: 24/11/2009, 1:41
da Dimitree
ciao ragazzi, continuo qui per non andare troppo OT nel topic del programmatore, visto che ora è riparato..
2 cose non mi vengono con il mio PIC16F628A
riesco ad accendere 1 led, 2 led contemporaneamente, a far lampeggiare 1 led, a alternare 1 led con l'altro, ma non riesco a far lampeggiare 2 led contemporaneamente!
c'è qualche motivo particolare?
praticamente il mio main funziona così:
Main:
bsf PORTA,2
bsf PORTA,3
call Delay
bcf PORTA,2
bcf PORTA,3
call Delay
goto Main
e se ne accende-lampeggia solo 1, mentre l'altro non da segni. Se però li alterno lampeggiano tutti e due, come detto prima..
cosa sbaglio?
inoltre i lampeggiamenti funzionano solo se a momento di programmazione setto come timer l' RC I/O interno..se metto XT non lampeggia niente. Bisogna cambiare qualche altra cosa nel programma oltre alla configurazione in fase di programmazione?
Re:varie riguardo PIC
Inviato: 24/11/2009, 2:09
da Fix_Metal
Prova a dare un occhio qui
http://old.nabble.com/Help-on-PIC16F628 ... 27976.html
Io non ricordo più niente di PIC....mi spiace ma non posso aiutarti più di così =)
Re:varie riguardo PIC
Inviato: 24/11/2009, 8:56
da davidefender
Re:varie riguardo PIC
Inviato: 24/11/2009, 13:30
da Fix_Metal
come non quotare questa serie di gif

Re:varie riguardo PIC
Inviato: 24/11/2009, 22:07
da Dimitree
grazie ragazzi
in effetti il passo al C era d'obbligo, infatti mi sono procurato tempo fa tutti i programmi e guide, ma ancora non avevo esaminato niente perchè prima volevo riuscir a fare qualche cosetta con il solo uso dell'assembler..per poi passare a facilitarmi le cose..
certo che il comportamento è strano..però vabbè vediamo se scritto in C come si comporta..
appena ho un po di tempo approfondisco e torno alle domande
Davide ma il PIC16F877 me lo consigli come una sorta di PIC16F628 (che è un PIC16F84 con Usart e qualche I/O in più) con più I/O? perchè a me servirebbero circa 16 out, magari anche più, e con il 628 non ce la faccio.. C'è qualche modello famoso a metà strada tra il 628 e l'877 che mi consigliate? oppure tanto vale mettere dei registri sulle uscite per moltiplicarle?
Re:varie riguardo PIC
Inviato: 24/11/2009, 22:28
da luix
davidefender ha scritto:
considera che io ho appena finito di scrivere (ed ancora non è completo) 10k di codice c++ per il mio microcontrollore!!
Lo stai programmando per fare il caffè e ramazzare casa???

Re:varie riguardo PIC
Inviato: 24/11/2009, 22:58
da davidefender
luix ha scritto:
Lo stai programmando per fare il caffè e ramazzare casa???

ahahahahahahah
per il caffé ci sto lavorando, ma il corridoio viene che uno specchio!

No, cmq, è il software necessario per il controllo midi che sto costruendo, e la cosa più pesante oltre che gli oggetti per gestire la logica dell'applicazione (60%) sono le librerie necessarie per interfacciarmi con LCD 16x2... ma via assicuro, sta venendo una cosa very professional!

appena mi arriva il display finisco il firmware e aggiorno il post sul controller MIDI.. per ora ho testato i (6k e mezzo) di codice del sistema e funziona alla perfezione!
scusate l'OT ma sono gasatissimo!
P.S. @Dimitree: tu oramai SAI cosa consiglio

, cmq ora non ho davvero modo di vedere i datasheet dei due PIC da te citati, perdonami. Però in linea di massima direi che se ti servono 16 uscite o più, personalmente opterei per registri a scorrimento.. viene un lavoro molto più ben fatto ed è anche più facile da gestire a livello software!!

Re:varie riguardo PIC
Inviato: 25/11/2009, 1:07
da Dimitree
bene grazie Davide..vada per i registri, che ne ho già 5 in casa!
stasera ho programmato in C, con il compilatore Hi Tech, ho fatto lampeggiare il led usando l'oscillatore esterno..
unico problema, non so come mai il delay massimo è 197 ms quindi per fare 1 secondo bisogna concaternarli e creare dei loop..

Re:varie riguardo PIC
Inviato: 25/11/2009, 10:59
da davidefender
Dimitree ha scritto:
stasera ho programmato in C, con il compilatore Hi Tech, ho fatto lampeggiare il led usando l'oscillatore esterno..
Dimitree ha scritto:
unico problema, non so come mai il delay massimo è 197 ms quindi per fare 1 secondo bisogna concaternarli e creare dei loop..
potrebbe dipendere dal fatto che hai scaricato la versione DEMO? se non sbaglio cmq ci dovrebbero essere anche compilatori freeware per i PIC..
http://sdcc.sourceforge.net/
questo è anche opensource, quidni dovresti poter essere in grado di vederti i sorgenti delle librerie incluse!

Re:varie riguardo PIC
Inviato: 25/11/2009, 11:21
da Dimitree
ma le librerie posso vederle anche con questo..è demo però la limitazione è la mancanza dell ottimizzazione del codice, che viene il 50% più lungo..solo questo
da quello che ho capito il delay massimo è fissato per non creare problemi di overflow
stasera provo con l'usart!
Re:varie riguardo PIC
Inviato: 25/11/2009, 13:57
da davidefender
capisco!
probabilmente è perchè specifichi il tempo in us vero? magari la variabile arriva solo ad un tot, dovresti avere una funzione che ti permette di specificare il tempo in millisecondi ad esempio.. potresti farla tu!

Re:varie riguardo PIC
Inviato: 25/11/2009, 23:22
da Dimitree
no no c'è proprio __delay_ms(x) che ti permette di usare gli ms..

il compilatore da errore su ogni valore maggiore di 197 (dopo 50 tentativi

)
Re:varie riguardo PIC
Inviato: 26/11/2009, 2:18
da Dimitree
ok ho settato la usart per l'utilizzo midi, se può servire, con un oscillatore da 4MHZ, il Divider necessario (per baud 31250) è 1 se utilizzate la modalità low speed, oppure 7 se utilizzate la high speed.. in entrambi i casi è un intero come vedete quindi il tasso di errore dovrebbe essere 0.
ora non mi è chiara questa parte che è inclusa in un header (per l'usart) del mio compilatore:
#define init_comms()\
RX_PIN = 1; \
TX_PIN = 1; \
SPBRG = DIVIDER; \
RCSTA = (NINE_BITS|0x90); \
TXSTA = (SPEED|NINE_BITS|0x20)
void putch(unsigned char);
unsigned char getch(void);
unsigned char getche(void);
non capisco cosa sono quei backslash "" in questa funzione..non so se è perchè mi sto dimenticando il C o perchè è esclusiva di C++..ma a che servono? e perchè non c'è ";" dopo TXSTA=() e neanche un "" ?
inoltre quelle tre definizioni finali penso di poterle togliere..anche se non ci sono commenti quindi non so a cosa servano..(getch mi è chiara, la "putch")
Re:varie riguardo PIC
Inviato: 26/11/2009, 9:28
da davidefender
quella è notazione del C:
quella definizione significa che il compiler deve sostituire al simbolo "init_comms()" i seguenti simboli:
RX_PIN = 1; \
TX_PIN = 1; \
SPBRG = DIVIDER; \
RCSTA = (NINE_BITS|0x90); \
TXSTA = (SPEED|NINE_BITS|0x20)
il backslash '\' significa "vai a capo", quidni se nel tuo codice avrai una cosa del tipo:
void funzioneTroppoFica() {
....
init_comms();
....
}
il compiler sostituirà il listato con:
void funzioneTroppoFica() {
....
RX_PIN = 1;
TX_PIN = 1;
SPBRG = DIVIDER;
RCSTA = (NINE_BITS|0x90);
TXSTA = (SPEED|NINE_BITS|0x20);
....
}
ed ecco perchè l'ultima riga non ha il punto e virgola!

Questo tipo di definizioni di funzioni viene chiamata MACRO, server per ordinare un pò il codice senza perdere in prestazioni!

Re:varie riguardo PIC
Inviato: 26/11/2009, 14:43
da Dimitree
ah ottimo grazie mille Davide

su internet non avevo trovato nulla a riguardo..non sapevo come cercare