home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Pic Micro
Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...ecc


PORTA analogica in PIC16F873A
     
Autore Messaggio opzioni
e.ferriani





postato il:
15.09.2018, alle ore 11:31
picmicro675:

Per l' invio di un solo byte ? Direi che è elevato. Secondo il mio ragionamento si dovrebbe poter inviare 16 bytes in circa 200 uS. ...


Allora, oscilloscopio alla mano abbiamo:
Con
XTAL_FREQ = 4000000
I2C_SPEED = 100000

si ottiene

SSPADD = (_XTAL_FREQ/(4*I2C_SPEED))-1 = (4000000/(4*100000))-1 = 9

durata di lavoro misurata di SDA da S a P di 266uS
clock misurato di SCL 10uS


Con
XTAL_FREQ = 4000000
I2C_SPEED = 400000

si ottiene

SSPADD = (_XTAL_FREQ/(4*I2C_SPEED))-1 = (4000000/(4*400000))-1 = 1,5

durata di lavoro misurata di SDA da S a P di 116uS
clock misurato di SCL 2,1uS




Enea Ferriani
e.ferriani





postato il:
15.09.2018, alle ore 13:46
Ultimissime....
Ho aggiunto queste 3 righe alla routine di interrupt.


    if(SSPIF)
    {
        RC6=!RC6;                   // Turn on LED to indicate I2C activity.
        SSPIF = 0;                  // Clear the interrupt flag.
    }


Ora sembra funzionare. Come influisce? Non canto vittoria perchè non lo so ancora.
E' quello che intendevi tu Agric?


Dal datasheet microchip:

bit 3 SSPIF: Synchronous Serial Port (SSP) Interrupt Flag
1 = The SSP interrupt condition has occurred, and must be cleared in software before returning
from the Interrupt Service Routine. The conditions that will set this bit are:
• SPI
- A transmission/reception has taken place.
• I2C Slave
- A transmission/reception has taken place.
• I2C Master
- A transmission/reception has taken place.
- The initiated START condition was completed by the SSP module.
- The initiated STOP condition was completed by the SSP module.
- The initiated Restart condition was completed by the SSP module.
- The initiated Acknowledge condition was completed by the SSP module.
- A START condition occurred while the SSP module was idle (Multi-Master system).
- A STOP condition occurred while the SSP module was idle (Multi-Master system).
0 = No SSP interrupt condition has occurred.



Enea Ferriani
picmicro675




una ogni 10 livelli


postato il:
15.09.2018, alle ore 14:04
e.ferriani:
picmicro675:

Per l' invio di un solo byte ? Direi che è elevato. Secondo il mio ragionamento si dovrebbe poter inviare 16 bytes in circa 200 uS. ...


Allora, oscilloscopio alla mano abbiamo:
Con
XTAL_FREQ = 4000000
I2C_SPEED = 100000


Devo dire che ho avuto una svista, non ho tenuto conto la frequenza dell' I2C. Il ragionamento era che inviava un bit al uS, ma invece ci vogliono 10 uS. Questo determina un byte trasmesso in 90 uS. Quindi 16 bytes sono 1,44 mS.

Nel caso reale hai ovviamente un carico addizionale di trasmissione controllata in software che assomma altri 26 cicli macchina.
Nel caso controllo tramite hardware, si migliora dovuto al fatto che nei 90 uS, il micro sarebbe in grado di eseguire altre novanta istruzioni mentre il byte viene trasmesso.



Anno nuovo, forum nuovo.
Mi sa che lascio.
e.ferriani





postato il:
15.09.2018, alle ore 14:54
e.ferriani:
picmicro675:

Per l' invio di un solo byte ? Direi che è elevato. Secondo il mio ragionamento si dovrebbe poter inviare 16 bytes in circa 200 uS. ...


Allora, oscilloscopio alla mano abbiamo:
Con
XTAL_FREQ = 4000000
I2C_SPEED = 100000

si ottiene

SSPADD = (_XTAL_FREQ/(4*I2C_SPEED))-1 = (4000000/(4*100000))-1 = 9

durata di lavoro misurata di SDA da S a P di 266uS
clock misurato di SCL 10uS


Con
XTAL_FREQ = 4000000
I2C_SPEED = 400000

si ottiene

SSPADD = (_XTAL_FREQ/(4*I2C_SPEED))-1 = (4000000/(4*400000))-1 = 1,5

durata di lavoro misurata di SDA da S a P di 116uS
clock misurato di SCL 2,1uS



Appena ho reinserito tutto quanto era presente nell'interupt, cioè quanto di seguito,


  if (T0IF)
  {
    TMR0 = 195;         // con Prescaler 1:16 => Overflow di TMR0 ogni 996uS

    millisec++;
    periodo_lettura_trimmer_velocita++;
    periodo_scrittura_I2C++;
    periodo_lettura_I2C++;
    timer1++;
    RC5=!RC5;
  }

    if(SSPIF)
    {
        RC6=!RC6;                   // Turn on LED to indicate I2C activity.
        SSPIF = 0;                  // Clear the interrupt flag.
    }


con "I2C_SPEED = 400000", pur restando invariato il clock della comunicazione, il tempo i lavoro di SDa sempre da S a P è schizzato a 220uS circa.



Enea Ferriani
agric





postato il:
15.09.2018, alle ore 15:42
Prova cambiare ordine nel test dei flag e poi visto che il periodo di trasmissione è maggiore di un mS prova a lasciar girare il tmr0 senza caricare il valore 195 dovrebbe esserci un Int ogni 4.xx mS


meglio essere un granello di pepe che una cacca d'asino
picmicro675




una ogni 10 livelli


postato il:
15.09.2018, alle ore 16:45
Ho riscritto l' articolo, magari qualcuno si rende conto di come divergono le mie idee.
picmicro675:

Progetto modellismo ferroviario Enea
********************************************************************************
Secondo la mia visione e come è stato iniziato si potrebbe disegnare come segue:

1) una console operatore supportata da un micro che gestisce la comunicazione
con altri 5 micro-controllori, designati come slaves.
Per questo si avrà un micro ad interfaccia operatore assegnato come master
per una comunicazione I2C con i 5 slaves.

2) Per la console si prevede un display 16x2 caratteri, alcuni pulsanti ed
eventuali potenziometri per regolazione lineare di alcune uscite.

3) Gli slaves possono avere ingressi ed uscite programmate dal master. Il quale
determina le operazioni tramite una stringa di bytes con la comunicazione I2C.

4) Quindi gli slaves possono avere una uscita in modulazione di ampiezza (PWM)
che gestisce la velocità dei locomotori per un certo ramo da governare.
Ci possono essere anche un o più canali analogici per il controllo di velocità
magari differenziati in entrambe i sensi.
Ci possono essere canali digitali per ingressi. Quindi possiamo prevedere
che una porta sia assegnata a quello. Preferibilmente la PORTB che offre
l' utilizzo di interrupt, che si possono configurare con la apposita routine

Basi di sviluppo del programma
********************************************************************************
a) Il master interroga in ciclo gli slaves, aggiorna l' LCD e legge i segnali di
interfaccia con l' operatore.
Questo implica che ci sia una trasmissione di dati a sufficienza per determinare
quali operazioni eseguire.

b) Gli slaves prendono il pacchetto e controllano che non ci siano stati difetti
durante la comunicazione.
Per questo è buona intenzione mettere un controllo di integrità del pacchetto
ricevuto e rimetterlo al master.

c) Gli slaves hanno la capacità di porre in atto i valori acquisiti ai rispettivi
piedini e anche di aggiornare i valori dei piedini di ingressi.

Disegno di un pacchetto di comunicazione
********************************************************************************

Suddivisione del pacchetto
z) 1 word per impostazione del canale PWM dello slave-
Dovrebbe contenere il valore da scrivere direttamente nel registro di PWM.
Il master dovrebbe fare il calcolo per riportare il valore, che magari si
vuole vedere in percentuale. Eventualmente si potrebbe far passare il calcolo
ad ogni slave per alleviare il volume di lavoro del master.

v) 1 o 2 word di ritorno per lettura analogica-
Similmente a quanto detto per controllo PWM, si possono prendere delle letture
analogiche dagli ingressi degli slave. Forse per poter gestire singolarmente
la velocità di ogni ramo. Addirittura potrebbe anche essere girato direttamente
al controllo PWM e dare solo l' informazione al master del valore impostato.

u) 1 byte per segnali digitali in ingresso, indirizzabile direttamente a PORTB
Dal master si possono prendere valori da rilevare alla PORTB, quali finecorsa
e/o pulsanti.
In locale si potrebbe implementare una routine di antirimbalzo e quindi dare
il segnale di ritorno al master.

t) 1 byte di segnali digitali in uscita, indirizzabile direttamente a PORTC
In questo modo il carico dello slave è minimo, per eseguire attuazioni del
tipo acceso spento.

s) 1 word per segnali di controllo, separato in singoli flags.
Flags utilizzabili per singolo bit che determinano alcuni stati di trasmissione
come: errori, mancato pacchetto, collisione, slave impegnato, salta un ciclo,
inizio fine di un temporizzatore.

r) 1 word per il controllo di validità pacchetto (CRC)
Semplice routine che determina se tutto il pacchetto è arrivato integro al
destinatario.

q) 1 o 2 word da assegnare a temporizzatori, del quale si potrebbe indicare lo
stato nella word del punto s.

p) 1 word per futuri sviluppi
Già con la word del punto s, si possono utilizzare molte varianti, comunque
ci potrebbero essere dei miglioramenti che alla fine danno ragione di aver
lasciato un po di spazio. Del resto potrebbe anche variare lo schema del
pacchetto per un modello più ampio, sempre che non inficia i tempi che si usa
per servire tutti gli slave.

Analisi di tempi di servizio
********************************************************************************

Sarebbe difficile determinare a priori quanto possa durare un ciclo principale.
Questo ciclo è quello che in fondo deve ripetersi all' infinito per servire tutte
le parti del progetto.
Si comincia a definire che ogni istruzione (in linguaggio macchina) prende un
microsecondo. Questo è determinato dal fatto di utilizzare solo l' oscillatore
interno a 4 MHz, che poi viene diviso per 4.

Seguendo le direttive che sono state scritte nella Application Note No. 736A,
della Microchip, si percepisce che la trasmissione avviene tramite hardware. In
questo modo, non ci sarebbero deterioramenti di trasmissione. Da ciò si calcola
che per la trasmissione di un pacchetto si avrà un tempo massimo di 8 x 12 bytes.
Questo si calcola che a 100 kHz di trasmissione si trasmette un byte in 9 impulsi
da 10 uS, quindi il calcolo Sarebbe 96 bytes x 90 us = 8640 uS. Arrotondiamo ad
un mS.

Ammesso di fare per tutti e cinque gli slaves, si dovrebbe impiegare un periodo
di 10 mS c.a.(calcolato che ci sarebbe anche la fase di risposta. Dando anche un
50% di margine tutti gli slaves saranno soddisfatti 15 mS.

Di seguito si considera l' elaborazione dei segnali ricevuti, che può essere
puramente intuitivo, ma diamone una figura di 2 mS (ovvero almeno 2000 istruzioni
macchina).

Possibile che alcuni calcoli siano a carico degli slaves, quindi anche per uno
slave, ci sono quasi 17 mS di tempo per operare, prima che necessiti di servire
la chiamata successiva dal master. Magari diventerà trasparente se si implementa
nella routine di servizio interruzione.

Di seguito il master potrebbe aver bisogno di un lavoro di aggiornamento della
console di comando, per questo si può stimare che il display e ingressi analogici
richiedano almeno 3 mS. Un caso particolare potrebbe essere quello di prendere
i segnali di ingresso di qualche pulsante. Coi i pulsanti si deve far fronte agli
effetti di vibrazione dei contatti, per evitarli si usa una sistema di filtro
da software. Questo consiste nel rilevare lo stato del pulsante che attiva un
contatore, fintanto che il pulsante rimane allo stato logico prefissato.
periodicamente si verificherà che il contatore del periodo abbia raggiunto il
valore voluto. Da questo punto si determina un segnale di validità. Se invece
lo stato logico cambia il contatore verrà azzerato e la verifica invalidata.

Per approssimazione, si considera che la stima è di 20 millisecondi per completare
un ciclo principale. Per tanto converrà mettere un ritardo per l' aggiornamento
del display, in modo da non intasare di richieste il controllore del dispositivo.
Questo no significa che il ritardo deve bloccare gli altri processi. Il metodo
da adottare è quello di controllore se il contatore del proprio processo ha raggiunto
o superato il valore richiesto.

Analisi di gestione eventi
********************************************************************************

Nella previsione che tutte funzioni possano avere una propria allocazione di
tempo, è ragionevole utilizzare una base tempi che servirebbe ad indicare se un
evento ha raggiunto il periodo voluto.
Per questo c'è a disposizione 3 timers nell' hardware. Se il presente disegno non
avanza grandi pretese, consiglierei di prendere il Timer0 che utilizza 8 bit di
conteggio. Si può quindi impostare con il prescaler a 1:64 e la ricarica a 99,
che determina una interruzione ad ogni 10 millisecondi (approssimativamente).
Con questo metodo si scandisce le operazioni da servire in modo che procedano di
pari passo.
Visto che per fare tutte le funzioni si impiegano 20 millisecondi, si potrebbe
stabilire che per ogni singola funzione si alloca una cadenza di 30 mS. Ne
risulta che non ci dovrebbero essere sovrapposizioni tra le singole funzioni.

Si può capire che con l' interruzione a 10 mS, non si ha un carico eccessivo della
routine di servizio interruzioni. Anche dal fatto che il calcolo del contatore
prende un solo ciclo macchina. Per necessità di valori più piccoli si potrebbe
implementare una seconda variabile che calcola i millisecondi e le frazioni che
sono rilevate dal registro del TMR0.
Se si desidererà una cadenza più celere, allora si potrà cambiare il prescaler
a 1:32 e raddoppiare il contatore. Così da ottenere una cadenza di 5 mS, senza
appesantire il tempo di incremento della variabile di conteggio.

Eventualmente si potrebbe avviare anche il Timer1 a contare a ciclo continuo senza
attivare le interruzioni. Lo scopo sarebbe di prendere una misura di tempo non
superiore a 65535 microsecondi, che potrebbe servire come filtro anti-rimbalzo.
Oppure anche utilizzabile per determinare periodi minori al millisecondo.


Concluso.....
Se servono correzioni scrivetemi.



Anno nuovo, forum nuovo.
Mi sa che lascio.
picmicro675




una ogni 10 livelli


postato il:
15.09.2018, alle ore 16:46
Non mi piace l' impaginazione, mod cancellala.
Qui la nuova
                    Progetto modellismo ferroviario Enea
********************************************************************************
Secondo la mia visione e come Ã¨ stato iniziato si potrebbe disegnare come segue:

1)  una console operatore supportata da un micro che gestisce la comunicazione
    con altri 5 microcontrollori, designati come slaves.
    Per questo si avrà un micro ad interfaccia operatore assegnato come master
    per una comunicazione I2C con i 5 slaves.

2)  Per la console si prevede un display 16x2 caratteri, alcuni pulsanti ed
    eventuali potenziometri per regolazione lineare di alcune uscite.

3)  Gli slaves possono avere ingressi ed uscite programmate dal master. Il quale
    determina le operazioni tramite una stringa di bytes con la comunicazione I2C.

4)  Quindi gli slaves possono avere una uscita in modulazione di ampiezza (PWM)
    che gestisce la velocità dei locomotori per un certo ramo da governare.
    Ci possono essere anche un o più canali analogici per il controllo di velocità
    magari differenziati in entrambe i sensi.
    Ci possono essere canali digitali per ingressi. Quindi possiamo prevedere
    che una porta sia assegnata a quello. Preferibilmente la PORTB che offre
    l' utilizzo di interrupt, che si possono configurare con la apposita routine

                        Basi di sviluppo del programma
********************************************************************************
a)  Il master interroga in ciclo gli slaves, aggiorna l' LCD e legge i segnali di
    interfaccia.
    Questo implica che ci sia una trasmissione dati a sufficienza per determinare
    quali operazioni eseguire.

b)  Gli slaves prendono il pacchetto e controllano che non ci siano stati difetti
    durante la comunicazione.
    Per questo Ã¨ buona intenzione mettere un controllo di integrità del pacchetto
    ricevuto e rimetterlo al master.

c)  Gli slaves hanno la capacità di porre in atto i valori acquisiti ai rispettivi
    piedini e anche di aggiornare i valori dei piedini di ingressi.

                    Disegno di un pacchetto di comunicazione
********************************************************************************

        Suddivisione del pacchetto
z)  1 word per impostazione del canale PWM dello slave-
    Dovrebbe contenere il valore da scrivere direttamente nel registro di PWM.
    Il master dovrebbe fare il calcolo per riportare il valore, che magari si
    vuole vedere in percentuale. Eventualmente si potrebbe far passare il calcolo
    ad ogni slave per alleviare il volume di lavoro del master.

v)  1 o 2 word di ritorno per lettura analogica-
    Similmente a quanto detto per controllo PWM, si possono prendere delle letture
    analogiche dagli ingressi degli slave. Forse per poter gestire singolarmente
    la velocità di ogni ramo. Addirittura potrebbe anche essere girato direttamente
    al controllo PWM e dare solo l' informazione al master del valore impostato.

u)  1 byte per segnali digitali in ingresso,  indirizzabile direttamente a PORTB
    Dal master si possono prendere valori da rilevare alla PORTB, quali finecorsa
    e/o pulsanti.
    In locale si potrebbe implementare una routine di antirimbalzo e quindi dare
    il segnale di ritorno al master.

t)  1 byte di segnali digitali in uscita, indirizzabile direttamente a PORTC
    In questo modo il carico dello slave Ã¨ minimo, per eseguire attuazioni del
    tipo acceso spento.

s)  1 word per segnali di controllo, separato in singoli flags.
    Flags utilizzabili per singolo bit che determinano alcuni stati di trasmissione
    come: errori, mancato pacchetto, collisione, slave impegnato, salta un ciclo,
    inizio fine di un temporizzatore.

r)  1 word per il controllo di validità pacchetto (CRC)
    Semplice routine che determina se tutto il pacchetto Ã¨ arrivato integro al
    destinatario.

q)  1 o 2 word da assegnare a temporizzatori, del quale si potrebbe indicare lo
    stato nella word del punto s.

p)  1 word per futuri sviluppi
    Già con la word del punto s, si possono utilizzare molte varianti, comunque
    ci potrebbero essere dei miglioramenti che alla fine danno ragione di aver
    lasciato un po di spazio. Del resto potrebbe anche variare lo schema del
    pacchetto per un modello più ampio, sempre che non inficia i tempi che si usa
    per servire tutti gli slave.

                        Analisi di tempi di servizio
********************************************************************************

Sarebbe difficile determinare a priori quanto possa durare un ciclo principale.
Questo ciclo Ã¨ quello che in fondo deve ripetersi all' infinito per servire tutte
le parti del progetto.
Si comincia a definire che ogni istruzione (in linguaggio macchina) prende un
microsecondo. Questo Ã¨ determinato dal fatto di utilizzare solo l' oscillatore
interno a 4 MHz, che poi viene diviso per 4.

Seguendo le direttive che sono state scritte nella Application Note No. 736A,
della Microchip, si percepisce che la trasmissione avviene tramite hardware. In
questo modo, non ci sarebbero deterioramenti di trasmissione. Da ciò si calcola
che per la trasmissione di un pacchetto si avrà un tempo massimo di 8 x 12 bytes.
Questo si calcola che a 100 kHz di trasmissione si trasmette un byte in 9 impulsi
da 10 uS, quindi il calcolo Sarebbe 96 bytes x 90 us = 8640 uS. Arrotondiamo ad
un mS.

Ammesso di fare per tutti e cinque gli slaves, si dovrebbe impiegare un periodo
di 10 mS c.a.(calcolato che ci sarebbe anche la fase di risposta. Dando anche un
50% di margine tutti gli slaves saranno soddisfatti 15 mS.

Di seguito si considera l' elaborazione dei segnali ricevuti, che può essere
puramente intuitivo, ma diamone una figura di 2 mS (ovvero almeno 2000 istruzioni
macchina).

Possibile che alcuni calcoli siano a carico degli slaves, quindi anche per uno
slave, ci sono quasi 17 mS di tempo per operare, prima che necessiti di servire
la chiamata successiva dal master. Magari diventerà trasparente se si implementa
nella routine di servizio interruzione.

Di seguito il master potrebbe aver bisogno di un lavoro di aggiornamento della
console di comando, per questo si può stimare che il display e ingressi analogici
richiedano almeno 3 mS. Un caso particolare potrebbe essere quello di prendere
i segnali di ingresso di qualche pulsante. Coi i pulsanti si deve far fronte agli
effetti di vibrazione dei contatti, per evitarli si usa una sistema di filtro
da software. Questo consiste nel rilevare lo stato del pulsante che attiva un
contatore, fintanto che il pulsante rimane allo stato logico prefissato.
periodicamente si verificherà che il contatore del periodo abbia raggiunto il
valore voluto. Da questo punto si determina un segnale di validità. Se invece
lo stato logico cambia il contatore verrà azzerato e la verifica invalidata.

Per approssimazione, si considera che la stima Ã¨ di 20 millisecondi per completare
un ciclo principale. Per tanto converrà mettere un ritardo per l' aggiornamento
del display, in modo da non intasare di richieste il controllore del dispositivo.
Questo no significa che il ritardo deve bloccare gli altri processi. Il metodo
da adottare Ã¨ quello di controllore se il contatore del proprio processo ha raggiunto
o superato il valore richiesto.

                    Analisi di gestione eventi
********************************************************************************

Nella previsione che tutte funzioni possano avere una propria allocazione di
tempo, Ã¨ ragionevole utilizzare una base tempi che servirebbe ad indicare se un
evento ha raggiunto il periodo voluto.
Per questo c'è a disposizione 3 timers nell' hardware. Se il presente disegno non
avanza grandi pretese, consiglierei di prendere il Timer0 che utilizza 8 bit di
conteggio. Si può quindi impostatare con il prescaler a 1:64 e la ricarica a 99,
che determina una interruzione ad ogni 10 millisecondi (approssimatamente).
Con questo metodo si scandisce le operazioni da servire in modo che procedano di
pari passo.
Visto che per fare tutte le funzioni si impiegano 20 millisecondi, si potrebbe
stabilire che per ogni singola funzione si alloca una cadenza di 30 mS. Ne
risulta che non ci dovrebbero essere sovrapposizioni tra le singole funzioni.

Si può capire che con l' interruzione a 10 mS, non si ha un carico eccessivodella
routine di servizio interruzioni. Anche dal fatto che il calcolo del contatore
prende un solo ciclo macchina. Per necessità di valori più piccoli si potrebbe
implementare una seconda variabile che calcola i millisecondi e le frazioni che
sono rilevate dal registro del TMR0.
Se si desidererà una candenza più celere, allora si potrà cambiare il prescaler
a 1:32 e raddoppiare il contatore. Così da ottenere una cadenza di 5 mS, senza
appesantire il tempo di incremento della variabile di conteggio.

Eventualmente si potrebbe avviare anche il Timer1 a contare a ciclo continuo senza
attivare le interruzioni. Lo scopo sarebbe di prendere una misura di tempo non
superiore a 65535 microsecondi, che potrebbe servire come filtro antirimbalzo.
Oppure anche utilizzabile per determinare periodi minori al millisecondo.


Concluso.....
Se servono correzioni scrivimi.



Anno nuovo, forum nuovo.
Mi sa che lascio.
picmicro675




una ogni 10 livelli


postato il:
15.09.2018, alle ore 16:55
Ci sono errori nei calcoli dei tempi. Facciamo conto che servono a dare una idea per quantizzare il volume di carico e la cadenza da assegnare per ogni compito.


Anno nuovo, forum nuovo.
Mi sa che lascio.
e.ferriani





postato il:
15.09.2018, alle ore 17:00
Tutto chiaro, come da file che avevi messo ieri.
Ho avuto qualche problema di interrupt, e sto cercando di capire cosa c'è che teneva bloccato tutto.
Ora credo di poter andare avanti.



Enea Ferriani
agric





postato il:
15.09.2018, alle ore 17:47
e.ferriani:
Ultimissime....
Ho aggiunto queste 3 righe alla routine di interrupt...

E' quello che intendevi tu Agric?


questo SSPIF è uno dei flag a servizio del i2c, se inserito nell'int tutto sembra funzionare significa che da qualche parte sono stati attivati i registri.
A supporto del'i2c ci sono diversi registri riportati nel software delle AN736 che picmicro,con impegno non indifferente, utilizza come esempio



meglio essere un granello di pepe che una cacca d'asino
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale