-
Zawartość
2664 -
Rejestracja
-
Ostatnio
-
Wygrane dni
198
Wszystko napisane przez Elvis
-
Tani ARM - LPC1114 Wstęp W artykule chciałbym przedstawić rodzinę tanich mikrokontrolerów firmy NXP. Większość osób słyszało już o rdzeniu Cortex-M3. Jest to nowsza, pod wieloma względami udoskonalona wersja rdzenia ARM7TDMI. Znacznie mniej znana jest rodzina tanich mikrokontrolerów o rdzeniu Cortex-M0. Cortex-M0 zostały opracowane jako konkurencja dla obecnie stosowanych mikrokontrolerów 8-bitowych. Wobec podwyżki cen układów AVR warto zainteresować się nowym rdzeniem. Firma NXP jako jedna z pierwszych zaprezentowała mikrokontrolery z rdzeniem Cortex-M0. Są to mikrokontrolery oznac
-
AVR-TXD/RXD + nadajnik i odbiornik radiowy
Elvis odpisał w temacie użytkownika Dumbledore • Mikrokontrolery
Zakłócenia możesz filtrować programowo. Po pierwsze dane polecenie lepiej wysyłać wielokrotnie. Po drugie wraz z poleceniem najlepiej wysłać sumę kontrolną - żeby "śmieci" nie były odbierane po stronie odbiornika. Wreszcie, jeśli to jakieś ważne dane, to możesz odsyłać potwierdzenie transmisji. Ogólnie odpowiedź jest: tak - można coś takiego zrobić. Ale żeby działało bezawaryjnie, to już nie jest tak bardzo prosto. -
Typ bool też nie jest standardowy w C. Najprościej uzyskać 0/1 tak: sensor[4] = (PINA & 0x08) ? 1 : 0;
-
O ile wiem w C nie ma możliwości używania liczb binarnych (w czystym C). Można używać hexów, oczywiście dziesiętnych oraz ósemkowych. Jak chodzi o hex-y to kwestia wprawy. A mają niewątpliwą zaletę - spróbuj zapisać w kodzie binarnym np. maskę dla rejestru ARM-a, liczba jest 32-bitowa...
-
[Test/recenzja] [Komunikacja] Bluetooth KAmodBTM222
Elvis odpisał w temacie użytkownika Elvis • Artykuły użytkowników
Nie sprawdzałem przykładu na telefonie z ekranem dotykowym. Proponuję spróbować zamiast keyPressed, wykorzystać metodę: protected void pointerPressed(int x, int y) Dokumentacja jest tutaj: http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/Canvas.html#pointerPressed%28int,%20int%29 -
Niestety C, ew. C++. Ale jeśli będzie zainteresowanie, to ja chętnie zmienię kurs LPC2114 na LPC1114
-
A ja polecam LPC1114 - ma całkiem spore możliwości, niezłą cenę (polecam kamami, tme ma strasznie drogo). Poza tym programator nie jest potrzebny. Do programowania wystarczy konwerter RS232<->UART.
-
ARM-y mają jedną przewagę nad AVR. Są produkowane przez wielu wytwórców. Więc jeśli np. NXP podwyższy ceny, to wszyscy zaczną używać STM, czy odwrotnie. W przypadku AVR producent ma pełną dowolność w dyktowaniu ceny.
-
Spróbuj zamienić na: ISR(USART_RXC_vect)
-
Lekcja 11 - Komunikacja przez COM0, Bootloader Progam testowy Na początek zaprogramujmy płytkę programem przykładowym dostępnym w archiwum Program16.zip. Program bardzo niewiele różni się od poznanego w poprzedniej części. Główna różnica to wykorzystanie UART0 zamiast UART1 (czyli COM0 zamiast COM1). Program wysyła testowe komunikaty przez port COM0. Aby zobaczyć rezultat działania musimy wykorzystać program do odczytu z COM0. Jak poprzednio polecam program putty, ale wystarczy nawet hyperterminal spod windows. Niestety jeśli uruchomimy terminal, nie zobaczymy spodziewanego rezultatu.
-
Dowcip matematyczny Def. Pochodną imprezy nazywamy ilość alkoholu jaką możemy kupić za butelki sprzedane po imprezie. Tw. Imprezę nazywamy nietrywialną wtedy i tylko wtedy gdy jej druga pochodna jest niezerowa.
-
[Kurs] Kurs programowania ARM cz.10 - RS-232 c.d.
Elvis odpisał w temacie użytkownika Elvis • Artykuły użytkowników
Nie, będzie jeszcze jedna część o RS232 oraz o przetworniku ADC. -
Jak już wymieniamy ciekawe mikrokontrolerki, to polecam zobaczyć Cortex-M0. Co prawda są słabsze od Cortex-M3, ale za to są bardzo tanie. Mogą być ciekawą alternatywą dla AVR. Do wgrywania można wykorzystać RS-232, albo kupić płytkę ewaluacyjną z przejściówką USB<->UART: http://www.kamami.pl/index.php?productID=137779 Najciekawsze są ceny samych procesorów. Najtaniej znalazłem w Kamami: http://www.kamami.pl/index.php?ukey=product&productID=136170 Procesor z 24KB Flash, 8KB RAM, zegarem 50MHz w cenie 6,65 zł (brutto przy 30szt)... Producent dostarcza gotowe środowisko do program
-
[Programowanie] Jak rozpocząć przygodę z ARM-ami (wersja szybka, choć droga)
Elvis odpisał w temacie użytkownika Elvis • Artykuły użytkowników
W ustawieniach projektu trzeba odszukać opcję generowania dodatkowo pliku .hex. Ja mam wersję 1.x CrossStudio, tam było to w zakładce Linker, opcja "Additional Output Format" -
Zawsze możesz wykorzystać BT do komunikacji z palmtopem. Dajesz moduł btm-222 i masz komunikację jak po RS-232.
-
[Kurs] Kurs programowania ARM cz.10 - RS-232 c.d.
Elvis odpisał w temacie użytkownika Elvis • Artykuły użytkowników
Te procesorki mają niestety trochę niespodzianek. Trzeba jeszcze uważać na P0.14 i czytać erraty. Jak chodzi o podciąg, to nie polecam dawać małego rezystora. Wtedy przy wyłączonej diodzie będzie płynąć całkiem spory prąd. Może lepiej odwrócić logikę - diodą podłączyć katodą z procesorem, anodą (przez rezystor) z zasilaniem. Wtedy zerem będzie można zapalać diodę. Podciąg może być całkiem spory - np. 47k. Najlepiej byłoby dać tranzystor, który sterowałby diodą - przy najmniej procesor nie byłby obciążany prądem diody. -
[Kurs] Kurs programowania ARM cz.10 - RS-232 c.d.
Elvis odpisał w temacie użytkownika Elvis • Artykuły użytkowników
Jak chodzi o P0.2 to niestety trzeba dokładnie czytać dokumentację - wyjścia I2C są open-colector. Też się kiedyś na to naciełem. Ale z pullupem działają poprawnie. Natomiast P0.30 działa poprawnie. Tylko jest jeszcze jedna sprawa. Na stronie 106 dokumentacji (UM10114.pdf) podane są domyślne ustawienia portów. I jak na złość P0.30 domyślnie jest jako ADC (AIN3 dokłądniej). Czyli trzeba dodać: PINSEL1 &= ~(_BV(28)|_BV(29)) albo: PINSEL1 = 0 -
[Kurs] Kurs programowania ARM cz.10 - RS-232 c.d.
Elvis odpisał w temacie użytkownika Elvis • Artykuły użytkowników
Dziwne, że nie działa kod: GPIO0_IOSET =_BV(2)|_BV(30); Natomiast aktualna wersja: GPIO0_IOSET = 0xffff;//_BV(2)|_BV(30); Nie ma prawa działać na P0.30 - powinno być: GPIO0_IOSET = 0xffffffff;//_BV(2)|_BV(30); [ Dodano: 16 Paź 10 09:21 ] Już wiem, czemu nie działa P0.2 W dokumentacji jest mała zmyłka, jak odsyłacz [1]. A w nim: Więc wyjście P0.2 wymaga pull-upa. Inaczej nie będzie działać. -
[Kurs] Kurs programowania ARM cz.08 - PWM c.d.
Elvis odpisał w temacie użytkownika Elvis • Artykuły użytkowników
Aby sprawdzić, gdzie są przechowywane zmienne funkcje itd. najlepiej otworzyć plik z rozszerzeniem .map (znajduje się w katalogu z plikiem wynikowym). Przykładowo w program14.map znajdziemy fragment: Memory Configuration Name Origin Length Attributes ROM 0x00000000 0x0001e000 xr RAM 0x40000000 0x00004000 rw *default* 0x00000000 0xffffffff Tutaj zdefiniowana jest mapa pamięci naszego mikrokontrolera. Od adresu 0 mamy Flash, od 0x40000000 pamięć RAM. Dalej odnajdujemy adresy zmien -
Ja bym radził oprócz oceny "na oko" podłączyć miliamperomierz i sprawdzić ile mA pobiera podświetlenie. Na diodę powinno być 10-20mA. Więc wystarczy sprawdzić ile diod ma wyświetlacz, i można chociaż z grubsza prąd oszacować. Poza tym jak pisze Nawyk zacząć o rezystora, sprawdzić jak świeci i ile prądu bierze.
-
[Kurs] Kurs programowania ARM cz.01 - wstęp
Elvis odpisał w temacie użytkownika Elvis • Artykuły użytkowników
Strasznie drogo w AVT... Poczekaj chwile, może Treker coś z Kamami załatwi. Jeśli nie, to może lepiej inną płytkę wybrać. Bo prawie 180 zł to nieporozumienie... -
III edycja konkursu na najlepszy artykuł - wyniki!
Elvis odpisał w temacie użytkownika Treker • Zawody/Konkursy/Wydarzenia
Ja również bardzo dziękuję za oddane głosy. Gratuluję wszystkim laureatom. -
Poprzednia lekcja RS-232, c.d. - biblioteka standardowa W przypadku Bascom-a używanie RS-232 jest bajecznie proste. Polecenie „print” wysyła tekst, właściwie nic nie trzeba robić. W tej części spróbujemy uzyskać podobny efekt w języku C. Funkcja sprintf Najpierw przyjrzymy się funkcji „sprintf”. Należy ona do biblioteki standardowej C, więc jest dostępna na właściwie każdej platformie i kompilatorze. Aby ją wykorzystać wystarczy zaimportować plik stdio.h: #include <stdio.h> Funkcja sprintf jest bardzo podobna do znanej funkcji printf. Każdy kurs C zaczyna się wyświetleniem
-
Może warto zobaczyć ten dokument: http://www.atmel.com/dyn/resources/prod_documents/doc2553.pdf Atmel opisuje w nim różnice między atmega88 i atmega8. Na mój gust różnice są spore - inne adresy rejestrów, część ma pozmieniane nazwy. Poza tym inne jest napięcie referencyjne dla ADC. Trzeba więc pewnie program trochę pozmieniać.
-
[C, AVR] W jaki sposób sprawdzić czas wykonywania programu
Elvis odpisał w temacie użytkownika kling • Mikrokontrolery
Timer + rs232 powinien wystarczyć. Przed wywołaniem funkcji uruchamiasz timer, po zakończeniu zatrzymujesz i wartość wysyłasz przez rs232.