Forum: Mikrocontroller und Digitale Elektronik Atxmega Bibliothek I2C=TWI gesucht


von Michael D. (sirs)


Lesenswert?

HI

Kennt jemand eine gute TWI-Bibliothek für den Atxmega?

"Peter Fleury's I2C Driver" (Link unten) will bei mir nicht, zumindest 
nicht zusammen mit dem AD9850, den ich damit beglücken wollte. Beim 
Bitsschubsen mit den Registern selbst (TWIF_MASTER_CTRLA, 
TWIF_MASTER_DATA,...) kommt wohl nur jeder dritte Befehl sauber an, weil 
ich irgendwo einen Fehler habe den ich so wohl nicht sehe...

http://nickdademo.blogspot.de/2011/03/how-to-peter-fleury-i2c-driver-and-avr.html

: Verschoben durch User
von Chris K. (Gast)


Lesenswert?


von ASF (Gast)


Lesenswert?

Benutze doch das Atmel Software Framework.

http://asf.atmel.com/docs/latest/asf_drivers.html

Unter Communication und dann TWI.

von Michael D. (sirs)


Lesenswert?

Ich würde gerne das Atmel Studio und das ASF nicht nutzen. Hätte ich 
vielleicht sagen sollen. Alles was ich bisher da drin gesehn hab war so 
umständlich programmiert und ich würds gern verstehn, was diese Register 
da wie tun.

Danke Chris, das sieht schon irgendwie gut aus. Stammt das aus dem ASF? 
Sieht ganz anders aus... Werds mal testen.

: Bearbeitet durch User
von Curby23523 N. (Gast)


Lesenswert?

Im Datenblatt steht doch alles drin? Ich persöhnlich finde die Atmel 
Bibliotheken viel zu unpraktisch, zu viel kommentiert und 
unübersichtlich.

In wenigen Stunden hat man sich seine eigene komplexe Bibliothek 
geschrieben, bzw. innerhalb weniger Minuten eine auf eigenen Bedürfnisse 
zurechtgeschnitte - so mache ich es immer, eigene Bbliothek schreiben 
und immer das hinzufügen, was grade benötigt wird.

von Gerhard G. (xmega)


Lesenswert?

Hallo,

es gibt aber einen einfachen I2C-Treiber von Atmel:
twi_master_Driver.c/twi_master_driver.h

Hier ist alles enthalten was für eine I2C-Schaltung von Nöten ist.

Es gibt eine Funktion mir der du lesen und schreiben kannst.

z.B.

void init_rtc(void)
{

rtc_buf.buffer[0x00]= 0x0E;
rtc_buf.buffer[0x01]= 0x00;
rtc_buf.buffer[0x02]= 0x00;

TWI_MasterWriteRead(&twicMaster,SLAVE_ADDRESS,rtc_buf.buffer,3,0);
while (twicMaster.status != TWIM_STATUS_READY) {/*Wait*/}

}

von Michael D. (sirs)


Lesenswert?

Ja, ich bau mir auch meine eigenen Bibliotheken. Genau aus dem Grund. 
Nur findet man in diesen Datenblätter nie das was man bracuht! So 
unübersichtlich.

Aber danke für euere Hilfe. Ich guck mich da mal durch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.