www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 1-es Programm auf AT91SAM7S-EK


Autor: Mirko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mirko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so eine bescheuerte Schreibweise habe ich ja noch nie gesehen:

 AT91F_PIO_SetOutput( AT91C_BASE_PIOA, 0 ) ; // LED an
 AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, 1) ; // LED aus

Autor: Mirko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry, ich meine:

AT91F_PIO_SetOutput( AT91C_BASE_PIOA, 0 ) ; // LED AUS
 AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, 1) ; // LED AN

Autor: Dirk Dörr (dirkd)
Datum:

Bewertung
0 lesenswert
nicht 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.






Autor: Mirko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)?

Autor: Dirk Dörr (dirkd)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.