Re:varie riguardo PIC
varie riguardo PIC
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?
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?
- Fix_Metal
- Braccio destro di Roger Mayer
- Messaggi: 1955
- Iscritto il: 28/07/2008, 3:44
- Località: Bergamo
- Contatta:
Re:varie riguardo PIC
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ì =)
Io non ricordo più niente di PIC....mi spiace ma non posso aiutarti più di così =)
[url=http://www.forumspile.com/][img]http://www.forumspile.com/Signatures/Userbar-Forumspile-1.jpg[/img][/url]
- davidefender
- Garzone di Roger Mayer
- Messaggi: 1437
- Iscritto il: 11/02/2008, 23:51
- Località: Roma
- Contatta:
Re:varie riguardo PIC
si, devo ammettere che è davvero simpatico questo comportamento!
purtroppo non sono molto ferrato sull'assembler... un consiglio? http://www.electro-tech-online.com/micr ... f877a.html
Forse si va un pò OT, cioè, non centra nulla col doppio lampeggiamento del LED, ma secondo me dovresti fare un SERIO pensierino a lasciar perdere l'assembler (ci siamo evoluti parecchio dagli anni '50!
) considera che per fare qualcosa di un pò più complesso di un led che lampeggia, il C è d'obbligo! E allora tanto vale che cominci a farci l'esperienza necessaria.. partendo da un led lampeggiante ma in C! 
è davvero un consiglio d'amico, considera che io ho appena finito di scrivere (ed ancora non è completo) 10k di codice c++ per il mio microcontrollore!! hai idea di quanto mi ci sarebbe voluto per scriverlo in assembler?

purtroppo non sono molto ferrato sull'assembler... un consiglio? http://www.electro-tech-online.com/micr ... f877a.html
Forse si va un pò OT, cioè, non centra nulla col doppio lampeggiamento del LED, ma secondo me dovresti fare un SERIO pensierino a lasciar perdere l'assembler (ci siamo evoluti parecchio dagli anni '50!


è davvero un consiglio d'amico, considera che io ho appena finito di scrivere (ed ancora non è completo) 10k di codice c++ per il mio microcontrollore!! hai idea di quanto mi ci sarebbe voluto per scriverlo in assembler?










La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.
(Albert Einstein)
(Albert Einstein)
- Fix_Metal
- Braccio destro di Roger Mayer
- Messaggi: 1955
- Iscritto il: 28/07/2008, 3:44
- Località: Bergamo
- Contatta:
Re:varie riguardo PIC
come non quotare questa serie di gifdavidefender ha scritto:![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()

[url=http://www.forumspile.com/][img]http://www.forumspile.com/Signatures/Userbar-Forumspile-1.jpg[/img][/url]
Re:varie riguardo PIC
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?
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?
Ultima modifica di Anonymous il 24/11/2009, 22:08, modificato 1 volta in totale.
Re:varie riguardo PIC
Lo stai programmando per fare il caffè e ramazzare casa???davidefender ha scritto:
considera che io ho appena finito di scrivere (ed ancora non è completo) 10k di codice c++ per il mio microcontrollore!!

MEMENTO trimmer Humdinger :lol1:
- davidefender
- Garzone di Roger Mayer
- Messaggi: 1437
- Iscritto il: 11/02/2008, 23:51
- Località: Roma
- Contatta:
Re:varie riguardo PIC
luix ha scritto: Lo stai programmando per fare il caffè e ramazzare casa???![]()



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


scusate l'OT ma sono gasatissimo!

P.S. @Dimitree: tu oramai SAI cosa consiglio


La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.
(Albert Einstein)
(Albert Einstein)
Re:varie riguardo PIC
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..
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..

- davidefender
- Garzone di Roger Mayer
- Messaggi: 1437
- Iscritto il: 11/02/2008, 23:51
- Località: Roma
- Contatta:
Re:varie riguardo PIC
Dimitree ha scritto: stasera ho programmato in C, con il compilatore Hi Tech, ho fatto lampeggiare il led usando l'oscillatore esterno..

potrebbe dipendere dal fatto che hai scaricato la versione DEMO? se non sbaglio cmq ci dovrebbero essere anche compilatori freeware per i PIC..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..![]()
http://sdcc.sourceforge.net/
questo è anche opensource, quidni dovresti poter essere in grado di vederti i sorgenti delle librerie incluse!

La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.
(Albert Einstein)
(Albert Einstein)
Re:varie riguardo PIC
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!
da quello che ho capito il delay massimo è fissato per non creare problemi di overflow
stasera provo con l'usart!
- davidefender
- Garzone di Roger Mayer
- Messaggi: 1437
- Iscritto il: 11/02/2008, 23:51
- Località: Roma
- Contatta:
Re:varie riguardo PIC
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!

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!


La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.
(Albert Einstein)
(Albert Einstein)
Re:varie riguardo PIC
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
)

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

Re:varie riguardo PIC
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:
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")

ora non mi è chiara questa parte che è inclusa in un header (per l'usart) del mio compilatore:
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 "" ?#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);
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")
- davidefender
- Garzone di Roger Mayer
- Messaggi: 1437
- Iscritto il: 11/02/2008, 23:51
- Località: Roma
- Contatta:
Re:varie riguardo PIC
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!

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!


La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.
(Albert Einstein)
(Albert Einstein)
Re:varie riguardo PIC
ah ottimo grazie mille Davide 
su internet non avevo trovato nulla a riguardo..non sapevo come cercare

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