SOFTWARE ARDUINO MICRO PER RTX, PER COMINCIARE...

Ciao tutti,
sto cercando di capire le connessioni dei vari moduli con Arduino micro ma non sono sicuro di aver capito benissimo a parte le alimentazioni, vi allego il mio schema di riferimento che ho trovato in rete.

il display I2C si collega con l'SCL al pin A5 (left analog up) e l'SDA al pin A4 (left analog down) che sono nella parte sinistra dell'immagine delle connessioni?

l'SI5351 si collega con l'SCL al pin A3 (right analog left) e l'SDA al pin A2 (right analog right) che sono sempre nella parte sinistra dell'immagine oppure al pin 2 (SDA) e al pin 3 (SCL) nella parte destra dell'immagine?

L'encoder si collega ai pin 6-7-9 nella parte destra dell'immagine? Le resistenze di pull up da 10 k servono?

Mi direte per favore se è corretto o meno, intanto ho istallato il software 1.8.8 che sembra girare perfettamente.

grazie mille!

Gianpietro

Giamp

arduino si5351 connessioni.doc (143 KB)

Premettendo che non ho mai usato Arduino Micro, per cui devo fare affidamento sullo schema postato, e sorvolando sul fatto che invece di aggiungere messaggi alla discussione iniziale (con reply) hai aperto nuove discussioni (forse i moderatori che la domenica staranno giustamente dormendo accorperanno il tutto :wink: ), premesso ciò...

Il bus i2c è uno solo, quindi tutte le periferiche i2c si collegano in parallelo sugli stessi SDA/SCL (pin2 e 3 azzurri a destra).

La nomenclatura gialla AVR va ignorata (sono le porte interne del processore), quella esterna alla fine delle righe anche (sono le connessioni per una xbox), a noi interessano solo le azzurre (pin digitali), eventualmente le verdi (ingressi analogici), eventualmente le rosse se vogliamo generare segnali PWM, e le blu (gli interrupt) che tornano utili per leggere un encoder (ma non è strettamente necessario).

Quindi direi display e 5351 ai pin 2 e 3, i canali A e B (o clock e dati) dell'encoder ai pin 1 e 0, lo switch dell'encoder a qualsiasi altro pin azzurro libero.

Le resistenze di pull-up da 10k vanno messe su tutti gli ingressi che si usano per avere un livello di tensione stabile e noto quando non sono collegati a niente, e servono anche sul bus i2c. Alcuni moduli encoder hanno già le resistenze incorporate. Inoltre, oltre
** **[u]alle r-pull che vanno collegate tra gli ingressi  e i +5V[/u]** **
, sugli ingressi a cui vanno collegati contatti meccanici (switch/encoder/pulsanti ecc)
** **[u]è utile collegare anche dei condensatori da 100nF verso massa[/u]** **
per eliminare i rimbalzi elettrici di apertura e chiusura.

Buongiorno Claudio e grazie mille!

Se ho capito bene quindi gli SDA ed SCL del display e del 5351 sono da collegare in brutale parallelo poi con una R da 10 k in serie a SDA ed SCL verso Arduino micro è giusto?

Ok per l'encoder, anche lui con le R in serie per ogni pin.

Benissimo! Posso già azzardare i collegamenti.

Giamp

Bene per i 100 nF,
quello che non mi piace moltissimo è collegare in parallelo due moduli, intendo fisicamente non è un lavoro pulitissimo...speravo che sul micro ci fossero già almeno 4 o 6 pin già in parallelo per SDA/SCL, comunque non sarà un problema.

Grazie.

Giamp

È fatto apposta:

Ecco, questo mi genera ancora più confusione, in quanto non capisco la linea rossa del Vcc collegata a SDA/SCL.

Intendo che se il master è il micro e gli schiavi sono il display e il 5351 hanno già la loro alimentazione 5Vcc separata da SDA/SCL e che sarà da collegare in parallelo per ogni modulo, immagino inoltre che le R di pull up sarebbero da inserire in serie solo a SDA/SCL oltre all'encoder, mentre la loro alimentazione generale attraverso un regolatore da 5 V.

Mah...scusa davvero l'ignoranza ma non so nemmeno di cosa sto parlando ed è difficile sapere ciò che per un esperto sia scontato o meno rispetto all'interlocutore...mi rendo conto.

Giamp

Avevo solo sottointeso le connessioni comuni:

E per l'encoder:

rotary-encoder.png

Ciao e grazie, adesso ho capito, anche SDA/SCL necessitano di alimentazione attraverso le R da 10 k, non lo sapevo...cosi come l'encoder.

Ho guardato per bene il mio encoder che ha già le R da 10 k montate sulla piccola board però ce ne sono solo 2, c'è una piazzola smd libera con indicato R1 ma non c'è la resistenza e nemmeno un ponticello, secondo te è normale o se la sono dimenticata? Mi risulta che le R dovrebbero essere 3, posso mettercela io.

Arigrazie!

Sui miei ce ne sono tre, la puoi aggiungere anche esterna.

Perfetto, ne saldo una da 1/8 Watt.

oggi mi ci metto e collego tutto, poi proverò a caricare un software VFO per il 5351 e vediamo se intanto funziona qualcosa...

davvero grazie!!!

Giamp

Buongiorno Claudio,
ti disturbo nuovamente per un dubbio sulle connessioni dell'encoder, tutto il resto è già collegato.

Inoltre ho scoperto che le R di pull up sono già presenti nei moduli SI5351 e Display che ho acquistato, misurando tra i pin SDA, SCL e il positivo generale ci sono 10 kOhm sul modulo SI5351 e 5 kOhm sul modulo Display, per cui non aggiungo ulteriori R, se pensi sia corretto.

Per le connessioni dell'encoder ti allego un software che ho trovato e più vicino alle mie esigenze, vorrei sapere se le connessioni che mi hai indicato precedentemente:

"Quindi direi display e 5351 ai pin 2 e 3, i canali A e B (o clock e dati) dell'encoder ai pin 1 e 0, lo switch dell'encoder a qualsiasi altro pin azzurro libero"

fanno parte di questo software, se ne hai voglia e tempo, altrimenti me le provo tutte.

Grazie mille!

Giamp

VFO SI 5351.ino (17.5 KB)

ik2vtu:
fanno parte di questo software, se ne hai voglia e tempo, altrimenti me le provo tutte.

Non è così semplice, un software prevede di usare una certa scheda con ben specifici collegamenti, se si collegano le cose nel modo non previsto dal software si possono anche fare danni.

In particolare ho l'impressione che quel software sia scritto per un ArduinoUNO e ne sfrutti caratteristiche specifiche che su Arduino micro sono diverse.

La prima è il collegamento previsto per l'encoder, si leggono queste definizioni:

#define ENCODER_A    3                      // Encoder pin A
#define ENCODER_B    2                      // Encoder pin B
#define ENCODER_BTN  A0

Quindi sicuramente il pulsante va collegato ad A0, ma i pin 2 e 3 di A.UNO hanno funzioni diverse dai pin 2 e 3 di A.micro.

A peggiorare le cose nel setup vedo una configurazione degli interrupt realizzata manipolando direttamente con i registri del controller, il che probabilmente rende questo codice non portabile su altri arduini...

PCICR |= (1 << PCIE2);           // Enable pin change interrupt for the encoder
PCMSK2 |= (1 << PCINT18) | (1 << PCINT19);
sei();

E forse non è portabile (nel senso che tutte le cose precedenti più questa vanno riscritte) neppure la ISR:

ISR(PCINT2_vect) {

    unsigned char result = r.process();

    if (result == DIR_CW)
    {
        if (!setupmenu)
            set_frequency(1);
        else
            setup_menu(1);
    }
    else if (result == DIR_CCW)
    {
        if (!setupmenu)
            set_frequency(-1);
        else
            setup_menu(-1);    
    }
}

Forse, ma solo forse, basterebbe riscrivere le cose sopra in questo modo:

#define ENCODER_A    0                      // Encoder pin A
#define ENCODER_B    1                      // Encoder pin B
#define ENCODER_BTN  A0
attachInterrupt(2, encoderISR, CHANGE);
attachInterrupt(3, encoderISR, CHANGE);
void encoderISR() {

    unsigned char result = r.process();

    if (result == DIR_CW)
    {
        if (!setupmenu)
            set_frequency(1);
        else
            setup_menu(1);
    }
    else if (result == DIR_CCW)
    {
        if (!setupmenu)
            set_frequency(-1);
        else
            setup_menu(-1);    
    }
}

Se si vogliono usare altri pin ed il "pin change interrupt", mi permetto di suggerire l'ottima libreria EnableInterrupt che, oltre a gestire TUTTI i tipi di interrupt, funziona su:

The EnableInterrupt library is an Arduino interrupt library, designed for all versions of the Arduino- at this writing, the Uno (and other ATmega328p-based boards, like the mini), Due, Zero, Leonardo (and other ATmega32u4-based boards, like the Micro), the Mega2560 (and other ATmega2560-based boards, like the MegaADK), and for non-Arduino chips: the 644/1284p (Mighty1284, Sodaq Mbili and EnviroDIY Mayfly) ATtiny 44/84, and ATtiny 45/85 (using DA Mellis' support files).

Guglielmo

Ciao Claudio e Guglielmo,
vi ringrazio moltissimo per la pazienza e il tempo che mi avete dedicato, tuttavia penso che rinuncerò al progetto in quanto mi sono reso conto che per me è davvero impossibile affrontare queste tematiche, quando ho scritto che sono a digiuno di software non era un modo per presentarsi con il cappello in mano, ma la pura verità, sigh...

Tanto per cominciare ho tentato "solo" di far apparire la scritta "hello world" Sul display utilizzando il classico Arduino 1.0.6 flaggando il mio tipo di Arduino cioè micro, individuando la COM sul mio PC, tutto bene, programma caricato, nessun errore, ma il display rimane acceso e non fa nulla...

ecco...partiamo da qui, ma se non sono nemmeno capace di fare questa cosa elementare e capire il perchè non va, come posso pretendere di affrontare le funzioni molto più complesse che mi servono? Non posso nemmeno continuare a scrivervi per questo e quello etc... oltretutto con difficoltà di linguaggio tecnico.

Proverò a cercare qualcuno nell'ambito radioamatoriale afferrato in materia che mi corregge o modifica un software adatto.

Però la faccenda di "hello world" E' dura da digerire! Pazienza.

Buonissime feste a tutti.

Giamp

Certo, se non hai un kit tutto pronto, solo da montare, è bene cominciare a sperimentare con cose semplici...

Al display hai collegato il trimmer per regolare il contrasto? E' indispensabile!

Arduino 1.0.6?... Intendi l'IDE, cioè l'applicazione per Windows per scrivere i programmi e caricarli? La 1.0.6 è vecchissima e ha molti problemi che sono stati risolti nelle versioni più recenti. Installa l'ultima versione, la 1.8.8. Funziona anche con XP! :slight_smile:

:grinning:

Ciao a tutti,
ce l'ho fatta!

Giamp

A far che? :astonished:

:smiley:
Vedi che ce la potevi fare? :slight_smile:
Anch'io all'inizio non credevo che senza il trimmer del contrasto non si vedesse proprio nulla!

Ciao a tutti e grazie delle vostre preziose info, alla fine era "solo" il software... ho cercato moltissimo in rete finchè ho trovato un "display test" Che funzionava perfettamente, cosi ho potuto confrontarlo con il mio "hello world" E sostituirne alcune parti, adesso gira benissimo, allego il risultato.

Buone feste!

Giamp