ATmega328P a 3.3V, funziona I2C?

L'atmega328 funziona alla grande, all'avvio accende in sequenza dei led.
L'operazione di saldatura è stata brevissima, meno di un minuto con aria a 270 gradi.
A parte che nel datasheet non c'è scritta la temperatura per saldarlo (ne ho scaricati diversi) ho fatto diverse prove per sapere la temperatura di fusione dello stagno; sotto i 270 non si scioglie nemmeno a pagarlo.
I test li ho fatti senza l'integrato.

Nessuna trattativa economica, te lo mando domani stesso se entro stasera ancora non funziona.
Ho già la busta pronta :wink:

flz, era questo che volevo farti notare, il resto sono fattacci vostri, nessuna curiosità, solo che uno cammina su una strada asfaltata e non si aspetta che ad un tratto sbuchi un albero dal nulla :stuck_out_tongue_closed_eyes:

Io ora non ho modo di far prove, se monti un 328 su una breadobard e lo clocchi a 8 MHz, riesci a farlo dialogare con un Arduino?
Perché se il chi apparentemente funziona, forse bisognerebbe puntare i fari sul software.

Ho l'atmega328 alimentato a 3.3V, devo vedere che posso fare per adattare i livelli di trasmissione seriale dell'arduino.

Pelletta:
Ho l'atmega328 alimentato a 3.3V, devo vedere che posso fare per adattare i livelli di trasmissione seriale dell'arduino.

Ti basta mettere un partitore sul TX di Arduino:
Una 15k ed una 10 k in serie, il capo libero della 15k al TX di Arduino, il contatto tra le due R all'RX del tuo mega a 3,3V, il capo libero della 10K a GND, sull'altro ramo non ti serve niente.

Io comunque mi riferivo ad un 328 in formato DIP28. Iniziamo col capire se la Wire ha problemi a gestire l'I2C ad 8 MHz.
Quindi metti un DIP28 in standalone, e poi fallo comunicare via I2C con un Arduino, basta un semplice invio di un carattere al secondo, che tu replichi sulla seriale oppure usi per far lampeggiare il led integrato.
Da quel che ho visto la Wire adatta la velocità in base al clock di sistema, però cominciamo a farci un bel pavimento di certezze su cui camminare.

Io comunque mi riferivo ad un 328 in formato DIP28. Iniziamo col capire se la Wire ha problemi a gestire l'I2C ad 8 MHz.
Quindi metti un DIP28 in standalone, e poi fallo comunicare via I2C con un Arduino, basta un semplice invio di un carattere al secondo, che tu replichi sulla seriale oppure usi per far lampeggiare il led integrato.
Da quel che ho visto la Wire adatta la velocità in base al clock di sistema, però cominciamo a farci un bel pavimento di certezze su cui camminare.

Effettivamente sembra che il problema dipenda dalla frequenza della CPU.
A pag.222 del datasheet è mostrata la formula per calcolare la frequenza di SCL ed è dipendente dal prescaler e dalla frequenza della CPU.

Ho iniziato i test con la seriale, non va neanche questa.
Ho collegato un arduino (16MHz - 5V) con lo standalone (8MHz - 3.3V) e non rilevo dati sulla seriale.
Ho usato il partitore come suggerito.
Lo sketch prevedeva anche la trasmissione nel setup di una parola, doveva funzionare per forza.

A questo punto può dipendere dal fatto che gli atmega hanno clock differenti?

Secondo me si,perche non ci sarebbero i giusti sincronismi della trasmissione tra i due dispositivi.

Personalmente credo che la trasmissione seriale dipenda solo dai baud a cui sono impostate le due porte, se sono uguali non dovrebbero esserci problemi

Bene, per sicurezza mando anche l'arduino a 8MHz sperando che non salta fuori qualcosa di nuovo.
Altro che impresa, sto chippettino è un calvario :slight_smile:

Esattamente. Dispositivi a frequenze differenti possono comunicare senza problemi se usano poi la stessa velocità di trasmissione in bps.

Esattamente. Dispositivi a frequenze differenti possono comunicare senza problemi se usano poi la stessa velocità di trasmissione in bps.

Ma per poterli far comunicare non bisognerebbe modificare la libreria ?

@Pelletta: puoi provare ad overclockare a 16 MHz l'AtMega @ 3.3v per fare delle prove
Con i2c il clock proviene dalla linea SCL ed è fornito dal Master

Ciao

Ho mandato anche l'arduino a 8MHz e ora ricevo bene tutti i messaggi dallo standalone via seriale

Ma tu hai problemi con l'I2C, o con la seriale? :sweat_smile:

Con tutto :stuck_out_tongue:
Avevo provato a usare la seriale per fare un pò di debug ma ho dovuto risolvere anche qui un pò di problemucci :slight_smile:
Ora che va la seriale posso vedere che succede

FUNZIONA!!!

E quale era il problema?

Ho messo un delay(100) tra Serial.begin() e wire.begin()

:stuck_out_tongue_closed_eyes: