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
Code:
#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
könnte mir da jemand mal einen Tipp geben was ich Falsch mach
wäre sehr nett
Lesezeichen