Moin.
Habe da so eine Verständnisfrage.
Manche Funktionen aus libATSAM7S256.h erscheinen mir nicht ganz
richtig(oder mache ich einen Denkfehler?). So z.B.
1 | __inline void AT91F_PIO_SetOutput(
|
2 | AT91PS_PIO pPio, // \arg pointer to a PIO controller
|
3 | unsigned int flag) // \arg output to be set
|
4 | {
|
5 | pPio->PIO_SODR = flag;
|
6 | }
|
Mit AT91F_PIO_SetOutput(AT91C_PIO_PA28) wir PA28 HIGH gesetzt.
AT91C_PIO_PA28 ist ja (1<<28), d.h. (1<<28)=0x10000000. Was wiederum
heist, dass alle zuvor gesetzten Pins LOW werden(?). Muss es nicht so
1 | pPio->PIO_SODR | = flag;
|
sein?
Oder in
1 | __inline void AT91F_PIO_CfgPeriph(
|
2 | AT91PS_PIO pPio, // \arg pointer to a PIO controller
|
3 | unsigned int periphAEnable, // \arg PERIPH A to enable
|
4 | unsigned int periphBEnable) // \arg PERIPH B to enable
|
5 |
|
6 | {
|
7 | pPio->PIO_ASR = periphAEnable;
|
8 | pPio->PIO_BSR = periphBEnable;
|
9 | pPio->PIO_PDR = (periphAEnable | periphBEnable); // Set in Periph mode
|
10 | }
|
wird hier nicht auch die zuvor eingestellte Peräpherie deaktiviert?