www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schwierigkeiten mit SAM7-H64


Autor: Antoine Kaufmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich versuche schon seiit rund einer Stunde die Statusled auf meinem 
SAM7-H64 von Olimex zum leuchten zu bringen. Der Code den ich verwende 
ist das Beispiel von Olimex, das ich leicht modifiziert habe, damit alle 
ports angeschaltet werden:

//it's a simple delay

void Delay (unsigned long a) { while (--a!=0); }



int main()

{

  //Init frequency

  InitFrec();

  //Init leds

  InitPeriphery();



  // loop forever

  while(1)

  {

    m_pPio->PIO_CODR = 0xFFFFFFFF;  //set reg to 0 (led2 on)

    Delay(800000);             //simple delay

    m_pPio->PIO_SODR = 0xFFFFFFFF;  //set reg to 1 (led2 off)

    Delay(800000);             //simple delay

  }

}




Auch die Pins an der Stiftleiste machen keinen Wank. Das flashen mit 
OpenOCD funktioniert einwandfrei.

Woran könnte das ligen?


Vielen Dank im Voraus

Gruss Antoine Kaufmann

Autor: let (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich vermisse die Zuweisung an das 'Data Direction Register' des PIO
Controllers (m_pPio->PIO_OER = 0xffffffff ?). Wird vielleicht
in 'InitPeriphery()' gemacht. Nach einem Reset sind ja alle Ports als
Eingang konfiguriert.

Mit den SAMs kenne ich mich aber nicht aus, ich benutze einen
LPC2148. Und den auch erst seit kurzem.

 - Michael

Autor: Antoine Kaufmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo, das ist in dieser Funktion:

...
  p_pPio->PIO_PER = 0xFFFFFFFF;    //Enable PA17

  p_pPio->PIO_OER = 0xFFFFFFFF;    //Configure in Output
...

Autor: Dirk Dörr (dirkd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du auch die Clock für PIOA aktiviert?

//*--------------------------------------------------------------------- 
-------
//* \fn    AT91F_PMC_EnablePeriphClock
//* \brief Enable peripheral clock
//*--------------------------------------------------------------------- 
-------
__inline void AT91F_PMC_EnablePeriphClock (
  AT91PS_PMC pPMC, // \arg pointer to PMC controller
  unsigned int periphIds)  // \arg IDs of peripherals to enable
{
  pPMC->PMC_PCER = periphIds;
}

AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, ( 1 << AT91C_ID_PIOA ));

Autor: Antoine Kaufmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo hab ich auch:

//enable the clock of the PIO

p_pPMC->PMC_PCER = 1 << AT91C_ID_PIOA;

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Compileroptimierung eingeschaltet? Dann düfte das delay in der Form 
nicht seinen Zweck erfüllen (ist dann etwas too simple). Testweise statt 
void Delay (unsigned long a) { while (--a!=0); }
void Delay( unsigned long a ) 
{
  volatile unsigned long i;
  for ( i=0; i<a; i++ ) {
    ;
  }
}

Alle Port I/Os zu wackeln ist vielleicht auch keine gute Idee. 
Vielleicht beisst sich das mit weiteren Bauteilen auf dem Board. Besser 
nur an dem Pin "wackeln", an dem die LED angeschlossen ist.

Inititialisierung von p_pPMC und p_pPio wird nicht gezeigt - sicher mit 
richtiger Adresse initialisiert? InitFrec() wird nicht gezeigt - sicher, 
das diese Funktion nicht "hängt"? Einstellung zur Code-Generierung 
korrekt? Ist vielleicht auf "RAM-debugging" eingestellt? Dafür erzeugter 
Code kann dann nicht ohne Weiteres einfach ins Flash geschrieben werden. 
Compiler/Toolchain? Startup-Code?, Linker-Einstellung/Linker-Script?

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.