falkenroby
28.03.2007, 17:37
ich dacht das lesen der I/O's vom 8574 hätte bei mir geklappt.
fehler !!!
ich hatte zwar werte bekommen aber mich erst einmal nicht
weiter darum gekümmert.
heute wollte ich mich noch einmal mit dem lesen der ports vom 8574P
beschäftigen und habe mich dann doch etwas gewundert!
also erst mal mein code:
#include <stdlib.h>
#include <avr/io.h>
#include "i2cmaster.h"
#include "asuro.h"
#define Dev8574 0x40 // device address of PCF 8574, see datasheet
int main(void)
{
unsigned char wert;
int i;
Init(); // init Asuro
i2c_init(); // init I2C interface
while(1)
{
i2c_rep_start(Dev8574+I2C_READ);
wert=i2c_readNak();
i2c_stop();
char text1[6] =" ";
itoa(wert, text1, 6);
SerWrite(text1, 6);
SerWrite(" x", 6);
SerWrite("\r\n", 2); // Zeilenvorschub
for (i=0; i<200; i++){Sleep(155);}
}
return 0;
}
und damit erhalte ich folgende ausgabe:
alle offen = 1103
P0 auf 0 = 1102
P1 auf 0 = 1101
P2 auf 0 = 1055
P3 auf 0 = 1051
P4 auf 0 = 1035
P5 auf 0 = 1011
P6 auf 0 = 515
P7 auf 0 = 331
wer sieht was was ich nicht sehe (oder verstehe)
fehler !!!
ich hatte zwar werte bekommen aber mich erst einmal nicht
weiter darum gekümmert.
heute wollte ich mich noch einmal mit dem lesen der ports vom 8574P
beschäftigen und habe mich dann doch etwas gewundert!
also erst mal mein code:
#include <stdlib.h>
#include <avr/io.h>
#include "i2cmaster.h"
#include "asuro.h"
#define Dev8574 0x40 // device address of PCF 8574, see datasheet
int main(void)
{
unsigned char wert;
int i;
Init(); // init Asuro
i2c_init(); // init I2C interface
while(1)
{
i2c_rep_start(Dev8574+I2C_READ);
wert=i2c_readNak();
i2c_stop();
char text1[6] =" ";
itoa(wert, text1, 6);
SerWrite(text1, 6);
SerWrite(" x", 6);
SerWrite("\r\n", 2); // Zeilenvorschub
for (i=0; i<200; i++){Sleep(155);}
}
return 0;
}
und damit erhalte ich folgende ausgabe:
alle offen = 1103
P0 auf 0 = 1102
P1 auf 0 = 1101
P2 auf 0 = 1055
P3 auf 0 = 1051
P4 auf 0 = 1035
P5 auf 0 = 1011
P6 auf 0 = 515
P7 auf 0 = 331
wer sieht was was ich nicht sehe (oder verstehe)