Rowley Crossworks AT91sam7x-ek PIO

OP #773299
Lesenswert?
• ▲
▼
Hallo,

ich arbeite mit (zum ersten mal) einem Atmel  AT91SAM7x-EK Board in 
verbindung mit dem Rowley Crossworks 1.7.
Bisher läuft darauf FreeRTOS 4.5. Ich habe einen extra Task erstellt, 
der auch läuft. Mit diesem Task möchte ich mit einem Infineon Sensor 
kommunizieren (SENT Protokoll)

Jetzt hab ich gewisse Probleme den PIO Controller richtig anzusprechen.

Mein Problem ist, dass ich das System, wie man mit den einzelnen 
Funktionen der I/O Ports umgeht etc. nicht verstehe. Gibt es dazu eine 
gut verständliche Dokumentation? Ideal wäre natürlich deutsch, aber ich 
möchte nicht anmasend sein ;)
Ich mein aber nicht die 670 Seiten Boardbeschreibung mit den einzelnen 
Funktionen, die versteh ich schon. Mein Problem liegt wiegesagt beim 
Programmieren

Erste versuche Register zu aktivieren etc. schauen so aus.
1
void vCheckit (void *pvParameters){
2

3

4

5
  ( void ) pvParameters; //for unused params
6
  AT91C_BASE_PIOA->PIO_PDR = SENSIN; //disables Register PIOA5
7
  AT91C_BASE_PIOA->PIO_PER = SENSIN; //enables Register PIOA5
8
  AT91C_BASE_PIOA->PIO_IFSR = SENSIN; //Set Register to Output
9

10

11
  if (AT91C_BASE_PIOA->PIO_IFSR == '1'){
12
  const int state = 1
13
    }
14

15

16
  for(;;){
17
}
18
}
Sehr primitiv, aber irgendwie muss man ja den Einstieg finden ;)

Für Ratschläge wäre ich sehr Dankbar, evtl ergänzend auch 
Literaturempfehlung ?
#773328
Lesenswert?
• ▲
▼
Deine PIO Kontroller Einstellungen sind etwas seltsam.

1) Takt für PIO Kontroller freischalten

  AT91C_BASE_PMC->PMC_PCER = 0x00000004  # Bit 2 for PIOA

2) Entsprechende Pins einschalten

  AT91C_BASE_PIOA->PIO_PER = SENSIN; //enables Register PIOA5

3) Pins als Ausgang konfigurieren

  AT91C_BASE_PIOA->PIO_OER = SENSIN; // PIOA5 as output

4) Pins toggeln

  AT91C_BASE_PIOA->PIO_CODR = SENSIN; // clear PIOA5
  AT91C_BASE_PIOA->PIO_SODR = SENSIN; // set PIOA5

Ich hoffe das hilft für den Anfang.
Gast #773370
Lesenswert?
• ▲
▼
Danke schonmal :)
Der takt wurde glaube ich, wenn ich das richtig sehe schon im main 
freigeschaltet mit:

 AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA;

Daher brauch ich das hier nicht mehr oder?

Sorry für die dummen Fragen ;) Aber ist echt nicht grad leicht da rein 
zu kommen.
Gäbe es evtl noch Tips für online Dokumentationen womit man da mal 
durchsteigen kann? Sitz jetzt schon recht lang dran und komm immer nur 
in mini Schritten vorran.
#773379
Lesenswert?
• ▲
▼
> Der takt wurde glaube ich, wenn ich das richtig sehe schon im main
> freigeschaltet mit:
>
>  AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA;
>
> Daher brauch ich das hier nicht mehr oder?

Ja, dann kannst du dir die Zeile sparen

> Sorry für die dummen Fragen ;) Aber ist echt nicht grad leicht da rein
> zu kommen.

Ich finde beim PIO Controller das Blockdiagramm im Datenblatt sehr 
nützlich.

> Gäbe es evtl noch Tips für online Dokumentationen womit man da mal
> durchsteigen kann?

Learning by doing ;) Schau mal hier vorbei:
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/

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