Hallo ich Versuche eine I2C-Treiber für das Hardware Modul des MSP430F16x zu schreiben. Es funktioniert auch schon etwas. Das Problem ist, wenn ich zum Beispiel folgendes schreiben, das ich immer nur das HighByte von einem LM75 bekomme. i2c_start(SLAVE1); temp0 = i2c_readAck(); lcd_puts_int(temp0,0,1); temp1 = i2c_readAck(); lcd_puts_int(temp1,0,2); Als o hier zum Bsp.: 23 23 und nicht 23 128 oder so was! Das Problem liegt mit sicherheit bei der Libary, vielleich kann mir jemand mal weiterhelfen. ==> ich habe schon einige zeit gebraucht bis ich überhaupt das bekommen habe. Das Ziel ist es, eine Lib zu schreiben die wie die vom AVR(Lib von Peter Fleury) funktioniert. Dadurch kann ich dan meine alten c und h files von diversen Sensoren auch auf dem MSP verwenden. Besten Dank im Voraus mfg mathias
Hat den noch niemand von hier das Hardware I2C Modul des msp430f1611 verwendet? mathais
Bei TI gibts ein Beispiel zur Ansteuerung eines EEProms mit dem Hardware I²C und F169 vielleicht hilft das weiter ? such mal nach slaa208 gruß Thomas
Danke, Das kenne ich schon, aber ich möchte es ohne Innterrupts realisieren. Ich hoffe ich bekomms hin. mfg mathias
Ich benutze am F1611 die nachfolgenden Routinen, klappt bei mir sehr gut (IIC-Inteface für EEPROM und CMOS-Kamera) (main ist ein bißchen gekürzt)
Danke, aber ich suche eine Lösung mit dem Hardware I2C ->Module welches die F15x und F16x Serie hat. mfg mathias
Sorry, hatte ich überlesen. Ich muß leider kompatibel zum F149/F169 bleiben, daher die SW-Lösung.
Hallo, ich komme nicht weiter mit dem I2C Bus. Die Beispiele von TI kenne ich, aber die lesen zum Beispiel bei dem DAC alle 3Bytes in einer Funktion. Wenn ich auch msb und lsb in einer einzigen Funktion lese, geht das auch so zum Bsp.: void i2c_read(void) { while (I2CBUSY & I2CDCTL); // wait for i2C ready i2c_readInit(); // set to readMode I2CTCTL |= I2CSTT + I2CSTP; // I2CRM =0; Receive, ST, SP while((I2CIFG & RXRDYIFG) != RXRDYIFG); // wait for Data Ready msb = I2CDRB; while((I2CIFG & RXRDYIFG) != RXRDYIFG); // wait for Data Ready lsb = I2CDRB; } Aber ich möchte wenns geht Byte für Byte mit einer Funktion lesen. Also init start high = i2c_readAck(); low = i2c_readNak(); stop Die readNak() funktioniert auch aber die readAck nicht, hat niemand sowas schonmal gemacht? Hier noch die restlichen Funktionen. void i2c_init(void){ P3SEL |= 0x0A; // select module function for the used I2C pins P3DIR &= ~0x0A; // select ports for I2C function U0CTL |= I2C+SYNC; // (1) Select I2C mode with SWRST=1 U0CTL &= ~I2CEN; // (2) disable the I2C module I2CTCTL = I2CSSEL_2+I2CRM; // byte mode, repeat mode I2CPSC = 0x02; // I2C clock = clock source/I2CPSC // für 8MHz Quarz / (3+1) ==> 2MHz I2CSCLH = 0x08; // SCL high period = (8+2)*I2C clock // 1/2MHz ==> 0.5µSec * 10 => 5µSec I2CSCLL = 0x08; // SCL low period => wie I2CSLH // SCL Low, 5µSec + SCL High, 5µSec = 10µSec // ==> 1/10µSec = 100kHz I2C Clock I2CIFG = 0; } unsigned char i2c_start(unsigned char address) { //I2CNDAT = 0x01; // I2C Data count (one byte) I2CSA = address; //set I2C Slave Address U0CTL |= I2CEN; // (4) set I2CEN via software return 0; } static void i2c_readInit(void){ // Initialization of the I2C Module for Read operation. U0CTL |= MST; // define Master Mode I2CTCTL &= ~I2CTRX; // I2CTRX=0 => Receive Mode (R/W bit = 1) I2CIFG &= ~TXRDYIFG; // clear Receive Data ready //I2CIE = RXRDYIE; // enable Receive ready interrupt } unsigned char i2c_readNak(void) { while (I2CBUSY & I2CDCTL); // wait for i2C ready i2c_readInit(); // set to readMode I2CTCTL |= I2CSTT + I2CSTP; // I2CRM =0; Receive, ST,STP while((I2CIFG & RXRDYIFG) != RXRDYIFG); // wait for Data Ready return I2CDRB; } unsigned char i2c_readAck(void) { while (I2CBUSY & I2CDCTL); // wait for i2C ready i2c_readInit(); // set to readMode I2CTCTL |= I2CSTT ; // I2CRM =0; Receive, ST while((I2CIFG & RXRDYIFG) != RXRDYIFG); // wait for Data Ready return I2CDRB; } @Martin Danke nochmal, was machst du eigentlich mit einer CMOS-Kamera am msp? Bildverarbeitung? Besten Dank im Voraus mfg mathias
Hmmm, vielleicht ist das read_init() zuviel? (Bei mehreren aufeinanderfolgenden Bytes...) Und: Ja, so eine Art Bildverarbeitung. Es geht um eine einfache optische Zeichenerkennung. Ahoi, Martin
hallo Mathias hier ist Fari ich schreibe auch ein API. Ich benutze MSP430F169 ich muss data seb´nden und empfangen duch Baustein DS2482( i2c to 1-Wire bridge). wenn du code hast oder irgendwelche beispiel hast kannst bitte per email schiken frsn74@hotmail.com Ich benutze IAR workbench. MFG Fari
Hello, I have a Problem i m using MSP430F169 as i2c Master and Bridge DS2482-100 as Slave and as 1-Wire master. After that I am using DS1923 temp Sensor. I am new in this embedded field thats why I just want to know If I send Read ROM Command 0x33. How I could Read ths Uniquie ID of iButton [02(MSB) 00 00 00 02 E1 93 41(LSB)]...I dont know, how will be I sure that I get this Uniquie ID. tahnks
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.