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();
}
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();
}