Erstmal einmal den gesamten Code damit ihrs im Zusammenhang habt:
So wie funtktioniert das mit dem buf[] das ist wenn ich es richtig sehe ein array und wenn ich dann dieses stück code sehe:Code:/* motormodul.c *************************************************** *************************************************** $Log:$ */ #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <inttypes.h> /* fuer uint32_t */ #include <avr/delay.h> #include "twi.h" #include "TWI_Master.h" #define LED1 PC0 #define LED2 PC1 #define LED_PORT PORTC #define KEY1 PC2 #define KEY2 PC3 #define KEY_PORT PINC #define ENABLE PB0 #define ENABLE_PORT PINB #define MOTOR_PORT PORTB #define MOTOR1_RICHTUNG PB3 #define MOTOR1_PWM PB1 #define MOTOR2_RICHTUNG PB4 #define MOTOR2_PWM PB2 #define SWAP(port, pin) (port ^= _BV(pin)) #define READ 1 #define WRITE 0 void init_io(void); /* Adresse vom Slave */ BYTE slave_adress = 0x40; BYTE buf[4]; int main (void) { /* Ports einstellen */ init_io(); /* TWI Initialisieren */ TWI_Master_Initialise(); /* Interrupts global aktivieren */ sei(); /* Hauptprogramm */ for(;;) { /* Ausgänge auf High setzen */ buf[0] = slave_adress | WRITE; buf[1] = 0xFF; TWI_Start_Transceiver_With_Data( buf, 2); /** Eingänge lesen **/ buf[0] = slave_adress | READ; TWI_Start_Transceiver_With_Data( buf, 1); // Adresse senden /* Daten lesen, in buf[0] steht die Slave Adresse, danach kommen die gelesenen Daten */ TWI_Get_Data_From_Transceiver( buf, 2); _delay_loop_2(16000); if( buf[1] == 0xFF) sbi( LED_PORT, LED1); else cbi( LED_PORT, LED1); } } void init_io(void) { /* PB0 als Eingang alle anderen als Ausgang */ DDRB = _BV(PB1)| _BV(PB2)| _BV(PB3)| _BV(PB4)| _BV(PB5); PORTB = _BV(PB0); /* Pull-Up PB0 ein */ DDRC = _BV(LED1)| _BV(LED2); /* PC0 und 1 als Ausgang */ PORTC = _BV(KEY1)| _BV(KEY2); /* Pull-Ups Eingang */ DDRD = 0x00; /* Port D als Ausgang */ }
da werden 2 werte in den array geschrieben aber nur einer übertragen warum oder seh ich da etwas falsch?Code:/* Ausgänge auf High setzen */ buf[0] = slave_adress | WRITE; buf[1] = 0xFF; TWI_Start_Transceiver_With_Data( buf, 2);







Zitieren

Lesezeichen