Hallo.
Habe eine Verständnisfrage.
Mir erscheinen einige Funktionen in lib_ATSAM7S256.h nicht ganz richtig
zu sein(oder habe ich einen Denkfehler gemacht). 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_BASE_PIOA,AT91C_PIO_PA5) wird PA5 HIGH.
AT91C_PIO_PA5 ist im Prinzip (1<<5), d.h. 0x00000020 was wiederum
bedeutet dass die zuvor gesetzten Pins deaktiviert werden.
Muss es nicht verodert werden? So
1 | pPio->PIO_SODR | = flag;
|
So auch in
1 |
|
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 die zuvor aktivierte Periphärie wieder deaktiviert(?).