1-es Programm auf AT91SAM7S-EK

Gast #454745
Lesenswert?
• ▲
▼
Hallo.

Ich werde verrückt, ich kriege es nicht mal hin eine LED auf dem 
AT91SAM7S-EK-Board leuchten zu lassen.
Mein Programm basiert auf dem Basic-Beispiel und sollte eigentlich 
richtig sein, oder?

// Include Standard files
#include "Board.h"

#define LED_1 (1<<0)


int main()
{//* Begin

  // First, enable the clock of the PIO
       AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA 
) ;

    // then, we configure the PIO Lines corresponding to LED1
    // to be output. No need to set these pins to be driven by the PIO 
because it is GPIO pins only.
       AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, LED_1 ) ;

    // Clear the LED's. On the EB55 we must apply a "1" to turn off LEDs
       AT91F_PIO_SetOutput( AT91C_BASE_PIOA, 0 ) ; // LED einschalten


   while(1);

}//* End

Wie gesagt, das Programm soll nur eine LED leuchten lassen.
#454828
Lesenswert?
• ▲
▼
Da hast Du etwas falsch verstanden.

Es gibt 2 Funktionen für Set und Clear weil beide etwas anderes machen 
;-)

Und beide haben als zweiten Parameter die Pin-Nummer! Nicht ein Zustand.

Also wenn Du PA1 auf High setzen willst schreibst Du

AT91F_PIO_SetOutput( AT91C_BASE_PIOA, PA1 );

Wenn Du ihn auf Low ziehen willst

AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, PA1) ;

wobei PA1 == 1 ist.

Also beides mal '1' als Parameter. Entsprechend bei den anderen Pins.





Gast #454882
Lesenswert?
• ▲
▼
hmmm.
PA1 ist bei mir nicht definiert , kriege eine fehlermeldung.
um PA1 auf high zu setzen muß ich im PIO_SODR-Register das zweite bit 1 
setzen oder  #define PA1 (1<<1)   und der funktion PA1 übergeben. habe 
ich dich richtig verstanden. funktioniert ja jetzt alles auch.
wie ist denn das mit der pin-nummer gemeint PA1 ist ja z.B. pin47?
und was beschreibt parameter AT91C_BASE_PIOA in der funktion (habe bis 
jetzt auch nicht so wirklich verstanden)?
#454905
Lesenswert?
• ▲
▼
Also wenn Du mal ins Datenblatt vom AT91SAM7Sxxx ansiehst sind die 
General I/Os mit PAx bezeichnet. Wobei x im Bereich von 0 - 31 liegt.

Daher kannst Du die Werte 0 bis 31 als Parameter von Clear/Set/Configure 
Output verwenden.

Pin-Nummer war also etwas unglücklich ausgedrückt.

Ich wollte nur darauf hinaus, daß Du beim setzen und löschen den 
gleichen Parameter übergibst.

Es ist nicht wie beim AVR, bei dem Du das PORT-Register entweder mit 0 
oder 1 beschreibst (genauer gesagt ein Bit im PORT-Register änderst).




Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren