-         

Ergebnis 1 bis 2 von 2

Thema: Eigentlich simple I/O operation funktioniert nicht.

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.11.2006
    Ort
    Hamburg
    Alter
    25
    Beiträge
    384

    Eigentlich simple I/O operation funktioniert nicht.

    Anzeige

    Hallo,

    ich habe ein ARM Starter KIT von IAR System. Das läuft mit dem LPC1786 von NXP. Also Cortex M3. Als Entwicklungsumgebung verwende ich die IAR Embeded Workbench. Nun habe ich versucht ein simples Programm zu schreiben, dass einfach nur eine led einschalten soll. Allerdings tut sich einfach überhaupt nichts.
    Hier einmal mein Code. Ich hoffe es kann mir jemand helfen.

    Code:
    #include <nxp/iolpc1768.h>
    #include <intrinsics.h>
    #include <assert.h>
    #include 
    #include <stdio.h>
    
    void InitClock(void)
    {
      // 1. Init OSC
      SCS_bit.OSCRANGE = 0;
      SCS_bit.OSCEN = 1;
      // 2.  Wait for OSC ready
      while(!SCS_bit.OSCSTAT);
      // 3. Disconnect PLL
      PLL0CON_bit.PLLC = 0;
      PLL0FEED = 0xAA;
      PLL0FEED = 0x55;
      // 4. Disable PLL
      PLL0CON_bit.PLLE = 0;
      PLL0FEED = 0xAA;
      PLL0FEED = 0x55;
      // 5. Select source clock for PLL
      CLKSRCSEL_bit.CLKSRC = 1;   // Selects the main oscillator as a PLL clock source.
      PCLKSEL0 = PCLKSEL1  = 0;   // other peripherals 100/4 = 25MHz
      // 6. Set PLL settings 300 MHz
      PLL0CFG_bit.MSEL = 25-1;
      PLL0CFG_bit.NSEL = 2-1;
      PLL0FEED = 0xAA;
      PLL0FEED = 0x55;
      // 7. Enable PLL
      PLL0CON_bit.PLLE = 1;
      PLL0FEED = 0xAA;
      PLL0FEED = 0x55;
      // 8. Wait for the PLL to achieve lock
      while(!PLL0STAT_bit.PLOCK);
      // 9. Set clk divider settings
      CCLKCFG   = 3-1;            // 1/3 Fpll
      // 10. Connect the PLL
      PLL0CON_bit.PLLC = 1;
      PLL0FEED = 0xAA;
      PLL0FEED = 0x55;
    }
    
    
    
    
    int main()
    {
     
     InitClock();
     FLASHCFG=(1<<14);
     
     FIO1DIR=(1<<25);
     FIO1SET=(1<<25);
     
     
     
      
      while(1);
    }
    mfg
    Erik

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.09.2006
    Alter
    28
    Beiträge
    841
    Blog-Einträge
    1
    Hallo,
    ich beschäftige mich auch grad mit ARM (Cortex)

    Allerdings von STMicroelectronics.

    Sollte aber alles ähnlich sein.

    Was mir auffällt:

    1. ein leeres Include
    2. Weißt du der Peripherie irgendwo einen Takt zu? Also dort wo die LED dranhängt?
    beim STM32 muss man folgende Reihenfolge beachten:
    http://www.mikrocontroller.net/artic...herals_Library

    also a) Takt aktivieren b) Takt verteilen c) Port Richtung festlegen d) Geschwindigkeit einstellen

    Dann erst kannst du drauf zugreifen...

    3. Bin nicht so fit in C aber probier mal so:

    Code:
    while(1) 
    {LED AN;
    LED AUS;
    }
    nat. mit den entsprechenden befehlen. Ev. dazwischen jeweils ne Schleife, damit du auch was siehst

Ähnliche Themen

  1. Logische Operation zum Verändern einzelner Bits
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 31.07.2010, 20:17
  2. Simple Tasterabfrage funktioniert nicht (PullUp-Widerstand)
    Von JellbieO im Forum C - Programmierung (GCC u.a.)
    Antworten: 16
    Letzter Beitrag: 15.11.2008, 16:12
  3. Ergebnis aus Long-Operation in Byte schreiben - wie
    Von dl1akp im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 23.10.2008, 14:13
  4. Bit und Byte Operation
    Von feitzi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 14.06.2007, 12:16
  5. Antworten: 5
    Letzter Beitrag: 31.03.2007, 19:21

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •