hallo liebe freunde :) ich muß was mit dem atmega basteln und brauche glaub ich hilfe zum testen erstmal das prgramm : /* * test1.c * * Created: 30.06.2011 11:18:40 * Author: deniz */ #include "i2cmaster.h" #include <avr/io.h> int main(void) { int i; i=1; while(1) { if((schalter[0]>0)||(schalter[1]>0)) for(i;i==2;i++){ LED[1]=0x00; LED[0]=0x00; }else { LED[1]=0xFF; LED[0]=0xFF; } } } soll nur aus 2 globalen arrays schalter[] überprüfen ob eine der schalter gedrückt ist wen ja soll er in die arrays led[0,1] die werte 00 schreiben der twi code fragt ab ob in led[0,1]was drin steht wen ja soll er die 8bit an dieausgänge des PCA´s 9555d übertragen ,und immer so weiter wen in den leds das gleiche drin steht was vorher war dann soll er weiter die schalter auslesen leider geht garnichts an meinem atmega keine leds keine schalter könnt ihr mir sagen was ich da falsch gemacht hab das ist überhaut das erste mal mit mikrocontroller :/ also seit etwas nachgiebig danke für eure hilfe mein code für twi /* * Appi2c.c * * Created: 27.06.2011 13:43:58 * Author: deniz */ #include <avr/io.h> #include "i2cmaster.h" /*#define PCA1 0x40;//0100000"0(r/w)" #define PCA2 0x42;//0100001"0(r/w)" #define PCAComOut1 0x10//00010000 #define PCAComOut0 0x20//00100000 #define PCAComin1 0x40//01000000 #define PCAComin0 0x80//10000000 #define Maske 0x01//00000001*/ unsigned char LED[3]; unsigned char schalter[3]; int main(void) { /* int a=0xFF; int b=0x5F; LED[0]=a; LED[1]=b; */ unsigned char Maske = 0x01; unsigned char adrPCA1 = 0x40; unsigned char adrPCA2 = 0x42; unsigned char PCAComOut1 = 0x10;//00010000 unsigned char PCAComOut0 = 0x20;//00100000 unsigned char PCAComin1 = 0x40;//01000000 unsigned char PCAComin0 = 0x80;//10000000 unsigned char ret; i2c_init(); while(1) { if(TWSR==1) { //abfrage ob leitung frei //Fehler leitung nicht frei LED PORTB6 an } else { // LED PORTB6 aus // LED[2]= // überprüfen ob empfangen/gesendet wird pca1 // port0.7"letztes bit" if((LED[1]&Maske)>0) { //überprüfe ob array LED [1,2] gleich LED[3,4] ist if(((LED[0]&LED[2])==0)&&((LED[1]&LED[3]))) { //ende der schleife zurück zur while } else { //for() //twi master routine led{} // setze adresse des PCA + schreibbit ret = i2c_start(adrPCA1+I2C_WRITE); if ( ret ) { // fehler mit der start adresse gerä t nicht gefunden i2c_stop(); //PORTA=0x; // port ausgeben für gerät nicht gefunden } else { //die command für ports 1.x werden gesendet // zum schreiben ??? richtig ? i2c_write(PCAComOut0); // die 8bits die in array led[1]gespeichert sind // werden übertragen i2c_write(LED[0]); i2c_stop(); //stop ,) i2c_rep_start(adrPCA2+I2C_WRITE); // die command für ports 1.x werden gesendet // zum schreiben ??? richtig ? i2c_write(PCAComOut1); // die 8bits die in array led[1]gespeichert // sind werden übertragen i2c_write(LED[1]); i2c_stop(); //stop LED[3]=LED[1]; LED[2]=LED[0]; */ /*ret = i2c_start(adrPCA2+); if ( ret ) { // fehler mit der start adresse gerät nicht gefunden i2c_stop(); // port ausgeben für gerät nicht gefunden //PORTA=0x; } else { // die command für ports 1.x werden gesendet // zum schreiben ??? richtig ? i2c_write(PCAComOut1); // die 8bits die in array led[1]gespeichert // sind werden übertragen i2c_write(LED[1]); i2c_stop(); //stop LED[3]=LED[1]; /*oder: int led0; led3=LED[1]; LED[3]=led3; */ } } } } else { //zum test vielleicht eine LED an machen an portaob //er im emfangen zustand ist //if(schalter[1,2]==schalter[3,4]) { //keine schalter gedrückt schleife von vorn //else { ret = i2c_start(adrPCA1+I2C_READ); // die command für ports 1.x werden gesendet // zum schreiben ??? richtig ? i2c_write(PCAComin1); schalter[0] = i2c_readNak(); i2c_rep_start(adrPCA2+I2C_READ); i2c_write(PCAComin0); schalter[1] = i2c_readNak(); i2c_stop(); } /* copy von schalter und led auf array [3 und 4 ] ablegen */ } } } ich weis garnicht ob ich twi richtig benutzt habe irgendwie klapt es nicht muß ich mein test1.c an die twi dran hängen mit include damit ich das auf dem atmel bekomme ? oder packt er beide programme in den flash ,wen ich sie einzel drauf packe "das haken wech machen bei erase device before programming " im avr studio 5
Dann must du uns vielleicht mal verraten, was du am I2C angeschlossen hast.
2pca9555d port expender und an den sind led´s und schalter angeschlossen
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.