Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Termometr 4 punktowy na LPC1343 + 4x ds18b20 + src

hotdog 14 Oct 2010 21:41 20897 28
Computer Controls
  • Termometr 4 punktowy na LPC1343 + 4x ds18b20 + src

    Witam.
    Termometrów na elektrodzie było już dużo, w tym projekcie nie ma nic specjalnego, poza tym że wykorzystuje w miarę nowy procesor LPC1343. Projekt umieszczam w sumie tylko po to żeby podzielić się źródłami. Mam nadzieje że komuś się przydadzą.

    Jak wiadomo, kto stoi w miejscu, ten się cofa. Dlatego w końcu uruchomiłem pierwszy kawałek kodu który napisałem na Cortex-m3. Kod powstał na płytce LPCXpresso która jest dostępna np. w kamami w cenie 113zł (debuger + uC na jednej płytce). Moja wersja jest z procesorem LPC1343, ale nie wykorzystuje nic poza GPIO i timerem 16 lub 32-bitowym. Z tego powodu nie widzę czemu kod po małych modyfikacjach miał by nie pracować na tańszej wersji z LPC1114 lub innych Cortex'ach. Cały soft napisany został w IDE LPCXpresso (darmowe, ale bez obsługi C++). Bez większych problemów projekt powinno dać się zaimportować do innych własnoręcznie skonfigurowanych toolchainów wykorzystujących eclipsa. Nie wiem jak z obsługą debuger'a wbudowanego w płytki (bodajże LPC Link).

    Zdaje sobie sprawę, że nie ma tutaj czarów, ani nic nadzwyczajnego. Nie mniej jednak mam nadzieje że się komuś przyda, może ktoś się coś nauczy. Ja w trakcie pisania miałem kilka problemów wynikających z nieznajomości platformy i innych. Z 3 razy sprawdzałem czujnik w pewnym miejscu czy aby "na pewno działa". Projekt umieszczam głównie dla osób które chcą zacząć wykorzystywać cortex w swoich projektach. Które np. walczą już z ds18b20 kilka dni i nie mogą go uruchomić itd.

    W kodach jest zaimplementowane:
    -funkcję delay ms i us
    -obsługę magistrali 1wire
    -obsługę czujnika ds18b20 ze sprawdzeniem CRC
    -obsługę wyświetlacza HD44780
    -obsługa GPIO (to zostało zaimplementowane przez NXP)

    Dla funkcji delay można wybrać z którego timera będą one korzystać. Można wybrać pomiędzy timerem 0 lub 1 zarówno 32 jak i 16-bitowym. Funkcję mają zabezpieczenie przed podaniem zbyt wysokiej wartości ms lub us (funkcja wtedy wykonuje się kilka razy z max wartością + raz z resztą). Funkcje może nie są najbardziej precyzyjne na świecie, ale dla większości zastosowań są wystarczające). Wszystkie 3 pozostałe biblioteki (ds, 1wire i lcd) wykorzystują właśnie te funkcje. Z tymi funkcjami (o dziwo) miałem największy problem. W pierwszej wersji, wykorzystałem timer 16-bitowy i po przeliczeniu wartości z us na ticki timera zmienna się przekręcała.

    Magistrala 1wire została obsłużona za pomocą GPIO wbudowanego w uC. Kod wykorzystywałem wcześniej na AVR'ku (w sumie bazował na kodzie z elektrody). Miałem problemy z uruchomieniem i po przestudiowaniu dokumentacji interfejsu zmieniłem w nim dużo rzeczy (głównie dot. wartości i miejsca opóźnień). Można go wykorzystać z powodzeniem do obsługi innych układów obsługujących 1wire. Są tutaj 3 podstawowe funkcje - readbyte, writebyte i reset. Fizyczne wyprowadzenie 1wire nie jest ustalone z góry (np przez #define). Dzięki temu można podłączyć wiele odbiorników do różnych fizycznie pinów i pracować z wykorzystaniem biblioteki. Wyprowadzenie jest określone strukturą która zawiera dwie liczby - jedna określa port (0-3), druga zawiera numer pinu (0-11).

    Funkcje do obsługi czujnika ds18b20 wykorzystują powyższe funkcje (1wire). W implementacji umieściłem kontrole CRC danych odebranych z czujnika. Dzięki temu zawsze wiadomo, że dane odebrane są poprawne. Funkcje również przyjmują opisaną wyżej strukturę jako argument. Bez żadnego problemu można do procesora podłączyć kilka czujników do różnych wyprowadzeń. Dzięki temu nie trzeba znać numerów seryjnych czujników, oraz wykonywać operacji poszukiwania czujników na magistrali. Ja do tej pory nie podłączałem do uC więcej niż 4 czujniki i jak dla mnie rozwiązanie jest idealne (jeden czujnik na jedno wyprowadzenie). Czujniki podłączamy standardowo, czyli linia danych z pull-up'em (do 3.3V o wartości 4k7Ω) podłączona do wyprowadzenia uC.

    Funkcje obsługi wyświetlacza na sterowniku HD44780 są takie jak wszędzie. Wszyscy wiedzą co to za wyświetlacz. Należy wykorzystać byle jaki zgodny ze sterownikiem, zasilić go z 5V i podłączyć go do wyprowadzeń 5V tolerant na uC. RW należy podłączyć do GND (nie odczytujemy danych, ani flagi, tylko zapisujemy dane). Potencjometr do kontrastu wg standardowej aplikacji. Podświetlenie u mnie jest podłączone na stałe.

    W kodach źródłowych są szczegóły dot. podłączenia dla wersji skompilowanej (czyli do jakich portów czujnik do jakich LCD). Oczywiście można sobie je zmienić i prze kompilować program. Przy zmianie należy pamiętać aby nie wejść na wyprowadzenia debugera (o ile go wykorzystujemy).

    To chyba tyle. Źródła w załączniku. Kod jest na licencji "puffy" to znaczy że jak ktoś zarobi na projekcie wykorzystującym mój kod powyżej 100zł musi jednorazowo kupić worek karmy dla psów Puffy z biedronki o smaku wołowiny (ok. 11zł) i zanieść do najbliższego schroniska.

    Z chęcią odpowiem na wszelkie pytania. Komentarze typu "wsadź w obudowę", lub "zrób ładną płytkę" proszę zachować dla siebie. Umieszczam to tutaj tylko po to żeby podzielić się źródłami. W źródłach komentarze są po angielsku (pewnie są w nich jakieś literówki), to ponieważ część z nich jest kawałkiem projektu który wymagał komentowania w tym właśnie języku.

    Termometr 4 punktowy na LPC1343 + 4x ds18b20 + src Termometr 4 punktowy na LPC1343 + 4x ds18b20 + src Termometr 4 punktowy na LPC1343 + 4x ds18b20 + src

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    hotdog
    Level 26  
    Offline 
    hotdog wrote 1105 posts with rating 98, helped 95 times. Live in city Zielona Góra. Been with us since 2005 year.
  • Computer Controls
  • #2
    miedziux
    Level 11  
    skynet_2 wrote:
    Dlaczego użyłeś tak potężnego uC do tak prostego projektu?
    Wystarczyłoby cokolwiek z 2KB pamięci i 512B ramu.


    Do pomiaru temperatury wystarczy słupek rtęci, ale co z tego?
    Czytać Pan potrafisz?
    Kolega zaczyna pisać programy na "w miarę nowy procesor LPC1343" - i chce się dzielić źródłami, o to chodzi
    Jak masz jakiś kod, który wykorzystuje w pełni (wszystkie możliwości i peryferia) podany procesor to także możesz udostępnić, na pewno nie jedna osoba z chęcią zajrzy i nie napisze "dlaczego tak potężny procesor"
  • #3
    hotdog
    Level 26  
    W sumie koledzy już to ładnie to uzasadnili. Ogólnie wykonałem już kilka projektów na AVR'ach. Nie żeby mi było z nimi źle. Uważam je za genialny produkt, ale niestety już mocno przestarzały i ostatnio nie proporcjonalny możliwościami do ceny. Zgadzam się że takie same funkcjonalności można osiągnąć na M8, czy AT2313, ale gdzieś tam trzeba najpierw zamrugać diodą, nawet na najmocniejszych procesorach.

    Dalej można uruchomić USB, dołożyć kartę SD i rozwijać sobie już termometr, a nie pisać cały czas "Hello USB", czy "Hello SD card".

    Dużo użytkowników może mieć problemy z uruchomieniem np czujników DS. Jedną rzecz zrobi się źle (jakieś opóźnienia lub coś) i bez analizatora stanów logicznych ciężko będzie znaleźć bug'a. Ja musiałem np z takiego skorzystać w trakcie kodowania. Szukałem błędu w bibliotece do DS'a, okazało się że Delay ma błędy.

    Na początku skorzystałem z funkcji Delay z przykładów do płytki. Okazały się one mało udokumentowane. Dopiero po wczytaniu się w dokumentację uC doszedłem że pracowały w trybie bez prescalera. Taka funkcja na timerze 16 bitowym mogła doliczyć tylko do 910us, do czego trzeba było dojść samemu.

    Pozdrawiam
  • #4
    skynet_2
    Level 26  
    @miedziux czytać potrafię ale skoro jest w dziale DIY to oceniam jako DIY, co innego jakby było np. w niedokończone itp.

    @hotdog przejrzałem źródła i funkcję delay równie dobrze mógłbyś wykonać na NOP'ach.
    Code:
    while (TIMER->TCR & 0x01);
    jest troszkę bez sensu, bo poco korzystać z Timera skoro i tak program wisi na while?

    Jedynie używanie Timera w funkcji delay może się przydać, kiedy użyjesz przerwania od timera.
    Wtedy program leci sobie dalej i nie musisz marnować czasu na czekanie :)
    Możesz nawet dodać taki pseudo stos[czyt. tablica], że jak jedna funkcja delay się zakończy to automatycznie leci następna.

    btw. udało ci się zaimplementować 1wire search?
  • #5
    Tomkiewicz
    Level 13  
    W TME widzę że można dostać te płytki za 100zł, tylko że mają oznaczenie LPC1343 lub LPC1114 (w tej samej cenie). Napisałeś o modelu LPC1394 - to literówka, czy jakiś nowy, niegooglowalny model?

    Chyba czas się zainteresować tymi cortexami, ceny biją na głowę odpowiedniki atmela :). Tylko DYI jest utrudnione, bo bez smd się nie obejdzie...

    Ma ktoś może doświadczenie z tymi prockami pod linuxem? Bo atmegi mają dość dobre wsparcie.
  • #6
    tmf
    Moderator of Microcontroller designs
    Na wstępie chciałbym pogratulować koledze sukcesu, a przede wszystkim podziękować za kod i chęć podzielenia się doświadczeniami z innymi. Też uważam, że uwagi typu "dlaczego nie zrobiłeś tego na mniejszym procesorku" są bez sensu, bo chodzi o naukę. Swoją droga, jeśli mamy się licytować to 2kB FLASH i 512B SRAM to i tak byłaby mocna przesada.
    Natomiast nie byłbym sobą gdybym nie miał pewnych uwag krytycznych. IMHO o ile na AVR robienie obsługi OW na delayach jest małorażące (aczkolwiek bezsensownie w ten sposób marnujemy zasoby), o tyle robienie tak na ARM, to tragedia. Procesor o potężnej mocy obliczeniowej marnuje ją siedząc w pustej pętli... Wiem, że w tej aplikacji to nie jest problem, ale gdyby ktoś chciał zintegrować twój kod OW z czymś poważniejszym to natrafi na problemy. Stąd IMHO zrobiłbym obsługę OW w sposób nieblokujący.
    Ale i tak dzięki, za projekt, powoli myślę o przesiadce na ARMy, a to mi pokazuje, że przesiadka jest łatwiejsza niż sądziłem.
  • #7
    profesorek_96
    Level 16  
    Fajny termometr. Z czego uczyłeś się programować m3 ?
  • #8
    miono
    Level 15  
    Tomkiewicz wrote:

    Chyba czas się zainteresować tymi cortexami, ceny biją na głowę odpowiedniki atmela :). Tylko DYI jest utrudnione, bo bez smd się nie obejdzie...


    Ceny są bardzo niskie w porównaniu np. z atmegami. Ja osobiście czekam na nowy procesor Atmela at32uc3l, który ma kosztować w granicach kilkunastu złotych. Procek ten ma stałoprzecinkową obsługę liczb i całkiem spory zestaw instrukcji dsp. Obecnie jest w czym wybierać nie mogę jedynie zrozumieć wysokiej ceny starych 8-bitowych procesorów.
  • Computer Controls
  • #9
    hotdog
    Level 26  
    @skynet_2 Nie do końca się tutaj zgodzę. Jest podstawowa różnica, taka że jak twój program spędza powiedzmy 5% czasu programu w przerwaniach dostaniesz dosyć spore przekłamanie. Może dla większości zastosowań by to wystarczyło. Taką funkcję poza tym trzeba by było napisać w asm, bo nigdy nie wiesz do czego się Tobie skompiluje. Następnym problemem jest to że freq uC się może zmienić w trakcie pracy, co też trzeba uwzględnić. Wyszukiwania czujników nie robiłem, ale myślę że nie było by z tym problemu. Chyba Dallas udostępnia kod, trzeba w nim tylko parę rzeczy pozmieniać.

    @Tomkiewicz Oczywiście literówka, oznaczenie to LPC1343 (w jednym miejscu napisałem dobrze w drugim źle). W sumie pojawił się nowy model płytki z LPC1768 (min. z Ethernetem), ale nie jest jeszcze chyba "dobrze" dostępna. Pod linuxem raczej też problemu mieć nie będziesz miał. Z tego co widzę teraz jest wsparcie ze strony ich IDE. Największą zaleta tej płytki jest zintegrowany debuger. Koszt samego debugera często przewyższa całą płytkę. Wiadomo że debuger jest ograniczony do LPC, ale w tej cenie czego chcieć więcej.

    @tmf Dzięki za konstruktywną krytykę :) Zgadzam się z Tobą że taki kod był by pod większością względów lepszy jednak napisanie jego to już trochę małe wyzwanie (trzeba zrobić dosyć solidną maszynę stanów różnej długości delay'e, różne operacje). O taką implementację, pokusił bym się jak bym wykorzystywał RTOS. W tym projekcie to jest na pewno wystarczające. Odczyt i zapis jednego bajtu zajmują 560us, reset to 960us. Nie są to wartości aż tak duże. Wszytko co wymaga większej precyzji niż taka np 1ms i tak IMO się wrzuca w przerwania.

    @profesorek_96 mam w miarę duże doświadczenie z AVR'ami, więc przesiadka nie była aż taka trudna. Zaczynałem z przykładów teraz w sumie już wystarczyłaby mi dokumentacja. Przynajmniej do większości podstawowych rzeczy. Chcę się w wolnym czasie zabrać za USB, ale to już bez przykładu pewnie ciężko będzie ugryźć.

    @miono duże zapotrzebowanie, mała dostępność windują mocno cenę w górę. Mnie ostatnio w avr'ach najbardziej boli kiepski debuging. Ich IDE jest upośledzone zawiera kupę błędów itd. W eclipse debuging jest też mało dopracowany.

    Pozdrawiam
  • #10
    profesorek_96
    Level 16  
    Skąd czerpałeś przykłady?
  • #11
    hotdog
    Level 26  
    Przykłady są od producenta płytki czyli NXP. Robiłem już to jakiś czas temu. Na ich stronie jest tutorial jak uruchomić środowisko z tymi płytkami. Następnie w katalogu z IDE jest folder example a w nim archiwum z przykładami. Trzeba je tylko zaimportować do IDE.

    Tutorial wideo
    Tutorial w pdf

    Pozdrawiam
  • #12
    skynet_2
    Level 26  
    @hotdog wystarczy w C i uwzględnić czasy wywołania funkcji + przerwań[po skompilowaniu będzie zawsze zajmować tyle samo, przy wymuszeniu używania konkretnych rejestrów dla zmiennych] przed ustawianiem licznika.
    Zmiana zegara w czasie pracy to faktycznie spory problem.
  • #13
    hotdog
    Level 26  
    @skynet_2 na pewno da to radę zrobić w ten sposób. To wszystko zależy od zastosowania. Jeżeli ktoś ma wolny timer, to myślę że moja metoda jest najlepsza. Jeżeli ktoś nie ma, no to napisanie takiej funkcji to zadanie IMOH mało złożone. Do ciut większych opóźnień stosuje się np timer dedykowany systick. Troszkę czepiając się, to nie zawsze wiadomo ile czasu procesor spędza w przerwaniu.

    W ogóle obsługa 1Wire programowa jest lekko tępa. Kiedy procesor ma co robić, a robi się projekt nie masowy, najlepiej omijać problemy i zastosować np jakiegoś 8 bitowca z dolnej półki do obsługi 1Wire (albo dedykowany układ). Przy okazji może on spełniać inne funkcje jak np obsługę klawiatury pojemnościowej czy np LCD. Koszt to 5 zł, a program na "głównym" uC jest wtedy dużo prostszy.

    Nie ma jednego najlepszego rozwiązania. Najlepsze zawsze zależy od wymagań.

    Chciałem jeszcze polecić tą platformę (płytki LPCXpresso + ich IDE) jako moim zdaniem najlepsze (i chyba najtańsze) rozwiązanie żeby się przesiąść z wysłużonych AVR'ów na 32 bitowce.
    Zalety:
    - Brak konieczności konf. IDE;
    - Brak konieczności konf. debugera;
    - Dostępne przykłady razem z IDE;
    - Bardzo tania płytka razem z debugerem (można ją obciąć i odłączyć debuger i wykorzystać później z innymi płytkami);
    - IDE bazujące na eclipse z wieloma dodatkami od NXP (min. podgląd rejestrów w przyjaznej formie, kreatory do projektów dla różnych procesorów);
    - Wszystko działa od ręki;
    Wady:
    - ograniczenie do 128K kodu
    - brak obsługi C++

    Nie twierdze że konfiguracja eclipsa z OpenOCD i kompilatorem jest czymś trudnym. Na pewno łatwiej jest kiedy można od razu zacząć kodować. Tak czy inaczej środowisko jest lepiej przystosowane do obsługi tych właśnie procesorów. Wiem że dużo osób właśnie konfiguracja środowiska odstrasza. Mnie tylko boli trochę brak obsługi C++, ale na razie się jeszcze obejdę bez tego.

    A nie wie ktoś jak w trakcie debugowania, np po przerobieniu i skompilowaniu kodu wgrać go do uC i debugować dalej. Nie wiem gdzie można to zrobić lepiej, bo ja teraz kill'uje proces i rozpoczynam na nowo debugowanie.

    Pozdrawiam
  • #14
    tmf
    Moderator of Microcontroller designs
    Co do obsługi OW to nie wiem dlaczego wszyscy na siłę chcą to robić programowo, podczas, gdy np. zrobienie tego na UART rozwiązuje wiele problemów. Jeszcze rozumiem małe 8-bitowce, gdzie np. UART może już być zajęty, ale takie ARMy zwykle mają ich kilka.
  • #15
    hotdog
    Level 26  
    W sumie nawet nie zakładałem że tak można, dopiero teraz sobie doczytałem. To też jakaś metoda. Do wykonania chyba nawet prostsza od metody "delay".

    Pozdrawiam
    Jakub
  • #16
    hotdog
    Level 26  
    30 minut przy kompie i 1 Wire Search uruchomione i przetestowane.

    Kod jest skopiowany ze strony. Funkcje 1Wire są zaimplementowane wg mojej biblioteki (zmieniłem tylko funkcje reset, żeby sprawdzała czy są jakieś slave'y na linii). Wszystkie czujniki podłączone do P2.4. W sumie ruszyło z miejsca. Funkcja nadaje się tylko do "zapoznania się" z metodą. Drukuje numery seryjne na konsoli debugera, lub po małych modyfikacjach może to zrobić przez UART.

    Czarów tu nie ma, czarną robotę zrobił Maxim.

    Code:
    Start
    
    FIND ALL
    D200000237FDB028  1
    0C000001179BF628  2
    DF00000237E63528  3
    4600000237D33F28  4

    FIND ONLY 0x28
    D200000237FDB028  1
    0C000001179BF628  2
    DF00000237E63528  3
    4600000237D33F28  4

    FIND ALL EXCEPT 0x10, 0x04, 0x0A, 0x1A, 0x23, 0x01
    D200000237FDB028  1
    0C000001179BF628  2
    DF00000237E63528  3
    4600000237D33F28  4


    Mam nadzieje że się komuś przyda.

    Pozdrawiam
    Attachments:
  • #17
    marek_Łódź
    Level 36  
    Witam. Projekt jak najbardziej na czasie, podobnie jak zastosowane narzędzia. Sam zaopatrzyłem się ostatnio w LPCxpresso (z przyczyn czysto pragmatycznych w dwa zestawy, LPC1343 i LPC1768) i też jestem pełen podziwu nie tyle dla możliwości, co dla prostoty migracji z AVR na ARM (oczywiście w C). Mam tu nie tyle na myśli migrację projektów, czy softu, co raczej migrację projektanta. Podobnie jak autor polecam wszystkim te właśnie zestawy jako relatywnie tanie i relatywnie silne . Oprócz narzędzi ładujących i debugujących, zaimplementowano tam również "semihost", który pozwala z marszu umieszczać w uruchamianych aplikacjach obsługę konsoli, tudzież obsługę plików dyskowych, jeszcze przed dołączeniem do procesora jakichkolwiek peryferii, co daje możliwość równoległego ciągnięcia softu bez konieczności czekania na ostateczną wersję hardware (niby normalne, ale jak na tak prosty zestaw, wręcz szokujące dla człowieka wychowanego na sprzęcie "uruchomieniowym" wcześniejszych generacji).

    Ponieważ sam temat wątku pozwolił mi przeskoczyć pewien etap zabawy i oszczędzić czas, pozwoliłem sobie wysłać autorowi kilka extra punktów.

    Pozdrawiam i dalszych sukcesów z ARMami.

    hotdog wrote:
    Kod jest na licencji "puffy" to znaczy że jak ktoś zarobi na projekcie wykorzystującym mój kod powyżej 100zł musi jednorazowo kupić worek karmy dla psów Puffy z biedronki o smaku wołowiny (ok. 11zł) i zanieść do najbliższego schroniska.
    Z pewnością to zrobię za pierwsze 11zł zarobione na tym kodzie (rozumiem, że dopuszczasz jego modyfikacje :?: ), niemniej chciałem zapytać dlaczego akurat Puffy, dlaczego z Biedronki i dlaczego akurat wołowina?
  • #18
    hotdog
    Level 26  
    Wiesz.. w sumie może być byle jaka karma :) Mojemu psu kupuje akurat tą, bo innymi się opycha a tą je jak jest głodny :)

    Gdzie kupiłeś ta wersję z LPC1768?

    Dzięki za punkty.

    Pozdrawiam
  • #19
    marek_Łódź
    Level 36  
    Mała kryptoreklama TME http://www.tme.eu/pl/katalog/artykuly.phtml?search=lpcxpresso&idp=1#search%3Dlpcxpresso
    Niestety wziąłem ostatniego lpcxpresso 1768 z ich stanu magazynowego (dwa tygodnie temu), a firma dość tajemniczo pisze o terminie dostawy (generalnie bywa z tym bardzo różnie). Jak się pojawią zamówienia, to może docisną dostawcę. nb W farnell.com też oferują i też nie mają na stanie

    Cena 83 netto, co daje 101,23 brutto (+ przesyłka)

    Jeszcze raz polecam wszystkim LPCxpresso, naprawdę stosunek ceny do mocy imponujący, zwłaszcza dla 1768.

    Aktualnie szykuję sobie płytkę uruchomieniową peryferyjną (na razie na uniwersalnej, docelowo na normalnym druku), póki co obszyłem USB, pamięć szeregową FLASH i Static RAM, wyświetlacz tekstowy i kilka klawiszy (ledy mamy na płytce LPCxpresso, więc w pierwszym podejściu można sobie darować), dorzucę jeszcze DS18S20, a potem się zobaczy (są dostępne "płyty bazowe", ale nie powalają na kolana zawartością, natomiast powalają ceną http://www.tme.eu/html/PL/plyty-bazowe-do-mod...rmy-embedded-artists/ramka_7475_PL_pelny.html ).
    Robię też druki pod mikromoduły 1768/6/4, 1343 (coś jak procesorowa połówka LPCxpresso, lekko doposażona w pamięci szeregowe i inne drobne duperele).

    ps Będzie "Puffy". Przy okazji zobaczę jak mój będzie jadł toto (w sumie bida ze schroniska, ale strasznie wybrzydza z jedzeniem). Pozdrowienia...również dla pieska.
  • #20
    hotdog
    Level 26  
    Ja ostatnio właśnie wpadłem na tą płytkę w TME (zdziwiło mnie że jest w tej same cenie co "słabsze" wersje). Niestety nie było już jej na stanie, bo bym się nawet 1s nie zawahał przed zakupem.

    Co do takiej płyty bazowej to masz rację, że jej cena jest wysoka. Czy zawartość jest nie warta... no nie wiem... Ogólnie tak to wygląda jak by te płytki z prockami były dofinansowane z NXP. Płytka bazowa już chyba nie, ale jest w niej kilka rzeczy:
    Code:
    2 przyciski;
    
    czujnik przyspieszenia MMA7455L;
    czujnik temperatury;
    dioda LED RGB sterowana PWM;
    enkoder;
    ethernet 10/100Base-T;
    expander PCA9532 podłączony do 16 diod LED;
    gniazdo baterii pastylkowych;
    gniazdo kart MMC/SD;
    interfejs CAN;
    interfejs RS422/485;
    interfejs USB;
    joystick - 5 pozycji;
    konwerter I2C/SPI - 2xUART;
    konwerter USB-UART;
    możliwość zasilania z portu USB;
    pamięć EEPROM 8kbit;
    potencjometr do zadawania wartości analogowej;
    wyświetlacz OLED 96x64 pixeli;


    Dla hobbystów i osób zaczynających przygodę super zestaw. Po obsłużeniu wszystkich peryferiów architektura procesora w paluszku. Koszt produkcji tej płytki pewnie mieści się w 200zł. Zamawiać się jej od producenta nie opłaca, bo kosztuje 352,44 zł netto (po dzisiejszym kursie euro), czyli 14 zł więcej niż w TME. Szkoda tylko że schemat tej płytki nie jest udostępniony:
    Quote:

    Frequently Asked Questions (FAQ)
    How do I get the schematic?

    After purchase the schematic can be downloaded from our support page


    Może ktoś ma ten schemat i inne dokumenty?

    Pozdrawiam
  • #21
    marek_Łódź
    Level 36  
    No to sorry, bo wygląda, że Ci podkupiłem ostatni zestaw ;) . Mam farta.

    Jeśli mówimy o tym:

    Termometr 4 punktowy na LPC1343 + 4x ds18b20 + src

    To cena jest 366 netto, czyli coś koło 446 brutto. Jak za taki zestaw troszkę drogo zwłaszcza w relacji do ceny samego modułu procesora.

    Co do samych płytek LPCxpresso, to u producenta wszystkie są po 20 euro. Ciekawa polityka cenowa, pewnie do tego nie dokładają, ale ta największa wychodzi w okolicy kosztów.

    http://www.embeddedartists.com/products/lpcxpresso/lpc1768_xpr.php

    Zresztą jest to bez znaczenia, bo do wypromowania procesora pewnie NXP się dokłada.

    Przykra wiadomość ze strony producenta:

    LPCXpresso:

    1768 Currently out-of-stock
    Expected delivery date: 2010-12-22

    1114 Currently out-of-stock
    Expected delivery date: 2010-12-15
  • #23
    hotdog
    Level 26  
    No więc zgodnie z notą katalogową czujników:
    - zakres -55°C do +125°C
    - dokładność ±0.5°C w temperaturach -10°C to +85°C
    - skok co 0,0625, w programie jest obcięte do dziesiętnej części
    - przy maksymalnej rozdzielczości czas pomiaru 750ms

    Pozdrawiam
  • #24
    miono
    Level 15  
    skynet_2 wrote:

    @hotdog przejrzałem źródła i funkcję delay równie dobrze mógłbyś wykonać na NOP'ach.
    Code:
    while (TIMER->TCR & 0x01);
    jest troszkę bez sensu, bo poco korzystać z Timera skoro i tak program wisi na while?


    Używanie timera ma swoje uzasadnienie. delaye zrobione na nopach nie są dokładne i kompilatory mogą je zoptymalizować przez co czas odmierzany nie będzie dokładny. Najlepiej pisać je w assemblerze i opatrzyć znacznikiem volatile. Stosując timery unikasz takich zabaw.

    Czy ktoś się bawił tymi LPC pod linuxem? Chodzi mi o to czy jest dostępny kompilator i jakieś narzędzia do programowania procesora?
  • #25
    wujcio24
    Level 13  
    Z tego co mi wiadomo jest już dostępna beta LPCXpresso pod linuksa.
    Co do asemblera ja stosuje wywołanie funkcji i dorzucam plik z rozszerzeniem .s do projektu. A w pliku w którym wywołuje tą funkcje wstawiam coś takiego:

    Code:
    extern int clock_init();


    a później w wybranym miejscu w pliku z rozszerzeniem C daje coś takiego:

    Code:
    clock_init();


    Jeśli użyjemy czegoś takiego to w pliku z rozszerzeniem .S dajemy taki początek.

    Code:

        .syntax unified
        .cpu cortex-m0
        .align   2
        .global   clock_init
        .thumb
        .thumb_func
    clock_init:


    Obecnie bawię się procesorami lpc111x i dużą część kodu pisze w asemblerze co pewnie jest widoczne po spojrzeniu na ".cpu cortex-m0".
  • #26
    hotdog
    Level 26  
    Jest już 3 beta na linuxa, czyli już pewnie bardzo blisko RC. Testował ktoś już może?

    Pozdrawiam
    Jakub
  • #27
    miono
    Level 15  
    hotdog wrote:
    Jest już 3 beta na linuxa, czyli już pewnie bardzo blisko RC. Testował ktoś już może?


    Dopiero co zainstalowałem pod ubuntu i działa bez większych problemów. Bez problemu utworzyłem projekt i go skompilowałem. W porównaniu z AVR32Studio wypada jednak bardzo słabo. Brak przykładów, brak bibliotek. Nie znalazłem jeszcze obsługi jtaga i sposobu na zaprogramowanie programu.
  • #28
    profesorek_96
    Level 16  
    Jakim napięciem jest zasilany moduł 3,3v czy 5v?
  • #29
    hotdog
    Level 26  
    Na schemacie płytki wszystko jest dokładnie pokazane.

    Jak płytki są nie oddzielone to podłaczasz +5 przez USB od jtaga, lub poprzez goldpin po prawej stronie.

    Jak odetniesz płytkę programatora to trzeba dołożyć zewnętrzny stabilizator 3,3V i pamiętać żeby w złączu programatora nie łączyć napięć zasilania.

    W słowach to ciężko wyjaśnić. Obejrzyj schemat płytki LPCXpresso z procesorem lpc1343.