PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVRGCC: RNKeylcd über I2C von RNControl steuern



AlexKeidel
27.09.2007, 18:18
Hallo,
ich habe hier ein kleines Problem, wo ich nicht draufkomm auch nach längerem recherchieren.

Ich benutze den AVRgcc mit AVRStudio, die i2cmaster lib von Herrn Fleury
dazu RnControl V1.4 und RNKeylcd

Ich möchte das Display gerne mit i2c steuern, aber schon beim zusammenbauen einer einfachen Funktion wie die i2cSendChar
stosse ich auf eine Hürde...

Bei diesem Programm kommt als Ausgabe.

HALLO
¹H¹A¹L¹L¹O

Ich kann mir nicht erklären woher die hochgestellte 1 kommt beim Funktionsaufruf.
Vielleicht kann mir ja einer antworten welchen Fehler ich dort begehe.

Danke im Vorraus


#include <avr/io.h>
#include <avr/interrupt.h>
#include "include/i2cmaster.h"

const static unsigned char Rnkeylcd= 0x40;
unsigned char ret;
void i2cSendChar(unsigned char slaveid, unsigned char c);
void Rnlcd_clr(unsigned char slaveid);
void Rnlcd_cr(unsigned char slaveid);
void Rnlcd_Hallo(unsigned char slaveid);

int main(void){
i2c_init();
Rnlcd_clr(Rnkeylcd);

i2c_start_wait(Rnkeylcd+I2C_WRITE);
i2c_write('H');
i2c_stop();
i2c_start_wait(Rnkeylcd+I2C_WRITE);
i2c_write('A');
i2c_stop();
i2c_start_wait(Rnkeylcd+I2C_WRITE);
i2c_write('L');
i2c_stop();
i2c_start_wait(Rnkeylcd+I2C_WRITE);
i2c_write('L');
i2c_stop();
i2c_start_wait(Rnkeylcd+I2C_WRITE);
i2c_write('O');
i2c_stop();

Rnlcd_cr(Rnkeylcd);

i2cSendChar(Rnkeylcd,'H');
i2cSendChar(Rnkeylcd,'A');
i2cSendChar(Rnkeylcd,'L');
i2cSendChar(Rnkeylcd,'L');
i2cSendChar(Rnkeylcd,'O');

return(0);
}

void i2cSendChar(unsigned char slaveid,unsigned char c){
i2c_start_wait(slaveid+I2C_WRITE);
i2c_write(c);
i2c_stop();
}
void Rnlcd_clr(unsigned char slaveid)
{

i2c_start_wait(slaveid+I2C_WRITE);
i2c_write(12);
i2c_stop();
}
void Rnlcd_cr(unsigned char slaveid)
{
i2c_start_wait(slaveid+I2C_WRITE);
i2c_write(13);
i2c_stop();
i2c_start_wait(slaveid+I2C_WRITE);
i2c_write(10);
i2c_stop();

}