Hi, ich sitze gerade an einem ATxmega32A4 und versuche verzweifelt, die
internen PullUp Widerstände zu aktivieren. Ich habe einen Taster gegen
Masse angeschlossen und will eine LED schalten. Das funktioniert soweit
auch, aber der Eingang "floated", wenn der Taster nicht betätigt ist.
Die LED geht also willkürlich an, bis ich dem Eingang ein Potential
gebe.
Ich habe dazu das Port Example aus den AppNotes etwas modifiziert und
ich nutze die mitgelieferte port_driver.c
1 | void Example1( void )
|
2 | {
|
3 | /* Configure data direction for PORTC and PORTD. */
|
4 | //PORTC.DIRCLR=0XFF;
|
5 | PORT_ConfigurePins( &PORTC,
|
6 | 0xFF,
|
7 | false,
|
8 | false,
|
9 | PORT_OPC_WIREDANDPULL_gc,
|
10 | PORT_ISC_BOTHEDGES_gc );
|
11 | PORT_SetPinsAsInput( &PORTC, 0xFF );
|
12 | PORT_SetPinsAsOutput( &PORTD, 0xFF );
|
13 |
|
14 | /* Continously copy the value from PORTC to PORTD. */
|
15 | do {
|
16 | uint8_t temp = PORT_GetPortValue( &PORTC );
|
17 | PORT_SetOutputValue( &PORTD, temp );
|
18 | } while (true);
|
19 | }
|
PORTC soll komplett als Eingang dienen, PORTD als Ausgang. Ich hab im
Prinzip verstanden, was ich zu tun hab, aber entweder hab ich noch nicht
verstanden, WIE ich es tun muss oder irgendwas ist faul.
Ich nutze eine relativ aktuelle Version von WinAVR (20090313, soweit ich
sehe die letzte)