Skocz do zawartości

Elvis

Użytkownicy
  • Zawartość

    2594
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    189

Wszystko napisane przez Elvis

  1. Witam, chciałbym wszystkich zachęcić do lektury nowego kursu programowania procesorów ARM. Niestety podczas pisania kursu okazało się, że producent płytek ewaluacyjnych zakończył ich produkcję. Nie pozostało nic innego, jak wybrać inny zestaw ewaluacyjny i przygotować kolejny kurs, oparty na nowych - dostępnych płytkach. Wybór padł na relatywnie tanie zestawy ZL32ARM. Są one dostępne w sklepie Kamami, więcej na stronie producenta. Dla użytkowników Diody płytki te dostępne są w specjalnej, promocyjnej cenie - szczegóły poście Treker'a poniżej. Opis zestawu Zamontowany na płytce procesor jak i obsługę darmowego kompilatora LPCXpresso opisywałem już w jednym z moich poprzednich artykułów. Kurs zaprojektowany jest jako rozszerzenie poprzedniej wersji kursu. Zachęcam więc do przeczytania jego poprzedniej wersji przed lekturą nowej odsłony. Ponieważ nowa płytka ma mniej elementów niż zastosowana poprzednio, postanowiłem przykłady oprzeć na budowie prostego robota typu LineFollower - w końcu Dioda jest stroną o robotyce Robot jest jedynie ilustracją przykładów, więc nie będzie on na pewno konkurować z topowymi konstrukcjami dostępnymi na forum. Ma on za zadanie przybliżyć zastosowanie ARM'ów LPC1114 w naszym hobby. Do konstrukcji robota wykorzystałem elementy dostępne „pod ręką”, a głównym celem było użycie tanich elementów. Robot składa się z kilku płytek. Dokładniej z 4. Dzięki temu łatwiej było projektować płytki oraz dokonywać zmian. Jedna płytka jest tylko elementem konstrukcyjnym - służy jako podstawa dla płytki ewaluacyjnej. Kluczowe są dwie pozostałe płytki: płytka czujników - wyposażona w 8 czujników TCRT5000 (chociaż ostatecznie używane są tylko 4) płytka silników - zawiera sterownik silników oraz stabilizator 3.3V Dla uproszczenia przykładu wykorzystałem tylko jedno napięcie - 3.3V. W związku z tym nie stosowałem mostka H. Do sterowania silnikami wykorzystane są zwykłe tranzystory bipolarne (BC337 - akurat miałem pod ręką), przedstawiam poniżej dwa schematy: Kurs będzie się z składał z następujących części (linki zostaną dodane w miarę publikacji): 1) Kompilator, zestaw ZL32ARM 2) Wstęp do nowego kursu 3) Porty I/O 4) Zegary i przerwania 5) PWM 6) RS-232 7) ADC 8) Czujniki odbiciowe 9) Line follower Kurs będzie pojawiał się regularnie - nowy odcinek będzie pojawiał się w każdą niedzielę. Zapraszam do zapoznania się z możliwościami zestawu ZL32ARM oraz z poprzednim artykułem opisującym środowisko, kompilator oraz nasz zestaw testowy.
  2. Witam, postaram się opisać postępy prac nad moim pierwszym robotem kroczącym. Pierwsza wersja będzie bazować na gotowym szkielecie. Dokładniej na częściach kupionych tutaj: http://www.hexapodrobot.com/store/product_info.php?cPath=21_22&products_id=29 Nie cierpię projektowania mechaniki, więc dla mnie gotowy szkielet to idealne rozwiązanie. Dzisiaj dotarła przesyłka z elementami, zawartość pudełka wygląda następująco: Jutro planuję większe zakupy w sklepie modelarskim. Kolejnym krokiem będzie zaprojektowanie elektroniki. Zamierzam wykorzystać któryś z procesorów ARM, ale na razie jestem na etapie wybierania rozwiązań. Kolekcja serwomechanizmów już kupiona: Montaż robota zajmuje raptem chwilę Muszę pochwalić zestaw, wszystkie elementy pasują idealnie. Poniżej rezultat pracy: Teraz czas przystąpić do projektowania elektroniki. Koniec z gotowcami.
  3. A ustawiłeś RA0..3 jako wyjścia?
  4. Możesz wykorzystać program BTRobot.zip z artykułu. W pętli głównej kod wysyłający jest zakomentowany, czyli pętla główna powinna wyglądać tak: while (1) { sprintf(buf, "Hello world! %d\r\n", ++counter); KAmodBT_SendBuffer(buf); _delay_ms(100); }
  5. Jeśli nie otwiera się okno terminala, to coś jest nie tak z konfiguracją połączenia. Kod pin podałeś poprawnie? Atmega wysyła dane standardowo, przez UART. Przy okazji - jeśli używasz modułu BTM222, to zakładam, że pamiętasz o konwersji napięć 5V<->3.3V?
  6. Podłączenie musi być skrosowane, czyli: UART_TX -> BTM_RX UART_RX <- BTM_TX Natomiast jak chodzi o putty, to przy standardowych ustawieniach nie pojawia się tzw. echo. Czyli gdy naciskasz klawisze, ich kody są wysyłane przez port COM, ale znaki nie są wyświetlane na ekranie. Dopiero jeśli po drugiej stronie łącza zostanie wysłany znak, pojawi się on na ekranie. Więc jeśli program na AVR nie odsyła tego co dostał, nie widać wpisywanych znaków. Radziłbym na początek napisać program na AVR, który będzie w pętli wysyłał komunikat. Jeśli uda się go przesłać do PC i wyświetlić w ekranie terminala, to już połowa sukcesu.
  7. IRFZ44 przy 20A wydzielą koło 10W. Więc konieczny byłby spory radiator, żeby przeżyły. Zobacz IRF2804, które polecał Xweldog. Mają 10x niższy Rds, więc i moc będzie znacznie mniejsza.
  8. Odradzam używanie IRFZ44. Przy 20A nie mają większych szans. Jak koniecznie chcesz je stosować, to od razu daj bardzo duży radiator.
  9. Moduły Mobot-a są bardzo proste w obsłudze. To co wysyłasz przez UART przychodzi po drugiej stronie. Więc jeśli udało Ci się komunikować przez RS232 to bez zmian w programie wszystko powinno działać.
  10. xamrex moim zdaniem wynik jest poprawny, ale nie do końca rozumiem Twój dowód. Ja bym to wyprowadził tak: a + (a * b) = (a + a) * (a + b) = 1 * (a + b) = a +b
  11. Działanie bootloadera opisałem tutaj: https://www.forbot.pl/forum/topics20/kurs-programowania-arm-cz11-rs-232-cd-2-bootloader-vt4392.htm W przypadku LPC111x jest tak samo - zmienia się tylko pin P0.1 zamiast P0.14. Pull-up jest po to żeby bootloader się nie uruchamiał. Jeśli P0.1 zewrzemy do masy (np. zworką) to bootloader wejdzie w tryb programowania (po resecie). Jeśli wykonamy wszystko wg. schematu ZL32ARM - reset i sterowanie P0.1 będzie automatyczne. [ Dodano: 14-11-2010, 10:20 ] OldSkull w Keil-u trzeba zmienić deklarację funkcje przerwania: void timer0(void) __irq { } A jak chodzi o asemblera, to najłatwiej wydzielić kod do nowej funkcji: volatile __asm void enable_irq() { STMDB SP!, {R0} MRS R0, CPSR ... }
  12. Najprościej jest wykorzystać programator jak w zestawie ZL32ARM: http://www.kamami.pl/dl/zl32arm.pdf W dokumentacji jest schemat, można samemu wykonać. Warto dodać sterowanie resetem i uruchamianiem bootloadera (P0.1) - inaczej trzeba ręcznie sterować pinami. Można jeszcze taniej zrobić przejściówkę RS-232 <->UART. Schematy są na stronach Kamami - trzeba zobaczyć inne zestawy, np. ZL1ARM. Jak chodzi o interfejsy, to nowe cortex-y odchodzą od JTAG-a, zamiast nich używany jest SWD. Nie wiem jak jest z programatorami, ale oryginalny Keil-a jest baaaardzo drogi. Główny powód używania JTAG-a, czy SWD to możliwość debugowania programów. Jeśli nie chcemy debugować, to najlepiej programować przez UART - czyli przejściówkę RS-232 lub USB. Jak chodzi o podłączenie - SWD wymaga tylko 2 linii.
  13. LPC21xx to już nieco stara rodzina - rdzeń ARM7TDMI. Natomiast nowe to niewątpliwie Cortex. Odpowiednio Cortex-M3 - LPC17xx i Cortex-M0 - LPC11xx. Jest duża szansa, że ceny M0 będą spadać, więc mogą poważnie zagrozić 8-bitowcom. Oczywiście M0 mają być słabsze niż M3. Ale w porównaniu z małym AVR mają się czym pochwalić. [ Dodano: 13-11-2010, 22:05 ] Natomiast LPC2103 nie polecam z jednej przyczyny - stare LPC wymagały 2 napięć zasilających. Więc trzeba dać 3.3V i 1.8V. W nowszych już jest wbudowana przetwornica.
  14. O ile wiem, nie ma możliwości wgrywania programu przez SPI. Tak jest w AVR. Natomiast można przez UART, czasem nawet przez CAN i oczywiście SWD. A co do dokumentacji, to więcej jest w User's Manual-u: http://ics.nxp.com/support/documents/microcontrollers/pdf/user.manual.lpc11xx.lpc11cxx.pdf W okolicach strony 275 jest dokładnie wszystko opisane.
  15. SPI to nie to samo co ISP. O ile wiem, nie można LPC111x programować za pomocą SPI. ISP to skrót od In-System Programming. Czyli programowanie za pomocą sofware-u. Polega to na tym, że bootloader (który jest programem) programuje pamięć flash. Natomiast do LPC111x wystarczy konwerter RS-232<->UART, nic więcej do programowania nie jest niezbędne.
  16. 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 oznaczone jako LPC-111x. Parametry mikrokontrolerów LPC-111x: • prędkość do 50 MHz • do 32 kB pamięci Flash • do 8kB pamięci RAM • wbudowany generator RC • wbudowany watchdog • sprzętowa obsługa I2C, SPI, UART • 10-bitowy przetwornik ADC • nowy interfejs programowania - SWD • możliwość programowania przez UART (RS-232) • dostępne wersje z obsługą interfejsu CAN Warto zwrócić uwagę na dostępne obudowy. Aktualnie w sprzedaży dostępne są układy w obudowach SMD, jednak zapowiadany jest układ w obudowie PLCC44 - pozwala ona na umieszczenie w podstawce i montaż przewlekany. Ostatnią, chociaż nie najmniejszą zaletą nowych układów jest ich cena. W sklepie Kamami dostępne są już za 5,55 zł brutto (cena za LPC1113 przy 30szt., 13.11.2010). Nawet cena detaliczna jest całkiem przystępna: 8,48 za procesor z 24kB pamięci Flash i 8kB RAM. ZL32ARM Aby rozpocząć przygodę z nowymi układami musimy mieć płytkę z procesorem. Niestety dopóki wersja w obudowie PLCC44 nie będzie dostępna, wlutowanie układu w obudowie SMD może być trudne dla początkującego elektronika. Jeśli chcemy łatwo zapoznać się z LPC1114 możemy wykorzystać płytkę ewaluacyjną. Firma Kamami przygotowała ciekawy zestaw uruchomieniowy ZL32ARM: http://kamami.pl/index.php?ukey=product&productID=137779 Zestaw składa się tak naprawdę z dwóch płytek. Jedna to konwerter USB<->UART wraz ze stabilizatorem 3.3V, układami sterowania resetem i uruchamianiem bootloadera. Druga to właściwa płytka z procesorem LPC1114. Zestaw jest dostarczany jako jedna płytka, ale gdy już poznamy nowy mikrokontroler możemy rozłączyć płytki i konwerter USB<->UART wykorzystywać w innych projektach. Jest to bardzo praktyczne rozwiązanie. Zestaw jest kompletny, potrzebujemy tylko kabla USB, aby rozpocząć przygodę z nowym procesorem. Nawet zasilacz nie jest potrzebny - programator ma wbudowany stabilizator 3.3V, zasilanie może być pobierane z portu USB. Oprogramowanie Będziemy nam potrzebne następujące oprogramowanie: • sterowniki układów FTDI (konwerter USB<->UART) - http://www.ftdichip.com/ • FlashMagic do programowania procesora - http://www.flashmagictool.com/ • kompilator LPCXpresso - http://lpcxpresso.code-red-tech.com/LPCXpresso/ Aby pobrać kompilator konieczna jest rejestracja. Jest ona darmowa. Sterowniki FTDI należy zainstalować przed podłączeniem układu, jednak w wielu systemach takie sterowniki już są zainstalowane. Konfiguracja kompilatora Instalacja LPCXpresso nie powinna stanowić problemu. Przy pierwszym uruchomieniu program zapyta o położenie naszych projektów: Domyślna ścieżka jest nieco niewygodna, warto zmienić ją na lokalizację łatwiejszą do odnalezienia na dysku. Każdy projekt będzie zakładany w podkatalogu podanej lokalizacji. Po naciśnięciu OK widzimy okno naszego kompilatora. Osoby znające Eclipse powinny być zadowolne - LPCXpresso bazuje właśnie na tym środowisku. Zanim zaczniemy pisanie programów musimy zaimportować bibliotekę CMSIS. Wybieramy opcję „Import Example project(s)” z menu widocznego w lewym dolnym rogu. Pojawi się następujące okno: Naciskamy przycisk „Browse”, automatycznie pojawi się katalog z przykładami. Wybieramy foldery: NXP->LPC1000->LPC11xx, a następnie plik: CMSISv1p30_LPC11xx.zip Zatwierdzamy wybór i sprawdzamy, czy w projektach pojawił się nowy zawierający dodaną bibliotekę. Teraz kompilator jest gotowy do pracy. Pierwszy program Wybieramy opcję „New project...”->„NXP LPC1100 projects”->”NXP LPC1100 C Project”. Pojawia się okno kreatora projektu. W pierwszym kroku wpisujemy nazwę projektu, np. „program01”. Naciskamy „Next” i wybieramy nasz procesor - LPC1114/301. Następny krok jest bardzo ważny. Musimy zaznaczyć opcję „Use CMSIS”: Jest to już ostatni krok, więc przyciskamy „Finish”. Kreator tworzy dla nas projekt: Możemy skompilować przykładowy program wybierając opcję „Project”->”Build Project”, albo klikając na przycisk z symbolem młotka w pasku narzędziowym. W widoku konsoli pojawią się informacje o poprawnej kompilacji. Nasz program nic nie robi, więc czas zmienić kod, tak żebyśmy mogli widzieć rezultat działania. Zestaw ewaluacyjny wyposażony jest w diody LED, wykorzystamy je do sygnalizacji działania programu. Wpisujemy kod: int main(void) { volatile static int i = 0 ; LPC_GPIO0->DIR |= 0x040; while(1) { LPC_GPIO0->DATA |= 0x040; for (i=0;i<100000;i++) ; LPC_GPIO0->DATA &= ~0x040; for (i=0;i<100000;i++) ; } return 0 ; } Program powinien skompilować się poprawnie. Teraz możemy otworzyć katalog z naszym kodem wynikowym. Niestety czeka nas niemiła niespodzianka. Domyślnie tworzony jest plik wynikowy w formacie .axf, zamiast oczekiwanego .hex. Musimy zmienić konfigurację kompilatora. Wybieramy opcję „Project”->”Properties”. Odnajdujemy zakładkę „Build Steps”, a następnie w okienku „Post-build steps” wpisujemy w pole „Command” polecenie: arm-none-eabi-objcopy -O ihex ${BuildArtifactFileName} ${BuildArtifactFileBaseName}.hex Tym razem plik .hex zostaje utworzony: Nasz program wgrywamy za pomocą FlashMagic-a. Wgrywamy pierwszy program Podłączamy płytkę, do komputera i sprawdzamy, który port COM został wybrany do podłączenia zestawu. W moim komputerze jest to COM40: Następnie uruchamiamy FlashMagic i ustawiamy odpowiednio jego konfigurację: • Select Device: LPC1114/300 • COM Port: - port do którego został podłączony nasz zestaw • Baud Rate - jeśli pojawią się problemy z programowaniem, można wybrać inną prędkość • Interface: None (ISP) • Oscillator (MHz): 12 • Hex File - plik, który utworzyliśmy za pomocą LPCXpresso Następnie naciskamy „Start” i programujemy układ. program01.zip
  17. 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.
  18. Typ bool też nie jest standardowy w C. Najprościej uzyskać 0/1 tak: sensor[4] = (PINA & 0x08) ? 1 : 0;
  19. 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...
  20. 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
  21. Niestety C, ew. C++. Ale jeśli będzie zainteresowanie, to ja chętnie zmienię kurs LPC2114 na LPC1114
  22. 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.
  23. 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.
  24. Spróbuj zamienić na: ISR(USART_RXC_vect)
  25. 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. Wygląda jakby nasz program nie działał. Żeby uruchomić program musimy wyjąć zworki: J5 - ISP J7 - RST Po ich wyjęciu resetujemy mikrokontroler przyciskiem RESET i widzimy, że program działa poprawnie. Niestety, gdy zamkniemy terminal i spróbujemy zaprogramować mikrokontroler, płytka nie będzie chciała się zaprogramować. Przed programowaniem musimy ponownie założyć zworki J5 i J7 oraz nacisnąć reset. Jak widać jest to dosyć męcząca procedura. Dlatego w poprzednich przykładach wykorzystywaliśmy COM1 do komunikacji, a COM0 do programowania. Bootloader Pozostaje wytłumaczyć magię zworek J5 i J7. Przy okazji znajdziemy nieco łatwiejszą metodę programowania i komunikacji przez port COM0. Najpierw musimy poznać nieco bliżej tzw. bootloader. Jest to program, który jest wgrywany do każdego procesora LPC2114 przez producenta. Gdy kupujemy nowy procesor bootloader jest już do niego wgrany. Co ciekawe, nawet po zaprogramowaniu procesora naszym programem bootloader nadal w nim pozostaje. Tak jak na PC możemy mieć wiele programów na raz, również w mikrokontrolerze może być wgranych wiele programów. Aby programy sobie nie przeszkadzały, znajdują się one pod innymi adresami. Bootloader jest uruchamiany podczas każdego startu, czy resetu procesora. Dopiero bootloader uruchamia nasz program. Do czego służy bootloader? Przede wszystkim do programowania procesora przez UART. Po resecie procesora najpierw uruchamiany jest bootloader, który sprawdza stan pinu P0.14. Jeśli na pinie tym będzie logiczne „1”, przekazuje sterowanie (uruchamia) do naszego programu. Jeśli na wejściu P0.14 po resecie pojawi się logiczne „0” bootloader przejmuje kontrolę i oczekuje na komunikację przez UART0. Do komunikacji z bootlaoderem (czyli programowania procesora) można wykorzystać darmowe programy takie jak: * LPC2000 Flash Utility - http://www.nxp.com/products/microcontrollers/support/software_download/lpc2000/ * FlashMagic - http://www.flashmagictool.com/ * lpc21isp - http://sourceforge.net/projects/lpc21isp/ Ostatni z tych programów jest przez nas wykorzystywany. W pliku makefile znajdziemy odwołanie do niego. Przyciskając Ctrl+F5 wywołujemy właśnie ten program. Teraz gdy wiemy, że po resecie uruchamiany jest nie nasz program, tylko właśnie bootloader, czas przyjrzeć się pinowi P0.14 oraz zworkom J5 i J7. Popatrzmy na schemat Linia A1 jest podłączona właśnie do portu P0.14. Natomiast RST do dopowiada za reset procesora. Jeśli zworka J7 jest założona to to układ pozwala na resetowanie procesora przez PC przy użyciu linii DTR złącza RS-232. Podobnie zworka J5 odpowiada za zerowanie wejścia P0.14 (uruchamiające programowanie przez bootloader) przez linię RTS złącza RS-232. Na schemacie widać jeszcze podłączenie przełącznika S2 z wejściem P0.14 przez zworkę INT1. Wykorzystamy tę możliwość nieco dalej. Gdy zworki J7 oraz J5 są założone, przy wykorzystaniu portu RS-232 można wykonać reset procesora oraz wymusić logiczne „0” na wejściu P0.14. Dzięki temu możliwe jest uruchomienie bootloadera z poziomu PC. Naciskamy ctrl+F5 i wszystko dzieje się automatycznie. Mikrokontroler jest resetowany, na P0.14 wymuszany jest stan „0” i rozpoczyna się programowanie. Niestety czasem taka „automatyzacja” działa nie najlepiej. Jeśli chcemy COM0 wykorzystać jako zwykły port komunikacyjny, linie DTR oraz RTS mogą wpływać na działanie mikrokontrolera. Widzieliśmy to po wgraniu przykładowego programu. Program nie działał, bo procesor był cały czas resetowany. Dużo zależy od programu sterującego portem RS-232, może on używać linii DTR i RTS lub nie. W przypadku putty niestety mikrokontroler nie może działać. Po wyjęciu zworek J5 oraz J7 mikrokontroler działa normalnie, ale nie można automatycznie go programować. Pozostaje zastanowić się, jak niejako „ręcznie” uruchomić bootloader w trybie programowania. Producent płytki dostarczył w tym celu 2 przełączniki: RESET oraz INT1. Jeśli przytrzymując INT1, naciśniemy RESET, procesor zostanie zresetowany, a bootloader odczyta na wejściu P0.14 stan „0” (o ile oczywiście zworka INT1 zostanie założona). Dzięki temu możemy zaprogramować procesor bez zworek J5 i J7. Procedura jest następująca: 1) przytrzymaj przycisk INT1 2) naciśnij i zwolnij RESET 3) zwolnij INT1 4) rozpocznij programowanie klikając przycisk Start w programie FlashMagic, albo odpowiednik w pozostałych Teraz mamy nową, znacznie łatwiejszą procedurę pozwalającą na wykorzystanie COM0 zarówno do programowania, jak i komunikacji. Przy okazji drobna uwaga. W projekt płytki ZL1ARM zakradł się mały błąd. Kondensator C9 o pojemności 100nF zapewnia filtrowanie drgań przycisku S2, ale jednocześnie może powodować zawieszanie (właściwie - uruchamianie bootloadera) podczas startowania płytki. Raz na kilka uruchomień program nie startuje. Jeśli taki efekt się pojawia należy zmienić kondensator na mniejszy. Program16.zip
×
×
  • Utwórz nowe...