Forum: Mikrocontroller und Digitale Elektronik LPC, Problem mit IO / FastIO


von Jens B. (sio2)


Lesenswert?

Hi, folgender Code sollte, egal ob FIO definiert ist oder nicht, das 
gleiche Ergebnis liefern, so versteh ich es zumindest.
1
//#define FIO
2
#ifdef FIO
3
  FIO0MASK= ~0x00200000;
4
  FIO0DIR= 0x00200000;
5
#else
6
  IODIR0 = 0x00200000;
7
#endif
8
  // endless loop to toggle the red  LED P0.21
9
  while (1)
10
  {
11
      {
12
      //  LED_ON;
13
        #ifdef FIO
14
          FIO0CLR = 0x00200000;
15
        #else
16
                 IOSET0= 0x00200000;
17
        #endif
18
        for (j = 0; j < 200000; j++ );
19
20
        //LED_OFF;
21
        #ifdef FIO
22
          FIO0SET = 0x00200000;
23
        #else
24
          IOCLR0= 0x00200000;
25
        #endif
26
        for (j = 0; j < 200000; j++ );
27
      }
28
  }

Jedoch, passiert bei definiertem FIO gar nichts.
An 2 weiteren Ports, 3 und 4 mit FastIO, habe ich noch ein LCD, welches 
Funktioniert. Nutze ich jedoch die normalen IO für die LED, und das LCD, 
geht die LED wiederum nicht. An den PINSEL Registern spiele ich nicht 
rum.

Was könnte ich übersehen haben?

von Michael G. (let)


Lesenswert?

Das ist wohl das "GPIOM" Bit im SCS Register nicht gesetzt.
Dann arbeiten Ports 0 und 1 im alten IO Modus der frühen LPC21xx.
Ports 2, 3 und 4 kennen nur FIO.

Probiere es mal damit:
1
SCS |= (1<<0);

 - Michael

von Jens B. (sio2)


Lesenswert?

Danke, jetzt gehts.
Aber warum hat der ein Problem mit Port0 als normal, und die anderen als 
FIO?

von Michael G. (let)


Lesenswert?

Du meinst ohne GPIOM Bit geht sowas nicht?
1
IOCLR0  = 0x00200000;
2
FIOSET2 = 0x00000002;

Habe ich noch nicht gemacht da ich nur FIO benutze.
Würde mich aber wundern wenn das nicht funktioniert.
Sobald das GPIOM Bit gesetzt ist lassen sich die ersten
beiden Ports nur mit den FIOxxx Registern ansprechen.
Aber das ist ja nochmal was anderes.

von Jens B. (sio2)


Lesenswert?

Ja, danach lief wieder nix, ich hab nur die ports Konfiguriert, Port0 
normal und die anderen Fast. Und dann ging die LED auch wieder nich. 
Aber auch das LCD wollte nicht mehr.
Aber ich mache jetzt alles mit FIO. Alles komisch ;)

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.