PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I2c



DerNeuling
24.05.2011, 12:59
Hallo Com,
ich habe mir dieses Display von Conrad gekauft und wollte darauf(über den i2C Bus) etwas schreiben.
Display:
http://www.conrad.de/ce/de/product/191621/DISPLAY-RP5RP6-BLAU-MIT-BACKLIGHT/2420181&ref=listIch hab dieses Programm geschrieben:
#include "RP6RobotBaseLib.h"

#include "RP6I2CmasterTWI.h"


void I2C_transmissionError(uint8_t errorState)
{
writeString_P("\nI2C ERROR - TWI STATE: 0x");
writeInteger(errorState, HEX);
writeChar('\n');
}

#define PCF8574_LCD_ADR 0x70

void task_meinProg(void)
{
static uint8_t writeString_P = 3;

if(writeString_P == 3)

I2CTWI_transmitByte(PCF8574_LCD_ADR, (writeString_P) );
writeString_P("Hallo,ich bin Robby!\n");
}

int main(void)
{
initRobotBase();

I2CTWI_initMaster(100);

I2CTWI_setTransmissionErrorHandler(I2C_transmissio nError);

setLEDs(0b111111);
mSleep(500);
setLEDs(0b000000);

powerON();



while(true)
{
task_I2CTWI();
task_RP6System();
}
return 0;
} Leider hat das ganze nicht funktioniert.
Also habe ich nun ein paar Fragen:
Wo muss ich das Display genau anschließen( XBUS1,XBUS2,USRBUS2,USRBUS1)?
Woher weiß ich welche Adresse ich ansteuern muss?
I2CTWI_transmit2Bytes(10, 2, 128 ) Das stand in der Anleitung(10 ist die Adresse und der Rest sind Bytes)Wie mache ich daraus den Befehl,dass das Display "Hallo,ich bin Robby!" schreibt?

void task_meinProg(void)
{
static uint8_t writeString_P = 3;

if(writeString_P == 3)

I2CTWI_transmitByte(PCF8574_LCD_ADR, (writeString_P) );
writeString_P("Hallo,ich bin Robby!\n");
} Dieser Teil bereitet mir die meisten Probleme.Ich muss writeString_P definieren,das sagte mir jedenfalls Porgrammers Notepad bei den Fehlern.
ich habe dann wie in einem Beispielprogramm eifnach mal die Zahl 3 eingesetzt,wie löse ich das ganze jetzt?

mfG

SlyD
24.05.2011, 14:13
Hallo,

ich hoffe Du hast das Display noch NICHT an der RP6Base (dem Mainboard) angeschlossen.
Denn das ist NICHT für die RP6Base gedacht sondern für das RP6-M32 Erweiterungsmodul.
Zitat Produktbeschreibung: "Es ist passend für das RP6Control M32 und RP6 CC-PRO MEGA128 Modul."

Das Diplay hat keinen I2C Bus und natürlich ist die Pinbelegung völlig anders als beim XBUS.
Nur die beiden Erweiterungsmodule haben einen passenden Anschluss für das Display.


Zu dem Programm:
Schau Dir mal in der Anleitung an was writeString denn überhaupt ist und was das machen soll.
(das ist eine Funktion, keine Variable).
Es wäre besser Du schreibst erstmal nur Programme für die normale Hardware des Roboters bzw. gehst die Beispiele Schritt für Schritt durch.
Wenn Du das verstanden hast, DANN kannst Du neue Hardware in Betrieb nehmen sonst weisst Du ja nicht obs nun an der Software oder an der Hardware liegt.


MfG,
SlyD

RolfD
24.05.2011, 14:53
SlyD hats ja schon erklärt, dein Display hat aber so rein garnichts mit I2C zu tun... siehe auch
http://www.rn-wissen.de/index.php/LCD-Modul_am_AVR
und
http://www.rn-wissen.de/index.php/I2C

Es gibt aber Umsetzer, die man da zwischen schalten kann um aus I2C ein LCD Bus zu bedienen. So wie z.B.: http://www.trade.channaa.com/html/i2c_lcd_adapter.html

Sowas kann man sich mit einem PCF 8574 aber auch recht einfach selbst zusammen stricken

Mit "LCD ADAPTER I2C" in Google findest Du massenweise weitere. Conrad bietet z.B. auch echte I2C Displays, die für Dein Fall wohl besser, aber auch teuerer sind.

Hast Du Dir eigentlich mal das Handbuch zum RP6 angesehen?

DerNeuling
25.05.2011, 18:05
Ja das Handbuch hab ich mir durchgelesen.Ob ich alles verstanden habe, ist da ne andere Frage^^.Naja dann werd ich einfach nochmal von vorne anfangen,wird schon irgendwann klappen.Thx