Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
Abbiamo provato per diverse settimane il nuovo Magic V5 di HONOR, uno smartphone pieghevole che ci ha davvero stupito. Il device è il più sottile (solo 4.1mm) ma non gli manca praticamente nulla. Potenza garantita dallo Snapdragon 8 Elite, fotocamere di ottima qualità e batteria in silicio-carbonio che garantisce un'ottima autonomia. E il Prezzo? Vi diciamo tutto nella nostra recensione completa.
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro)
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro)
Google Pixel 10 Pro XL è il top di gamma della serie Pixel, presentando un ampio display Super Actua da 6.8 pollici insieme alle novità della serie, fra cui la ricarica wireless magnetica Pixelsnap e le nuove funzionalità AI avanzate. Il comparto fotografico include un sistema a tripla fotocamera con zoom Pro Res fino a 100x, mentre il processore Tensor G5 con 16GB di RAM garantisce prestazioni percepite molto elevate su Android.
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico
Forte della piattaforma Qualcomm Snapdragon X, il notebook Lenovo IdeaPad Slim 3 riesce a coniugare caratteristiche tecniche interessanti ad uno chassis robusto, con autonomia di funzionamento a batteria che va ben oltre la tipica giornata di lavoro. Un notebook dal costo accessibile pensato per l'utilizzo domestico o in ufficio, soprattutto con applicazioni native per architettura ARM
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-01-2010, 16:56   #1
Utone
Senior Member
 
L'Avatar di Utone
 
Iscritto dal: Jun 2007
Messaggi: 1805
[Python->Pic] Controllo seriale di un display 100x7

Ciao a tutti,
io e altri 3 ragazzi stiamo sviluppando (per la tesina) un programma per controllare un tabellone a led (costruito precedentemente da altri ragazzi ) via seriale.
Questo tabellone è composto da 100 colonne da 7 led.
Ci sono 7 pic di cui uno master e sei slave.
Per visualizzare una schermata il pic master bisogno di ricevere 100byte in modo da settare una colonna alla volta.
Il programma in Python è quasi concluso, l 'ho uppato qui (se mi dite che posso lo allego anche sul forum tanto è 5k) ma il problema è che il tabellone in questo modo ha sempre bisogno di un pc.
L'obiettivo della tesina era di fare un hardware che faccia il lavoro del programma in python. Inferfacciabile via seriale (solo per settare la scritta e eventuale scorrimento), e magari o bluetooth o modulo gsm.
Esiste qualcosa programmabile in Python o in qualche altro linguaggio in grado di fare questo? Altri consigli?
Far fare questo lavoro ad un Pic sembra troppo complicato. Andrebbe completamente riscritto il codice.

PS: Nel programma in Python c'è anche un simulatore del tabellone per visualizzare il risultato.

Ultima modifica di Utone : 31-01-2010 alle 19:15.
Utone è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2010, 19:57   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Mi sa che dovrete riscrivervi il programmino in C.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2010, 20:23   #3
Utone
Senior Member
 
L'Avatar di Utone
 
Iscritto dal: Jun 2007
Messaggi: 1805
Cavolo... qualche idea di come farlo?
Nel python abbiamo usato il dizionario, in C dovremmo usare le matrici e fare un if ogni carattere giusto?
Per esempio la prima implementazione era questa:
Codice:
A=[[124,18,17,18,124,0],"A"]
T=[[1,1,127,1,1,0],"T"]
U=[[63,64,64,64,63,0],"U"]
C=[[62,65,65,65,34,0],"C"]
S=[[38,73,73,73,50,0],"S"]
spazio=[[0,0,0,0,0,0]," "]

testo=raw_input("Testo")
for x in testo:
    if x in A:
        L=L+A[0]
    if x in T:
        L=L+T[0]
ecc....
solo che in c non ho neanche il comando in...
Utone è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2010, 20:36   #4
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Un arduino? Si programma in una specia di Java mi pare

Ultima modifica di ndakota : 26-01-2010 alle 20:41.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2010, 20:48   #5
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da Utone Guarda i messaggi
Cavolo... qualche idea di come farlo?
Nel python abbiamo usato il dizionario, in C dovremmo usare le matrici e fare un if ogni carattere giusto?
Per esempio la prima implementazione era questa:
Codice:
A=[[124,18,17,18,124,0],"A"]
T=[[1,1,127,1,1,0],"T"]
U=[[63,64,64,64,63,0],"U"]
C=[[62,65,65,65,34,0],"C"]
S=[[38,73,73,73,50,0],"S"]
spazio=[[0,0,0,0,0,0]," "]

testo=raw_input("Testo")
for x in testo:
    if x in A:
        L=L+A[0]
    if x in T:
        L=L+T[0]
ecc....
solo che in c non ho neanche il comando in...
Ciao, io non conosco il python ma penso di intuire il problema. Penso non dovrebbe essere troppo difficile ricrearlo in C, visto che usi lettere singole come "indice" per l'array (parlo sempre i termini C-eschi ) Potresti usare il valore ascii equivalente come indice nell'array dove tieni le "bitmap" dei vari caratteri (immagino che tutti i numeretti siano i valori di acceso/spento da dare ai led), quindi per trovare l'indice dato il carattere ti basterebbe fare
int indice = (int) carattere;
o anche (penso, non sono sicuro):
int indice = (int)('A');
e forse anche
lettere[ (int)('A') ];

Poi crei una matrice fatta così:

int lettere[128][7] = {
{0,0,0,0,0,0,0}, //ascii 0
{0,0,0,0,0,0,0}, //ascii 1
{0,0,0,0,0,0,0}, //ascii 2
...
{124,18,17,18,124,0,0}, //ascii 65 ( 'A' )
...
};
Dove 128 sono il numero di caratteri ascii e 7 le righe di ogni carattere
Non dovrebbe essere troppo difficile visto che hai già dovuto creare una tabella di questo genere, al massimo dovrai riempire quei caratteri che non ti servivano prima.
Cmq se vuoi posso aiutarti nella traduzione
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2010, 20:50   #6
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da Utone Guarda i messaggi
Cavolo... qualche idea di come farlo?
Nel python abbiamo usato il dizionario, in C dovremmo usare le matrici e fare un if ogni carattere giusto?
Per esempio la prima implementazione era questa:
Codice:
A=[[124,18,17,18,124,0],"A"]
T=[[1,1,127,1,1,0],"T"]
U=[[63,64,64,64,63,0],"U"]
C=[[62,65,65,65,34,0],"C"]
S=[[38,73,73,73,50,0],"S"]
spazio=[[0,0,0,0,0,0]," "]

testo=raw_input("Testo")
for x in testo:
    if x in A:
        L=L+A[0]
    if x in T:
        L=L+T[0]
ecc....
solo che in c non ho neanche il comando in...
Quelli non sono dizionari, ma liste, e per simulare l'in in C ti basta scorrerle e controllare elemento per elemento.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2010, 21:08   #7
Utone
Senior Member
 
L'Avatar di Utone
 
Iscritto dal: Jun 2007
Messaggi: 1805
Quote:
Originariamente inviato da ndakota Guarda i messaggi
Un arduino? Si programma in una specia di Java mi pare
è fattibile un programma del genere in Java? Io non ho mai programmato..
il costo più o meno??
edit- Ho letto che si programma in Processing o Wiring. Qualcuno li conosce?
Per il prezzo ho visto che parte da 20€ ma quello con il bluetooth viene 80€!!
Quote:
Originariamente inviato da Z80Fan Guarda i messaggi
Ciao, io non conosco il python ma penso di intuire il problema. Penso non dovrebbe essere troppo difficile ricrearlo in C, visto che usi lettere singole come "indice" per l'array (parlo sempre i termini C-eschi ) Potresti usare il valore ascii equivalente come indice nell'array dove tieni le "bitmap" dei vari caratteri (immagino che tutti i numeretti siano i valori di acceso/spento da dare ai led), quindi per trovare l'indice dato il carattere ti basterebbe fare
int indice = (int) carattere;
o anche (penso, non sono sicuro):
int indice = (int)('A');
e forse anche
lettere[ (int)('A') ];

Poi crei una matrice fatta così:

int lettere[128][7] = {
{0,0,0,0,0,0,0}, //ascii 0
{0,0,0,0,0,0,0}, //ascii 1
{0,0,0,0,0,0,0}, //ascii 2
...
{124,18,17,18,124,0,0}, //ascii 65 ( 'A' )
...
};
Dove 128 sono il numero di caratteri ascii e 7 le righe di ogni carattere
Non dovrebbe essere troppo difficile visto che hai già dovuto creare una tabella di questo genere, al massimo dovrai riempire quei caratteri che non ti servivano prima.
Cmq se vuoi posso aiutarti nella traduzione
Per prima cosa ti ringrazio molto per la disponibilità..
io con il C ho poca esperienza... ho programmato solo il pic 16f877...
Io gli mando una colonna alla volta.. Tipo la "I" è un 127,0.
Se creo una matrice che ha dentro liste ( parentesi graffe??) di lunghezza fissa avrei 6 spazi vuoti di troppo giusto?

Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Quelli non sono dizionari, ma liste, e per simulare l'in in C ti basta scorrerle e controllare elemento per elemento.
lo so che sono liste queste infatti ho scritto che era solo la prima implementezione (che è più vicina al C). Il codice "finale" l'ho linkato..
Ne trascrivo qui un pezzo per far capire..
Codice:
def leggiLettere():
    lett={}
    #MAIUSCOLE
    lett ['A'] = [124,18,17,18,124,0]
    lett ['B'] = [127,73,73,73,54,0]
    lett ['C'] = [62,65,65,65,34,0]
    lett ['D'] = [127,65,65,34,28,0]
    lett ['E'] = [127,73,73,73,65,0]
    lett ['F'] = [127,65,65,34,28,0]
    lett ['G'] = [62,65,73,73,57,0]
    lett ['H'] = [127,8,8,8,127,0]
    lett ['I'] = [127,0]
    eccccccc
    return lett

def aggiornaTkDisplay(): #scrive i 100 byte sul display
    for i in colonne:
        tkDisp.write(chr(i)) #scrive sul simulatore
        #ser.write(chr(i)) #scrive sulla seriale

def scriviColonne(s):
    cnt=0
    for z in s: #mi serve per contare quanti byte vado a variare
        for x in lettere[z]:
            cnt= cnt+1
    pos=(100-cnt)/2
    for c in s: #attraverso la stringa
        for n in lettere[c]: #ricavo i valori dei vari carattere
            colonne[pos] = n #scrivo i valori nella lista
            pos+=1
def scrivi():
    cancella()
    testo=entry.get() #prendo il testo dal tkinter
    scriviColonne(testo)
    aggiornaTkDisplay()

colonne = [0]*100
lettere = leggiLettere()

Ultima modifica di Utone : 26-01-2010 alle 21:17.
Utone è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2010, 07:22   #8
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Ieri non riuscivo a scaricare il sorgente. Comunque Z80Fan ti ha indicato una buona strada per riscrivere il tuo codice in C.

Solo un appunto: i dizionari li puoi dichiarare in maniera più elegante.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2010, 14:07   #9
Utone
Senior Member
 
L'Avatar di Utone
 
Iscritto dal: Jun 2007
Messaggi: 1805
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Solo un appunto: i dizionari li puoi dichiarare in maniera più elegante.
Per esempio??
Utone è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2010, 16:06   #10
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Codice:
lett = {'A' : [124,18,17,18,124,0], 
        'B' : [127,73,73,73,54,0]}
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2010, 16:43   #11
Utone
Senior Member
 
L'Avatar di Utone
 
Iscritto dal: Jun 2007
Messaggi: 1805
Ah capito... ma è solo questione di forma.. non cambia niente giusto?
Utone è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2010, 18:09   #12
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
E' anche più veloce. Soprattutto con wpython.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2010, 19:08   #13
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da Utone Guarda i messaggi
Per prima cosa ti ringrazio molto per la disponibilità..
io con il C ho poca esperienza... ho programmato solo il pic 16f877...
Io gli mando una colonna alla volta.. Tipo la "I" è un 127,0.
Se creo una matrice che ha dentro liste ( parentesi graffe??) di lunghezza fissa avrei 6 spazi vuoti di troppo giusto?
Esattamente, avresti una riga tipo
...
{ ... } /* H */
{127,0,0,0,0,0,0}, /* I */
{ ... } /* J */
...
Si, si usano le parentesi graffe in C per inizializzare vettori/matrici.
Cmq più che "matrice che ha dentro liste" direi che è un vettore di vettori
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2010, 21:01   #14
Utone
Senior Member
 
L'Avatar di Utone
 
Iscritto dal: Jun 2007
Messaggi: 1805
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
E' anche più veloce. Soprattutto con wpython.
ah! Allora modificherò la sintassi..grazie mille.

Quote:
Originariamente inviato da Z80Fan Guarda i messaggi
Esattamente, avresti una riga tipo
...
{ ... } /* H */
{127,0,0,0,0,0,0}, /* I */
{ ... } /* J */
...
Si, si usano le parentesi graffe in C per inizializzare vettori/matrici.
Cmq più che "matrice che ha dentro liste" direi che è un vettore di vettori
Mmm.. ma cosi non va bene perchè avrei troppo spazio bianco...
Poi ci sono altri caratteri più lungo come ad esempio la W.
I vettori che contengono questi valori non possono avere lunghezza variabile?
Tipo:
{127,0} /* I */
...
{...,...,...,...,...,...,...} /* W*/

Altra domanda:
Una volta riscritto tutto il programma in C lo carichiamo sui pic (a scuola dovremmo avere il 16F877). Ma dopo posso interfacciarlo con bluetooth o modulo gsm?

Ultima modifica di Utone : 27-01-2010 alle 21:30.
Utone è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2010, 18:22   #15
Utone
Senior Member
 
L'Avatar di Utone
 
Iscritto dal: Jun 2007
Messaggi: 1805
Ho cambiato la struttura delle matrici delle lettere e l'ho resa simile ai vettori in Così sarà più facile la trascrizione... qui il nuovo codice.. se non riuscite a scaricare lo uppo da qualche altra parte..
Che dici cdimauro? va bene così?
Utone è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2010, 18:26   #16
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da Utone Guarda i messaggi
Mmm.. ma cosi non va bene perchè avrei troppo spazio bianco...
Poi ci sono altri caratteri più lungo come ad esempio la W.
I vettori che contengono questi valori non possono avere lunghezza variabile?
Tipo:
{127,0} /* I */
...
{...,...,...,...,...,...,...} /* W*/

Altra domanda:
Una volta riscritto tutto il programma in C lo carichiamo sui pic (a scuola dovremmo avere il 16F877). Ma dopo posso interfacciarlo con bluetooth o modulo gsm?
Le matrici o vettori dichiarati staticamente (come questi) non possono avere dimensioni variabili, solo quelli dinamici, ma non si possono usare in ambito embedded. Cmq non è un problema per la visualizzazione: fai un ciclo che invia i dati di una lettera solo finchè non trova uno zero.
esempio:
Codice:
void invia( char lettera )
{
   int i=0;
   while( matriceSimboli[ (int)lettera][i] != 0 )   //matriceSimboli sarà una variabile globale
   {
       invia_alla_seriale( matriceSimboli[ (int)lettera][i] );
       i++;
   }
}
Però diventa un problema se hai una quantità di memoria limitata, dove lo spreco di tutti i byte per tenere gli zero è notevole (beh, bisogna vedere quanti spazi vuoti rimangono effettivamente).
Per la seconda domanda, bisogna vedere come funziona il C del pic. Sicuramente la casa madre avrà dato delle librerie da includere in cui ci sono tutte le funzioni necessarie. Purtroppo non ti so dire altro perchè non ho mai programmato in C per i pic (probabilmente lo facciamo quest'anno), quindi ti posso dare consigli sul linguaggio più che altro.
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2010, 18:30   #17
Utone
Senior Member
 
L'Avatar di Utone
 
Iscritto dal: Jun 2007
Messaggi: 1805
Quote:
Originariamente inviato da Z80Fan Guarda i messaggi
Le matrici o vettori dichiarati staticamente (come questi) non possono avere dimensioni variabili, solo quelli dinamici, ma non si possono usare in ambito embedded. Cmq non è un problema per la visualizzazione: fai un ciclo che invia i dati di una lettera solo finchè non trova uno zero.
esempio:
Codice:
void invia( char lettera )
{
   int i=0;
   while( matriceSimboli[ (int)lettera][i] != 0 )   //matriceSimboli sarà una variabile globale
   {
       invia_alla_seriale( matriceSimboli[ (int)lettera][i] );
       i++;
   }
}
Però diventa un problema se hai una quantità di memoria limitata, dove lo spreco di tutti i byte per tenere gli zero è notevole (beh, bisogna vedere quanti spazi vuoti rimangono effettivamente).
Per la seconda domanda, bisogna vedere come funziona il C del pic. Sicuramente la casa madre avrà dato delle librerie da includere in cui ci sono tutte le funzioni necessarie. Purtroppo non ti so dire altro perchè non ho mai programmato in C per i pic (probabilmente lo facciamo quest'anno), quindi ti posso dare consigli sul linguaggio più che altro.
Per il pic chiedo più info al prof... al max ne facciamo comprare uno più potente...quello che abbiamo noi dovrebbe avere oltre alla rom anche una eeprom interna..
Per il problema degli zeri.. dopo ci sarebbe il problema degli spazi. Lo spazio invia 4 zeri.. e un altra cosa... ogni lettera in fondo ha uno zero per spaziarsi dalla lettera successiva..
Per gli zeri
Utone è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2010, 18:57   #18
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da Utone Guarda i messaggi
Per il pic chiedo più info al prof... al max ne facciamo comprare uno più potente...quello che abbiamo noi dovrebbe avere oltre alla rom anche una eeprom interna..
Per il problema degli zeri.. dopo ci sarebbe il problema degli spazi. Lo spazio invia 4 zeri.. e un altra cosa... ogni lettera in fondo ha uno zero per spaziarsi dalla lettera successiva..
Per gli zeri
Per lo spazio possiamo fare un if che se il carattere passato è uno spazio noi inviamo quattro spazi altrimenti cerchiamo nella tabella. Per lo spaziamento dei caratteri è lo stesso: dopo il while che ho scritto io ci metti un invio di uno zero. Per il pic, penso che serva solo la rom, poichè la eeprom viene usata solo per i dati che devono venir modificati dal pic, queste matrici sono compilate direttamente nel codice del programma. E poi le eeprom sono veramente piccole, tipo 128 byte o poco + perchè servono proprio per memorizzare dati di configurazione ecc... Cmq questa tabella ti occupa intorno ai 800 byte quindi non dovrebbero esserci problemi di spazio, a meno che il pic non sia veramente minuscolo e il programma non sia esageratamente grande.
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2010, 19:04   #19
Utone
Senior Member
 
L'Avatar di Utone
 
Iscritto dal: Jun 2007
Messaggi: 1805
Quote:
Originariamente inviato da Z80Fan Guarda i messaggi
Per lo spazio possiamo fare un if che se il carattere passato è uno spazio noi inviamo quattro spazi altrimenti cerchiamo nella tabella. Per lo spaziamento dei caratteri è lo stesso: dopo il while che ho scritto io ci metti un invio di uno zero. Per il pic, penso che serva solo la rom, poichè la eeprom viene usata solo per i dati che devono venir modificati dal pic, queste matrici sono compilate direttamente nel codice del programma. E poi le eeprom sono veramente piccole, tipo 128 byte o poco + perchè servono proprio per memorizzare dati di configurazione ecc... Cmq questa tabella ti occupa intorno ai 800 byte quindi non dovrebbero esserci problemi di spazio, a meno che il pic non sia veramente minuscolo e il programma non sia esageratamente grande.
Non credo ci siano problemi di memoria...
Quote:
PIC = Peripheral Interface Controller (Controllore di periferiche programmabile)
Il PIC16F877 ha 8k di flash memory (area programma), 368 byte di ram e 256 byte di e2prom. Tutte le istruzioni, ad eccezione di quelle di salto, che ne utilizzano 2, utilizzano 1 ciclo macchina che corrisponde a 4 periodi di clock. Il PIC16F877 può lavorare con un clock compreso da 0 a 20 Mhz, può avere fino a 14 sorgenti diverse di interrupt (da periferiche interne e/o esterne) ed è possibile annidare fino ad 8 chiamate a subroutine in quanto lo Stack ha una profondità pari a 8.
Ha un architettura RISC che significa : Reduced Instruction Set Computing, cioè elaborazione con insieme di istruzioni ridotto.
Le istruzioni sono quindi solo poche decine, sono eseguite molto velocemente e non serve un clock molto elevato per un efficiente funzionamento ( dai 4-8 MHz per i tipi più semplici, fino a 33-50 MHz per i tipi più evoluti)
Supporta la ICSP : In Serial Circuit Programmino cioè la possibilità di programmarlo senza togliere il chip dalla scheda, con un apposito cavetto.

Elenco delle periferiche contenute nel PIC16F877
  • 3 Timer (Timer0 8 bit, Timer1 16 bit e Timer2 8 bit)
  • 2 moduli CCP capture, compare e pwm
  • 8 adc a 10 bit
  • porta seriale sincrona e i2c
  • porta di comunicazione parallela (PSP)
  • porta seriale asincrona (usart)
  • diversi pin di i/o distribuiti su 5 porte (Porta, Portb, Portc, Portd, Porte)
più o meno per la traduzione in C ci sono.. ora devo cambiare i cicli FOR in WHILE e cambiare la sintassi..
Il più dopo è capire come interfacciarlo con l'esterno senza usare la seriale..
Utone è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2010, 19:10   #20
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Quote:
Originariamente inviato da Utone Guarda i messaggi
ora devo cambiare i cicli FOR in WHILE e cambiare la sintassi..
Perchè? esistono i for anche in C
Quote:
Originariamente inviato da Utone Guarda i messaggi
Il più dopo è capire come interfacciarlo con l'esterno senza usare la seriale..
Come vorresti interfacciarlo? attraverso parallela, i2c, bluetooth ?
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico Lenovo IdeaPad Slim 3: un notebook Snapdragon X ...
Recensione OnePlus Watch 3 43mm: lo smartwatch che mancava per i polsi più piccoli Recensione OnePlus Watch 3 43mm: lo smartwatch c...
BOOX Note Air4 C è uno spettacolo: il tablet E Ink con Android per lettura e scrittura BOOX Note Air4 C è uno spettacolo: il tab...
Un trapano avvitatore Bosch scontato del...
Allarme sicurezza per utenti MATLAB: fur...
Power station portatili in forte sconto:...
Windows 11 migliora l'audio Bluetooth: a...
DJI Mic 3: prestazioni professionali in ...
Il mercato smartphone chiuderà in positi...
Logitech G PRO X SUPERLIGHT 2 SE ora a u...
Beats Fit Pro, tracollo di prezzo: auric...
NVIDIA: due clienti valgono il 39% dei r...
Questo browser rifiuta l'integrazione de...
Anche il Giappone sviluppa il suo comput...
Xiaomi X20 Max, X20 Pro e X20+ tra i mig...
Anche Microsoft si fa l'AI in casa: pres...
Google, NVIDIA e Bill Gates puntano sull...
Samsung Galaxy Tab S11 Ultra: tutte le s...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:17.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v