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