ATmega644PA e I2C

Ciao ragazzi, pongo una domanda riguardante il funzionamento del protocollo I2C sugli ATmega644.
Ho un 644 su breadboard collegato con una 2009 ma non riesco a comunicazre tramite i2c.
I collegamenti sono giusti (so che sda e scl nel 644 sono mappati diversamente) e ho anche cambiato breadboard per evitare un problema di falsi contatti.
Ho messo anche le resistenze di pullup su SDA e SCL (ho provato prima 4.7k poi 2.2k)
Uso l'ide0022 con gli esempi forniti presenti nell'ide.
Ho verificato la tensione di alimentazione e il funzionamento dei microcontrollori, tutto nella norma.
A questo punto penso sia più un problema software che hardware, avete mai provato il protocollo I2C sugli ATmega644?
Magari non è supportato, però compila tranquillamente gli sketch... non so cosa pensare.

Anche secondo me non è supportato nella 0022. Discorso diverso se tu usassi la 1.0.1 o addirittura la pre-1.0.2 (ovvero se compilassi l'IDE con le ultime modifiche)
E' stato infatti previsto il supporto al 644 e al 1284 con alcune modifiche. (se ne discusso in un altro topic)
Non so per l'I2C.

Non ho ancora provato e non so se funziona.
Hai un oscilloscopio per controllare le linee SDA ed SCL? Al limite anche un analizzatore di stati logici andrebbe bene.

Ciao

Purtroppo non ho questi strumenti, adesso provo con lo sketch i2cScanner, se nemmeno questo lo rileva rinuncio.

Il 644 non è supportato nativamente dal core Arduino delle versioni 0022, ci vuole un core apposito, ad esempio quello che sviluppai tempo fa (lo trovi sul mio sito).

Se invece usi l'IDE 1.0.1 ci sono poche modifiche da apportare per rendere il core compatibile al 100% con questo micro ed il fratello maggiore 1284: come ti ha detto Paolo, c'è una discussione in cui ho messo un pacchetto di file con tutto l'occorrente, compreso anche un bootloader.

leo72:
Il 644 non è supportato nativamente dal core Arduino delle versioni 0022, ci vuole un core apposito, ad esempio quello che sviluppai tempo fa (lo trovi sul mio sito).

Si Leo, lo sto usando già quel core... ricordi i test che ho fatto? (pin pwm che non funzionavano, la seconda seriale, ecc).

Se invece usi l'IDE 1.0.1 ci sono poche modifiche da apportare per rendere il core compatibile al 100% con questo micro ed il fratello maggiore 1284: come ti ha detto Paolo, c'è una discussione in cui ho messo un pacchetto di file con tutto l'occorrente, compreso anche un bootloader.

Domani farò la prova anche sull'ide 1.0.1

Ma li usate poco questi bestioni o ci fate girare solo il blink? :stuck_out_tongue_closed_eyes:

Pelletta:

leo72:
Il 644 non è supportato nativamente dal core Arduino delle versioni 0022, ci vuole un core apposito, ad esempio quello che sviluppai tempo fa (lo trovi sul mio sito).

Si Leo, lo sto usando già quel core... ricordi i test che ho fatto? (pin pwm che non funzionavano, la seconda seriale, ecc).

Sinceramente non me lo ricordavo :sweat_smile:

Se invece usi l'IDE 1.0.1 ci sono poche modifiche da apportare per rendere il core compatibile al 100% con questo micro ed il fratello maggiore 1284: come ti ha detto Paolo, c'è una discussione in cui ho messo un pacchetto di file con tutto l'occorrente, compreso anche un bootloader.

Domani farò la prova anche sull'ide 1.0.1

Ma li usate poco questi bestioni o ci fate girare solo il blink? :stuck_out_tongue_closed_eyes:

[/quote]
Al momento li ho usati per i test per il leOS e per sistemare i bootloader, poi ho un progetto che, se riesco a portarlo avanti, prevede un 644. Ad anno nuovo voglio iniziare a costruire qualche robottino e sicuramente userò i 644/1284.

Pelletta:
Purtroppo non ho questi strumenti, adesso provo con lo sketch i2cScanner, se nemmeno questo lo rileva rinuncio.

Puoi provare altrimenti ad usare una libreria soft I2C che simula il protocollo utilizzando normalmente i GPIO, ho trovato queste:
http://jeelabs.org/2012/03/21/porti2c-the-big-picture
http://forums.adafruit.com/viewtopic.php?f=25&t=13722

Il clock è apposto? Se fai un delay di un secondo è effettivamente un secondo?

Col multimetro che tensioni leggi su SCL se continui a fare richieste di comunicazione? E' la linea del clock quindi dovresti leggere un qualcosa come VDD/2 se comunichi in continuazione

Ciao

Pelletta:
I collegamenti sono giusti (so che sda e scl nel 644 sono mappati diversamente)

Ho riletto questo. Ti ricordi che SCL e SDA sono i pin D16 e D17 vero (piedini fisici 22 e 23)?

PS: hai fatto i test con l'IDE 1.0.1 modificato?

Ho scoperto cosa non andava: il cavo che andava su SCL era spezzato all'interno della guaina :stuck_out_tongue_closed_eyes:
Dopo essermi ripreso dall'incazzatura vi confermo che funziona sull'IDE 0022

Pelletta:
Ho scoperto cosa non andava: il cavo che andava su SCL era spezzato all'interno della guaina :stuck_out_tongue_closed_eyes:
Dopo essermi ripreso dall'incazzatura vi confermo che funziona sull'IDE 0022

Quando passi all'IDE 1.0.1? :wink:

leo72:
Quando passi all'IDE 1.0.1? :wink:

Quando il mio gallo farà la pipì, ci siamo messi d'accordo :wink:

fagli bere molta acqua

Pelletta:

leo72:
Quando passi all'IDE 1.0.1? :wink:

Quando il mio gallo farà la pipì, ci siamo messi d'accordo :wink:

BUD, perfino io e Leo siamo "caduti", anche se la mia doppia installazione me la tengo cara.

Io ho fatto come Leo, mi sono compilato l'altro ieri una build con tutte le ultime patch. Una post1.0.1 o pre1.0.2.
E vado tranquillo.

Anche se devo dire che essendomi avvicinato ad Arduino in concomitanza dell'uscita della 1.0, non ho vecchio codice da rimaneggiare.

Io ormai è da alcuni mesi che viaggio a build.
Poi ora che ho la DUE ed ho scaricato la 1.5 beta, la compilazione è all'ordine del giorno :wink: