Guten Abend,
ich habe es jetzt mal im Slave versucht den Taster Abzufragen und auch im Slave eine LED einzuschalten aber es klappt nicht nur die Serielle Verbindung klappt
könnte mir da jemand mal einen Tipp geben was ich Falsch machCode:#include <util/twi.h> //enthält z.B. die Bezeichnungen für die Statuscodes in TWSR #include <avr/interrupt.h> //dient zur Behandlung der Interrupts #include <stdint.h> //definiert den Datentyp uint8_t #include "twislave.h" #include "uart.h" //UART-Lib von P- Fleury #include <stdlib.h> //nötig für Zahlumwandlung mit itoa #include <util/delay.h> #include <avr/io.h> // LEDs sind high-active geschaltet #define LED_AN(LED) (PORTD |= (1<<(LED))) #define LED_AUS(LED) (PORTD &= ~(1<<(LED))) #define LED1 PB0 #define LED2 PB1 // TASTER ist high-active geschaltet #define TASTER PD2 #define TASTER_GEDRUECKT() (PIND & (1<<TASTER)) #define BAUD 9600 //Baudrate #define SLAVE_ADRESSE 0x50 //Die Slave-Adresse //Hilfsfunktion, um Zahlen über das UART auszugeben void uart_puti( const int val ) { char buffer[8]; uart_puts( itoa(val, buffer, 10) ); } int main (void) { DDRA &= ~(1<<TASTER); // Port B: Eingang für Taster DDRB |= (1<<LED1) | (1<<LED2); // Port D: Ausgang für LED1 und LED2 //TWI als Slave mit Adresse slaveadr starten init_twi_slave(SLAVE_ADRESSE); //i2cdatamit Werten füllen, die der Master auslesen und ändern kann for(uint8_t i=0;i<i2c_buffer_size;i++) { i2cdata[i]=10+i; } //Serielle Schnittstelle aktivieren uart_init((UART_BAUD_SELECT((BAUD),F_CPU))); uart_puts("I2C-Test\r\n"); uart_puts("Teste I2C-Slave mit Adresse "); uart_puti(SLAVE_ADRESSE); uart_puts("\r\n"); uart_puts("\r\n"); //Leerzeile void ausgabe_RS232() { uart_puts("i2cdata:\r\n"); for(uint8_t i=0;i<i2c_buffer_size;i++) { uart_puti(i2cdata[i]); uart_puts("\r\n"); } uart_puts("\r\n");//leerzeile _delay_ms(1000); } //in einer Endlosschleife den Inhalt der Buffer ausgeben while(1) { { ausgabe_RS232(); } if (TASTER_GEDRUECKT()) { LED_AN(LED1); } } //end.while } //end.main
wäre sehr nett






Zitieren

Lesezeichen