Gast
#3805340
Hallo ich setze mich mit dem ATXMEGA32E5 auseinander dabei sind mir ein paar Sachen unklar vermute es ist was xmega spezifisches. Folgendes Programm funktioniert soweit, aber warum muss ich in der main den PORTD(4)auf high setzen nachdem ich den als Ausgang definiert habe tu ich es nicht leuchtet die LED am PORTD(4) sofort. Dann die zweite Sachen das einlesen von dem Taster an PORTD(0) geht nur über bitmanipulation nicht über den Direktbefehl PORTD.IN gibt es da einen anderen Befehl bei xmega bzw. wie kann ich nur den einen PIN0 an PORTD einlesen nicht gleich den ganz PORTD. Kann mir einer bitte weiter helfen? #include <avr/io.h> #define F_CPU 8000000 #include <util/delay.h> int main(void) { PORTD.DIR |= PIN4_bm; PORTD.OUT |= PIN4_bm; PORTD.DIR &= ~PIN0_bm; PORTD.PIN0CTRL |= PORT_OPC_PULLUP_gc; uint8_t tastenwert_vorher = 1,tastenwert_jetzt = 0; uint8_t anzahl = 0; uint8_t i; while(1) { tastenwert_jetzt = PORTD.IN & 0x01; if (tastenwert_jetzt != tastenwert_vorher) { if(tastenwert_jetzt == 0) { anzahl++; } switch (anzahl) { case 1: PORTD.OUT &= ~PIN4_bm; break; case 2: PORTD.OUT |= PIN4_bm; break; case 3: for (i=0; i<= 9; i++) { _delay_ms(200); PORTD.OUTTGL = (1 << PIN4); } default: anzahl = 0; } } tastenwert_vorher=tastenwert_jetzt; _delay_ms(10); } }