logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

LPC800-MAX - Błąd kompilacji PWM w Mbed IDE: Identifier 'PwmOut' is undefined

olelek 30 Wrz 2013 21:35 3216 16
REKLAMA
  • #1 12795402
    olelek
    Poziom 24  
    Posty: 578
    Pomógł: 62
    Ocena: 166
    Temat zainteresuje pewnie czytających mikrokontrolery.blogspot.com, którzy zamówili za grosze (ok. 5,5zł) płytkę wymienioną w tytule.
    Przerobiłem tutorial na stronie mbed.org z użyciem kompilatora online. Kod migający wbudowaną diodą RGB działa bez problemu. Nie działa natomiast PWM, a dokładniej: nie kompiluje się. Nie mogę skompilować nawet przykładu z HELP'a:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Otrzymuję błąd:
    Identifier "PwmOut" is undefined


    Dlaczego? Bo np. takie wyrażenie jak DigitalOut jest zdefiniowane.
    To moje pierwsze kroki z tą płytką, jak i z tworami Arduino-podobnymi, więc proszę o wyrozumiałość. Szkoda byłoby, gdyby taka fajna płytka umiała tylko zapalać diodę.
  • REKLAMA
  • #2 12795492
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 734
    Moim zdaniem to raczej problem z kompilatorem - na pewno płytka nie jest temu winna.
    Ja też będę miał tę płytkę - jak będę miał czas między zajęciami na uczelni to zerknę na problem ;)
  • REKLAMA
  • #3 12795646
    olelek
    Poziom 24  
    Posty: 578
    Pomógł: 62
    Ocena: 166
    Tak sobie czytam datasheet LPC812 i nie wiem czy z tymi PWM to nie jest jakaś ściema. MCU ma co prawda coś takiego jak SCT (State-Configurable Timer), ale nie wiem czy jest to w ogóle obsługiwane przez dostarczane biblioteki. Ale na rysunku poglądowym wyraźnie zaznaczono kanały:
    LPC800-MAX - Błąd kompilacji PWM w Mbed IDE: Identifier 'PwmOut' is undefined
    Tym niemniej błąd dziwny, bo bardziej przypomina awarię preprocesora, niż niewłaściwy kod.
  • #4 12796310
    michalko12
    Specjalista - Mikrokontrolery
    Posty: 3394
    Pomógł: 462
    Ocena: 321
    olelek napisał:
    ale nie wiem czy jest to w ogóle obsługiwane przez dostarczane biblioteki.

    Ja bym dał sobie spokój z jakimikolwiek bibliotekami poza CMSIS. Zainstaluj LPCxpresso 6, doinstaluj sterowniki do CMSIS-DAP i VCP.
    Tutaj masz całe projekty z wykorzystaniem SCT.
    Do tego wszystkiego możesz podglądać sobie bibliotekę sterowników na LPCOpen, podglądać a nie używać bo do ideału jej daleko, nawet te drivery w ROMie nie są idealne.

    Będziesz miał wszystko co potrzeba na miejscu z możliwością debugowania i będziesz widział co i dlaczego nie działa.
  • REKLAMA
  • #5 12796323
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    olelek napisał:
    Temat zainteresuje pewnie czytających mikrokontrolery.blogspot.com, którzy zamówili za grosze (ok. 5,5zł) płytkę wymienioną w tytule.

    Podam link, bo wygląda na to, że jeszcze można tę płytkę dostać wraz z transportem za tę śmieszną cenę :)
    NXP promuje te mikrokontrolery i przeznaczył na ten cel 500szt płytek - więc szanse są spore - wiele osób z Polski skorzystało :)
    http://mikrokontrolery.blogspot.com/2011/04/LPC800-MAX-board-za-1euro.html

    Jeżeli będziecie zamawiać, to sugeruję dokonać zapłaty (5,52zł) za pomocą PayPal - inne przelewy będą Was sporo kosztować.
  • REKLAMA
  • #6 12796353
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Ja tylko dodam, że SCT jest bardzo inteligentny, ale użycie go do całkiem prostych celów wymaga nie mniej pisania, niż skorzystanie z całej jego inteligencji. Kod inicjujący SCT na 3 wyjścia PWM do sterowania diodą RGB - to ok. 30 zapisów rejestrów!
  • #8 12797853
    olelek
    Poziom 24  
    Posty: 578
    Pomógł: 62
    Ocena: 166
    Wygląda na to, że ta płytka nie ma zdefiniowanego czegoś takiego jak PwmOut - gdy zmienię płytkę na jakąś inną w opcjach kompilatora, wszystko idzie jak trzeba. W takim razie, co oznaczają na rysunku opisy wyjść jako PWM? Zwłaszcza że 2 z nich (XP_4, XP_5) są dostępne poprzez ekspander portów I2C PCA9672. Zupełnie nie rozumiem "co autor miał na myśli".

    Edit - Kolejne spostrzeżenia:

    Program demonstracyjny, wgrany na układ przed zakupem zawiera opcje sterowania diodą poprzez PWM. Oto jego kod źródłowy, którego jeszcze nie rozszyfrowałem:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Czy to jest PWM sprzętowy, programowy, czy realizowany poprzez układ zewnętrzny? W kodzie pojawiają się wpisy dot. I2C.

    I drugi pytanko: czy przypadkiem nie jest ciekawszym układ służący na tej płytce za programator, czyli LPC11U35? Jest mały, ma sprzętowe USB itd.
  • #9 12824197
    aso824
    Poziom 13  
    Posty: 126
    Pomógł: 8
    Ocena: 3
    Podbiję - męczę się z tym i nie potrafię znaleźć opcji PWM, a bardzo by mi się przydała.

    PS. Dlaczego "wbudowana" dioda LED RGB zachowuje się tak dziwnie, że przy włączaniu dwóch dowolnych świeci się na jasnoniebieski?
  • #10 12824384
    michalko12
    Specjalista - Mikrokontrolery
    Posty: 3394
    Pomógł: 462
    Ocena: 321
    Bo niebieska dioda bardzo intensywnie świecie. Z kolei czerwona nie wiedzieć czemu ma rezystor 1,5k, a pozostałe te najjaśniejsze 200R. Generalnie cała koncepcja tej płytki to jedno wielkie nieporozumienie, płód marketingowców. Dużo lepiej zrobiliby gdyby zrobili jakiegoś microstampa bez żadnych peryferiali. Wartość układów na I2C co najmniej 3 krotnie przewyższa wartość uC. Nigy się ich do niczego nie użyje. Jeśli będzie potrzeba zastosowania ADC, DAC, i będzie potrzebne więcej portów to nikt nie zdecyduje się na taki układ, weźmie po prostu droższy o złotówkę uC. Kolejną bzdurą na tej płytce są elementy RC w obudowie 0402. Co za kretyn to wymyślił!? Płytki jako takiej nie polecam, same LPC800 są w porządku. Jeśli ktoś potrzebuje małego uC bez ADC to spokojnie może te procesory brać. Jak na maleństwa za 3zł mają niezły rdzeń i peryferia.
  • #11 12912530
    domints
    Poziom 13  
    Posty: 56
    Pomógł: 5
    Ocena: 8
    Wiem, że może temat stary, ale chciałbym coś dopowiedzieć. "Wbudowana" led zachowuje się dziwnie, bo jest włączona, gdy na jej pinie jest 0. Też miałem z tym problem na początku.
    Kompilator - mieli coś poprawiać, ale PwmOut nadal nie działa i się nie zanosi. W kodzie podanym przez olelek PWM jest definitywnie programowy - krótkie delaye w pętlach for. W zasadzie na PWM nie ma co liczyć.
    A co do dziwnych rezystorów - fakt. Dobrane jakby na "widzimisię", bez "pwm" białego nie uzyskasz. Układy na I2C to ciekawa sprawa, ale nawet ich odpowiedniki w tanich avr-ach mają lepsze parametry i to jest fakt.
    Ogólnie płytka dość ciekawa, fajna, jako że można było ją dostać za "piątaka", ale jeśli miałbym zapłacić więcej - teraz wiedząc jak to działa - nie dałbym więcej. Tanie klony arduino wydają się mieć więcej możliwości niż ten ARM. Ot moje zdanie.
    Chociaż może więcej dałoby się zdziałać przy pomocy LPCXpresso, ale to jest ciężki chleb do zgryzienia - setki rejestrów, skomplikowanych funkcji, do których nie zawsze jest przystępnie opisany tutorial i "jak to działa" - W mojej opinii procki fajne do zaawansowanych projektów (bo ARM taki fajny ;) ), ale hobbystycznie płytka ta przegrywa z każdym avr-em.
  • #12 12912589
    michalko12
    Specjalista - Mikrokontrolery
    Posty: 3394
    Pomógł: 462
    Ocena: 321
    domints napisał:
    mojej opinii procki fajne do zaawansowanych projektów

    Nie nadają się do zaawansowanych aplikacji. To są odpowiedniki ATtiny z trochę lepszym rdzeniem. Nadają się do każdej prostej aplikacji gdzie nie potrzebny jest przetwornik ADC. Siłą tych uC jest timer SCT, Switch Matrix, oraz to, że nie potrzebny jest specjalny programator, reszta to standard.

    IDE LPCXpresso to też nie jest jakiś potworek Link
  • #13 12913024
    olelek
    Poziom 24  
    Posty: 578
    Pomógł: 62
    Ocena: 166
    domints napisał:
    led zachowuje się dziwnie, bo jest włączona, gdy na jej pinie jest 0


    Tak, z tego co pamiętam zapalamy podając na nią zero, jest pewnie w konfiguracji ze wspólną anodą.

    Mi już zapał trochę ostygł do tego LPC812. Nie widzę powodu, dlaczego miałbym jego akurat użyć zamiast 8-bit AVR. Brak sprzętowego PWM, jeden licznik, brak ADC... niestety plasuje go w mojej ocenie nawet poniżej Attiny13.
  • #14 12913134
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Sprzętowy PWM w LPC8xx bije na głowę wszystkie PWM w ATtiny i funkcjonalnością, i trudnością w zaprogramwoaniu (ponad 20 linii w C, żeby cokolwiek ruszyło) Ponadto masz dwa timery oprócz SCT, min. 2 UARTy i 2 SPI oraz programowalny sprzętowy ukała logiczny. To b. zgrabna konstrukcja, póki co brakuje tylko ADC.
  • #15 12913144
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    BlueDraco napisał:
    Sprzętowy PWM w LPC8xx bije na głowę wszystkie PWM w ATtiny i funkcjonalnością, i trudnością w zaprogramwoaniu (ponad 20 linii w C, żeby cokolwiek ruszyło)

    No... 20 linii to już nie przelewki tylko najwyższy poziom zaawansowania (;

    4\/3!!
  • #16 12913179
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Ano, timer SCT co prawda jest bardzo mądry, ale ponad 20 linii kodu w celu uruchomienia głupiego PWM robi wrażenie. Trzeba po kolei zaprogramować: rejestry timera, układ generowania zdarzeń na podstawie działania timera oraz układ generowania przebiegów wyjściowych na podstawie zdarzeń. Poezja...
  • #17 12913254
    michalko12
    Specjalista - Mikrokontrolery
    Posty: 3394
    Pomógł: 462
    Ocena: 321
    olelek napisał:
    Mi już zapał trochę ostygł do tego LPC812. Nie widzę powodu, dlaczego miałbym jego akurat użyć zamiast 8-bit AVR. Brak sprzętowego PWM, jeden licznik, brak ADC... niestety plasuje go w mojej ocenie nawet poniżej Attiny13.


    Jak myślisz po co SCT ma 4 wyjścia? 4 kanałowy Multi-Rate Timer (MRT) który w większości przypadków ogarnie wszystkie precyzyjne działania czasowe, a jak komuś mało to ma jeszcze Systick Timer i specjalny timer do wybudzania z uśpienia. Masz możliwość debugowania któregokolwiek ATtiny? Co do ADC to co najmniej połowa projektów go nie potrzebuje i czasami wystarcza komparator który też jest w LPC800 i z całkiem niezłymi możliwościami.

    Jeszcze co jest ważne to żadnych fusebitów, wszystko programowo, np. w "locie" możesz zmienić częstotliwość taktowania z 30MHz do 2,3kHz.
    Jedyne co mi się nie podoba to skopane drivery w ROM. W Driverze od UARTa znalazłem co najmniej 2 błędy.

Podsumowanie tematu

✨ Użytkownicy dyskutują o problemie z kompilacją kodu PWM dla płytki LPC800-MAX w środowisku Mbed IDE, gdzie występuje błąd "Identifier 'PwmOut' is undefined". Wskazują, że problem może wynikać z braku wsparcia dla PWM w dostarczanych bibliotekach, a także z ograniczeń samego mikrokontrolera LPC812, który nie obsługuje sprzętowego PWM. Zamiast tego, sugerują użycie timerów SCT oraz CMSIS, a także instalację LPCXpresso dla lepszej obsługi. Użytkownicy zauważają, że wbudowana dioda LED RGB działa nieprawidłowo z powodu nieodpowiednich rezystorów. Ogólnie, płytka jest postrzegana jako ciekawa, ale z ograniczeniami w zastosowaniach bardziej zaawansowanych.
Wygenerowane przez model językowy.
REKLAMA