Sostieni il forum con una donazione! Il tuo contributo ci aiuterà a rimanere online!
Immagine

Re:varie riguardo PIC

Tutto ciò che riguarda l'elettronica digitale, dalla porta not al protocollo midi... e oltre!
Avatar utente
Dimitree
Diyer Esperto
Diyer Esperto
Messaggi: 425
Iscritto il: 01/09/2006, 23:56

varie riguardo PIC

Messaggio da Dimitree » 24/11/2009, 1:41

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?

Avatar utente
Fix_Metal
Braccio destro di Roger Mayer
Braccio destro di Roger Mayer
Messaggi: 1955
Iscritto il: 28/07/2008, 3:44
Località: Bergamo
Contatta:

Re:varie riguardo PIC

Messaggio da Fix_Metal » 24/11/2009, 2:09

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ì =)
[url=http://www.forumspile.com/][img]http://www.forumspile.com/Signatures/Userbar-Forumspile-1.jpg[/img][/url]

Avatar utente
davidefender
Garzone di Roger Mayer
Garzone di Roger Mayer
Messaggi: 1437
Iscritto il: 11/02/2008, 23:51
Località: Roma
Contatta:

Re:varie riguardo PIC

Messaggio da davidefender » 24/11/2009, 8:56

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!  :lol1:) 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!  :yrock:

è 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?  :face_green:  :mang: :trip: :hun1: :enco1: :muro: :mart: :mart: :mart: :surpr:
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)

Avatar utente
Fix_Metal
Braccio destro di Roger Mayer
Braccio destro di Roger Mayer
Messaggi: 1955
Iscritto il: 28/07/2008, 3:44
Località: Bergamo
Contatta:

Re:varie riguardo PIC

Messaggio da Fix_Metal » 24/11/2009, 13:30

davidefender ha scritto: :face_green:  :mang: :trip: :hun1: :enco1: :muro: :mart: :mart: :mart: :surpr:
come non quotare questa serie di gif :face_green:
[url=http://www.forumspile.com/][img]http://www.forumspile.com/Signatures/Userbar-Forumspile-1.jpg[/img][/url]

Avatar utente
Dimitree
Diyer Esperto
Diyer Esperto
Messaggi: 425
Iscritto il: 01/09/2006, 23:56

Re:varie riguardo PIC

Messaggio da Dimitree » 24/11/2009, 22:07

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  :lol1:

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.

Avatar utente
luix
Amministratore
Amministratore
Messaggi: 3422
Iscritto il: 06/05/2006, 14:26

Re:varie riguardo PIC

Messaggio da luix » 24/11/2009, 22:28

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???  :arf2:
MEMENTO trimmer Humdinger :lol1:

Avatar utente
davidefender
Garzone di Roger Mayer
Garzone di Roger Mayer
Messaggi: 1437
Iscritto il: 11/02/2008, 23:51
Località: Roma
Contatta:

Re:varie riguardo PIC

Messaggio da davidefender » 24/11/2009, 22:58

luix ha scritto: Lo stai programmando per fare il caffè e ramazzare casa???  :arf2:
:arf2: :arf2: :arf2: ahahahahahahah

per il caffé ci sto lavorando, ma il corridoio viene che uno specchio!  :lol1: 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!  :lol1: 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!  :arf2:

P.S. @Dimitree: tu oramai SAI cosa consiglio  :face_green: , 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!!

:ciao:
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)

Avatar utente
Dimitree
Diyer Esperto
Diyer Esperto
Messaggi: 425
Iscritto il: 01/09/2006, 23:56

Re:varie riguardo PIC

Messaggio da Dimitree » 25/11/2009, 1:07

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..  :mart:

Avatar utente
davidefender
Garzone di Roger Mayer
Garzone di Roger Mayer
Messaggi: 1437
Iscritto il: 11/02/2008, 23:51
Località: Roma
Contatta:

Re:varie riguardo PIC

Messaggio da davidefender » 25/11/2009, 10:59

Dimitree ha scritto: stasera ho programmato in C, con il compilatore Hi Tech, ho fatto lampeggiare il led usando l'oscillatore esterno..
:yrock:
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..  :mart:
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!

:ciao:
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)

Avatar utente
Dimitree
Diyer Esperto
Diyer Esperto
Messaggi: 425
Iscritto il: 01/09/2006, 23:56

Re:varie riguardo PIC

Messaggio da Dimitree » 25/11/2009, 11:21

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!

Avatar utente
davidefender
Garzone di Roger Mayer
Garzone di Roger Mayer
Messaggi: 1437
Iscritto il: 11/02/2008, 23:51
Località: Roma
Contatta:

Re:varie riguardo PIC

Messaggio da davidefender » 25/11/2009, 13:57

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!  :arf2:

:ciao:
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)

Avatar utente
Dimitree
Diyer Esperto
Diyer Esperto
Messaggi: 425
Iscritto il: 01/09/2006, 23:56

Re:varie riguardo PIC

Messaggio da Dimitree » 25/11/2009, 23:22

no no c'è proprio __delay_ms(x) che ti permette di usare gli ms..  :mart:
il compilatore da errore su ogni valore maggiore di 197 (dopo 50 tentativi  :lol1:)

Avatar utente
Dimitree
Diyer Esperto
Diyer Esperto
Messaggi: 425
Iscritto il: 01/09/2006, 23:56

Re:varie riguardo PIC

Messaggio da Dimitree » 26/11/2009, 2:18

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.  :yup1:

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")

Avatar utente
davidefender
Garzone di Roger Mayer
Garzone di Roger Mayer
Messaggi: 1437
Iscritto il: 11/02/2008, 23:51
Località: Roma
Contatta:

Re:varie riguardo PIC

Messaggio da davidefender » 26/11/2009, 9:28

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!  :yes: Questo tipo di definizioni di funzioni viene chiamata MACRO, server per ordinare un pò il codice senza perdere in prestazioni!

:ciao:
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)

Avatar utente
Dimitree
Diyer Esperto
Diyer Esperto
Messaggi: 425
Iscritto il: 01/09/2006, 23:56

Re:varie riguardo PIC

Messaggio da Dimitree » 26/11/2009, 14:43

ah ottimo grazie mille Davide  :ok_1:
su internet non avevo trovato nulla a riguardo..non sapevo come cercare

Rispondi