Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

LPC1114/302 - Brak możliwości uruchomienia programu

docencior 15 Wrz 2014 12:58 1110 7
  • #1 15 Wrz 2014 12:58
    docencior
    Poziom 10  

    Witam

    Zacząłem zabawę z ARMami kupując LPC1114/302. Po zlutowaniu układu mam problem z tym, że program po prostu nie rusza... Prosiłbym o pomoc gdzie szukać błędu bo ja już nie wiem.

    Podłączenie jest bardzo proste. LPC1114 zasilany przez stabilizator 3,3V, 2x100nF przy pinach zasilania i 1x 100uF.
    Piny RESET oraz P0.1 połączone z zasilaniem poprzez rezystor 100k.
    Programuję układ poprzez port USB używając przejściówki ft232rl. Do wgrywania kodu używam programu flash magic.

    Do pinu 3.5 jest podłączona dioda+rezystor+zasilanie.

    Po podłączeniu zasilania pin 0.1 jest zwarty do masy a pin RESET podłączam na chwilę do masy po czym zwalniam aby wejść w tryb ISP.
    Włączam flash magic, uruchamiam erase flash, następnie Display Memory i widzę, że wszystkie komórki są zapełnione przez 'F'. Czyli wszystko ok. Następnie wgrywam najprostszy się wydawać mogło program mrygający LEDem. Wszystko odbywa się zgodnie z planem łącznie z funkcją verify. Wchodzę jeszcze raz do Display Memory i widzę, że zamiast samych 'F' coś tam siedzi.
    Następnie odpinam pin 0.1 od masy, resetuję i... i nic...

    Próbowałem już na innych pinach, ściągałem z różnych stron gotowe pliki .hex z mrugającymi diodami. Mierzyłem napięcia na pinach (dziwne, na niektórych występuje stan niski na niektórych wysoki). Nic nie pomaga.

    Będę wdzięczny za każdą pomoc.

    EDYCJA.

    LPC1114/302 - Brak możliwości uruchomienia programu LPC1114/302 - Brak możliwości uruchomienia programu
    LPC1114/302 - Brak możliwości uruchomienia programu

    Dodam tylko, że na schemacie jest LED szeregowo z rezystorem 200R. Zmieniłem też rezystory podciągające dla P0.0 i P0.1 na 10k.
    X1:4, X1:5, X1:6 są połączone do ft232rl, X2:1 i X2:2 to są kable, które odpowiednio łączę z masą lub wiszą w powietrzu.
    Układ jest zasilany z 5V, które jest podłączone do X1:1 i X1:3

    Code:

    #ifdef __USE_CMSIS
    #include "LPC11xx.h"
    #endif

    #define LED_PORT    (1 << 6)

    int main( void )
    {
       LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 16);

       LPC_GPIO2->DIR |= LED_PORT;

        while( 1 )
           {
               for(int i = 0; i < 100000UL; i++ )
               {
                   LPC_GPIO2->DATA;    // Odczyt portu jako dodatkowe opóźnienie
               }
               LPC_GPIO2->DATA ^= LED_PORT;    // Zmiana stanu portu na przeciwny
           }
    }



    Kod ściągnąłem z kursu poprawiony o informacje od michalko12 (również nie działa)

    0 7
  • Pomocny post
    #2 15 Wrz 2014 14:15
    BlueDraco
    Specjalista - Mikrokontrolery

    Jak tylko wróżka narysuje schemat i pokaże rysunek płytki oraz program - spróbujemy pomóc.
    może to być np. brak połączenia masy (częsty w przypadku lutowania obudów QFN przez początkujących lub bez użycia dmuchawki)

    0
  • Pomocny post
    #3 15 Wrz 2014 14:22
    Badmaneq
    Poziom 23  

    Dodam tyko, że piny P0.0 i P0.1 mógłbyś podciągać do Vcc mniejszymi rezystorami zamiast 100k, np. 10k.

    0
  • #5 15 Wrz 2014 23:23
    docencior
    Poziom 10  

    Dodałem schemat połączeń, rysunek płytki oraz kod.

    0
  • Pomocny post
    #6 16 Wrz 2014 08:47
    Badmaneq
    Poziom 23  

    Widzę, że nie korzystasz z zewnętrznego rezonatora kwarcowego, natomiast

    Kod: c
    Zaloguj się, aby zobaczyć kod

    sugeruje, że korzystasz ze środowiska programistycznego LPCXpresso.
    Szybkie spojrzenie do pliku cr_startup_lpc11xx.c
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Ciało funkcji SystemInit znajduje się w pliku system_LPC11xx.c, a w nim
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Uważam, że program ciągle wykonuje pętle while czekając na spełnienie warunku a zatem nigdy nie dociera do main...
    Dlatego polecam przeczytać http://mikrokontrolery.blogspot.com/2011/04/arm-lpc1114-ustawienie-inicjalizacja.html lub dodać "kwarc" i na początek nie przejmować się "zawiłym" wyborem źródła taktowania oraz dobieraniem parametrów dla pętli PLL.

    0
  • Pomocny post
    #7 16 Wrz 2014 09:29
    BlueDraco
    Specjalista - Mikrokontrolery

    Prościej będzie zakomentować wywołanie funkcji SystemInit() z modułu startowego.

    0
  • #8 16 Wrz 2014 12:16
    docencior
    Poziom 10  

    Rzeczywiście. Złe dla mojego układu ustawienia w system_LPC11xx.c były powodem problemu. Dzięki za pomoc.

    0