Forum: Mikrocontroller und Digitale Elektronik ADuC-P7026 Port ansteuern


von Julian S. (hangrocker)


Lesenswert?

Hallo zusammen,
brauche für meine Bachelorarbeit einen Mikrocontroller und habe einen 
ADUC7026 auf einem Evaluationsboard von Olimex vorliegen.

Kommunikation mit PC funktioniert. Konnte auch schon das Test-Hex-File, 
welches beim ARMWSD dabei war laden und es wird auch ausgeführt.

Nun möchte ich aber mit uV4 ein Programm schreiben und für den Anfang 
einfach mal P4.0 und P4.1 (jeweils mit LED) an machen.

Aber es funktioniert einfach nicht und ich verzweifle solangsam.
Ich hab bald schon alle Konfigurationen von GP4DAT probiert. Es leuchtet 
einfach nicht.

vom GP4DAT sind doch Bit 31-24 dafür zuständig, ob Eingang oder Ausgang. 
Somit kann ich doch alle auf Ausgang setzen (also 11111111). Bit 23-16 
ist Data Output, (also 11111100), da ich ja P4.0 und P4.1 low haben 
möchte, da die LED´s low geschalten werden. Bit 15-8 kann ich doch 
komplett auf 0 lassen (also 00000000) und Bit 7-0 wären die 
Eingangswerte, also lass ich die auch 0. Somit wäre meine Bitfolge 1111 
1111 1111 1100 0000 0000 0000 0000 was in Hex 0xFFFC0000 wäre.
Damit tut sich aber garnix auf dem Controller.

Ich hab als Include die ADuC7026.h drin und die gpio.h, wobei ich mir 
nicht sicher bin, ob ich die brauch.
und dann einfach eine
int main(void)
{
GP4DAT = 0xFFFC0000
return 0
}

Damit müsste doch die LED zumindest angehen.

Habe im Studium mal ein wenig mit einem Atmel C51 in Assembler 
programmiert. Daher steh ich jetzt beim umstieg auf C und auf einen 
ADuC7026 total auf dem Schlauch.

Wäre super, wenn mir jemand ein paar Tipps geben könnte.
Danke schonmal.
Gruß Julian

von Blackbird (Gast)


Lesenswert?

so z.B.:
[c]
  GP4DAT = 0x04000000;  // Configure P4.2 as output

  ...

  GP4DAT ^= 0x04040000;  // Complement P4.2
[/]

Ein Blick in die Beispiele von Analog Devices und Olimex hätten es auch 
getan.

Blackbird

von Blackbird (Gast)


Lesenswert?

Hier noch ein Beispiel:
1
/*********************************************************************
2
3
 Author        : ADI - Apps            www.analog.com/MicroConverter
4
5
 Date          : Sept. 2005
6
7
 File          : blink.c
8
9
 Hardware      : ADuC702x Rev I silicon
10
11
 Description   : Blinks LED continuously
12
13
    
14
*********************************************************************/
15
16
#include "ioADuC7026.h"
17
18
19
void delay(int);
20
21
22
int main(void)        
23
{
24
25
// configures GPIO to flash LED P4.2
26
GP4DAT = 0x04000000;      // P4.2 configured as an output. LED is turned on  
27
28
29
while (1)
30
  {
31
32
33
34
  GP4DAT ^= 0x00040000;    // Complement P4.2
35
  delay(300000);
36
  }        
37
}
38
39
void delay (int length)
40
{
41
  while (length >=0)
42
      length--;
43
}


Blackbird

von Julian S. (hangrocker)


Lesenswert?

Danke schonmal für die schnelle Antwort.
Die Beispiele habe ich auch schon angeschaut. Hab auch das von dir jetzt 
mal kopiert und GP4DAT = 0x04000000 in 0x01000000 und GP4DAT ^= 
0x00040000 in 0x00010000 geändert, da ich ja P4.0 und nicht P4.2 blinken 
lassen möchte.
Funktioniert leider nicht. Da tut sich garnichts.
Ich hab allerdings nicht die ioADuc7026.h sonder die ADuC7026.h
Aber das müsste doch mit der auch funktionieren. oder?

von Blackbird (Gast)


Lesenswert?

Jumper auf dem Board gesteckt?
Frequenz (Oszillator) richtig eingestellt (per Software)?
1
  POWKEY1 = 0x01;
2
  POWCON = 0x02;         //11.272MHz
3
  POWKEY2 = 0xF4;

Blackbird

von Blackbird (Gast)


Lesenswert?

1
#define LED1_ON     GP4DAT &= ~0x00010000
2
#define LED1_OFF    GP4DAT |= 0x00010000

Die LEDs hängen an +3,3V - der Pin muß also auf 0 gesetzt werden, damit 
sie leuchten.

Blackbird

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.