Skocz do zawartości

FlyingDutch

Użytkownicy
  • Zawartość

    810
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    32

FlyingDutch wygrał w ostatnim dniu 7 stycznia

FlyingDutch ma najbardziej lubianą zawartość!

Reputacja

431 Mistrz

O FlyingDutch

  • Ranga
    7/10
  • Urodziny 28.05.1968

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Bydgoszcz
  • Języki programowania
    C/C++
  • Zainteresowania
    informatyka
  • Zawód
    Programista

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Cześć, ja tutaj żadnego hejtu nie widzę. @Elvis ma po prostu wątpliwości, które niestety podzielam. Jeśli uważasz, że nie używanie klasy string zapewni, że program nie będzie działał wadliwie - np. zawieszał się to gratuluję pomysłu Pozdrawiam BTW: @Elvis jest akurat użytkownikiem tego forum, który potrafiłby zrealizować to zlecenie bez problemów
  2. Cześć, nie chciałem się wtrącać bo to nie moja sprawa, ale dyskusja poszła w takim kierunku, że się odezwę.. @atMegatona, czy myślisz, że za pomocą Arduino spełnisz wymagania standardu "MISRA" (właściwie to jest kilka wersji tego standardu z róźnych lat). Wiesz ile kosztują narzędzia software'owe pozwalające stwierdzić zgodność kodu źródłowego z jedną z wersji tego standardu (dla konkretnego standardu języka C++ i przeważnie jedne ściśle określonej wersji kompilatora).? Myślę tu głównie o statycznych analizatorach kodu w języku C++. - jeśli nie wiesz to tym lepiej , bo często na nie nie stać firm. Po drugie zgodzę się tu niestety z kolegą @Elvis - nie podpisanie się z imienia i nazwiska jest podejrzane. Po trzecie, jak ktoś podaje tyle szczegółów i ma takie wymagania odnośnie jakości oprogramowania to niech się wysili na opis software'u w jakimś używanym technicznym standardzie np. w języku UML (no bo jak później rozstrzygać czy software jest zgodny ze specyfikacją). Tu link do jednego z narzędzi pozwalających stwierdzić zgodność ze standardem MISRA: https://www.perforce.com/solutions/audit-and-compliance?utm_leadsource=cpc-googleadwords&utm_campaign=QAC-CODINGSTANDARDS-RoW&utm_source=googleadwords&utm_medium=cpc&utm_adgroup=MISRA Pozdrawiam
  3. Cześć, dzisiaj zrobiłem próby z płytką uruchomieniową z ATMega128 i mogę stwierdzić, że nie są to błędy w implementacji procesora na układzie FPGA, ani błędnie działający klon programatora. Są to błędy w oprogramowaniu pod Windows 10 - niestety nie mogę na 100 % stwierdzić, czy to błąd w programie avrdude, czy bibliotece usblib, czy może w narzędziu "pyserial" (napisanym w Pythonie). Niestety chwilowo nie mam działającego Linuksa (padł mi dysk z Linuksem), żeby sprawdzić, czy tam działa wszystko poprawnie. Pozdrawiam
  4. Cześć, bardzo powoli posuwam się do przodu, teraz "avrdude" przynajmniej poprawnie rozpoznaje chińskiego klona "AVR JTAG-ICE". Teraz korzystając z tej skompilowanej przeze mnie (ze źródeł) wersji "avrdude" mam błąd podczas próby wysyłania pakietu do urządzenia: avrdude: Version 6.3, compiled on Mar 14 2020 at 11:11:00 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "C:\Users\mgabr\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino8/etc/avrdude.conf" Using Port : usb Using Programmer : jtag3 Setting bit clk period : 0.1 pgm->usbvid=0x1a86 pgm->usbpid=0x283c150 " avrdude: usbdev_open(): Found USB2.0-Serial, serno: ? avrdude: max packet size expected 512, but found 32 due to EP 0x82's wMaxPacketSize avrdude: usbdev_send(): wrote -22 out of 7 bytes, err = libusb0-dll:err [submit_async] submitting request failed, win error: The parameter is incorrect. avrdude: jtag3_send(): failed to send command to serial port avrdude done. Thank you. the selected serial port does not exist or your board is not connected Błąd: avrdude: usbdev_send(): wrote -22 out of 7 bytes, err = libusb0-dll:err /* * Split the frame into multiple packets. It's important to make * sure we finish with a short packet, or else the device won't know * the frame is finished. For example, if we need to send 64 bytes, * we must send a packet of length 64 followed by a packet of length * 0. */ do { tx_size = (mlen < fd->usb.max_xfer)? mlen: fd->usb.max_xfer; if (fd->usb.use_interrupt_xfer) rv = usb_interrupt_write(udev, fd->usb.wep, (char *)bp, tx_size, 10000); else rv = usb_bulk_write(udev, fd->usb.wep, (char *)bp, tx_size, 10000); if (rv != tx_size) { avrdude_message(MSG_INFO, "%s: usbdev_send(): wrote %d out of %d bytes, err = %s\n", progname, rv, tx_size, usb_strerror()); return -1; } bp += tx_size; mlen -= tx_size; } while (mlen > 0); Jest w tym fragmencie kodu pliku źród.: usb_libusb.c (od linii 342)
  5. Cześć, dzisiaj spróbowałem skompilować program do obsługi programatorów dla MCU AVR "avrdude" ze źródeł (dla Windows10 - ale wersja programu 32-bit). Źródła "avrdude" (wersja 6.3) pobrałem z tej strony WWW: http://download.savannah.gnu.org/releases/avrdude/ A kompilację przeprowadziłem według tego tutoriala: https://tomeko.net/other/avrdude/building_avrdude.php?lang=en Wszystko przebiegło bez problemów (screenshot po ./configure): Sama kompilacja (polecenie make) zajęła kilka minut, ale skompilowany program "avrdude.exe" został stworzony zgodnie z oczekiwaniami. Tutaj screenshot z testowego uruchomienia (środowisko MINGW32) skompilowanego "avrdude" exe: Teraz będę próbował osadzić tą wersję "avrdude.exe" w ArduinoIDE i sprawdzić, czy działa poprawnie (jeśli tak to będę edytował kod źródłówy). Program "avrdude" został skompilowany z symbolami debugger'a, zastanawiam się tylko jakiego debuggera można by użyć ? w MINGW mam zainstalowany "gdb", tylko nie wiem jak to połączyć z pracą "avrdude" razem z ArduinoIDE (pod kontrolą Windows)? Gdy będę miał jakieś rezultaty to napiszę w tym wątku. Pozdrawiam Update1: Pierwsze próby przeprowadzone ze skompilowaną ze źródeł wersją "avrdude"(6.3) z ArduinoIDE (1.9.0 beta) wskazują, że ta wersja działa poprawnie (OS Windows10 64-bit).
  6. Cześć, walczę dalej z zaprogramowaniem AVR-core za pomocą programatora opisanego w poście powyżej(klon ICE JTAG AVR) i ArduinoIDE pod Windows10. Dla wersji ArduinoIDE niższej niż 1.9.0 Beta - ArduinoIDE "nie widzi" programatora. Dla wersji Arduino 1.9.0 beta mam następujący błąd: Tutaj zrzut ekranu: Dla informacji - programator JTAG ICE podłączony do zestawu FPGA poprzez translatory poziomów logicznych. Poprawiłem też obsługę pinu "nrst" (reset AVR-core), dałem zewnętrzny rezystor 10 K jako "pulldown" do masy i przeniosłem ten sygnał na zewnętrzny pin (reset poziomem wysokim). Jest to zmiana jednej linijki w pliku constraints: ## Buttons set_property -dict { PACKAGE_PIN U7 IOSTANDARD LVCMOS33 } [get_ports { nrst }]; #IO_L19P_T3_34 Sch=pio[45] Co do samego programowania to edytowałem plik konfiguracyjny "avrdude.conf" zmieniając VID i PID (USB) dla mojego programatora (odczytane z Managera urządzeń Windows) ale te próby nie zakończyły się powodzeniem. Aktualnie planuję następujące działania: 1) Spróbować zaprogramować AVR-Core pod Linuksem korzystając z Arduino 2) Poszukać jakiejś starszej wersji "AVR Studio" i spróbować z niego zaprogramować układ (Windows) Jeśli komuś nasuwają się jakieś uwagi, lub podpowiedzi będę wdzięczny za podzielenie się nimi. Pozdrawiam mały update: 1) Linux na razie odpada bo definitywnie padł mi dysk z partycjami Linuksowymi 2) Zrobiłem próbę z Windows 7 (64) na VirtualBox'ie : zainstalowałem driver do "Atmel JTAG ICE" i "AVR Studio 4.13" skomplilowałem program "Blink" i próbowałem uruchomić "Debug'a" z "AVR Studio" - niestety ten sam problem co z Arduino (PID urządzenia się nie zgadza) - patrz zrzut ekranu: Ma ktoś pomysł jak to obejść ? Update 2: Po próbach z kilkoma sterownikami, kilkoma wersjami "AVR Studio" i grzebaniu w plikach konfiguracy6jnych "avrdude" (Arduino) doszedłem do wniosku, że nie obejdzie się bez zmian w kodzie źródłowym programu "AVRDude" i jego kompilacji. Ewidentnie ten chiński klon "AVR JTAG ICE" ma inne ID sprzętu niż oryginalny programator a właśnie "AVRDude" oraz "AVR Studio" oczekują konkretnych ID sprzętowych (zmiany w pliku konfiguracyjnym avrdude nie usuwają problemu). Pobrałem źródła "AVRDude" z tej strony i je analizuję: http://download.savannah.gnu.org/releases/avrdude/ Tutaj strona projektu "AVRDude": https://savannah.nongnu.org/projects/avrdude/ Pobrałem wersję avrdude 6.3 z podanej wyżej strony. W pliku źródłowym "jtag3.c" (Fragment zaczynający się od linii 1322) znalazłem komunikat wyświetlany przez ArduinoIDE: if (strncmp(port, "usb", 3) != 0) { avrdude_message(MSG_INFO, "%s: jtag3_open_common(): JTAGICE3/EDBG port names must start with \"usb\"\n", progname); return -1; } serdev = &usb_serdev_frame; if (pgm->usbvid) pinfo.usbinfo.vid = pgm->usbvid; else pinfo.usbinfo.vid = USB_VENDOR_ATMEL; /* If the config entry did not specify a USB PID, insert the default one. */ if (lfirst(pgm->usbpid) == NULL) ladd(pgm->usbpid, (void *)USB_DEVICE_JTAGICE3); for (usbpid = lfirst(pgm->usbpid); rv < 0 && usbpid != NULL; usbpid = lnext(usbpid)) { pinfo.usbinfo.flags = PINFO_FL_SILENT; pinfo.usbinfo.pid = *(int *)(ldata(usbpid)); pgm->fd.usb.max_xfer = USBDEV_MAX_XFER_3; pgm->fd.usb.rep = USBDEV_BULK_EP_READ_3; pgm->fd.usb.wep = USBDEV_BULK_EP_WRITE_3; pgm->fd.usb.eep = USBDEV_EVT_EP_READ_3; strcpy(pgm->port, port); rv = serial_open(port, pinfo, &pgm->fd); } if (rv < 0) { avrdude_message(MSG_INFO, "%s: jtag3_open_common(): Did not find any device matching VID 0x%04x and PID list: ", progname, (unsigned)pinfo.usbinfo.vid); int notfirst = 0; for (usbpid = lfirst(pgm->usbpid); usbpid != NULL; usbpid = lnext(usbpid)) { if (notfirst) avrdude_message(MSG_INFO, ", "); avrdude_message(MSG_INFO, "0x%04x", (unsigned int)(*(int *)(ldata(usbpid)))); notfirst = 1; } fputc('\n', stderr); return -1; } Podejrzewam, że ten if jest odpowiedzialny za niepowodzenie moich prób z edycją pliku konfiguracyjnego: if (pgm->usbvid) pinfo.usbinfo.vid = pgm->usbvid; else pinfo.usbinfo.vid = USB_VENDOR_ATMEL; , jak widać jest tu nadawany VID Atmel'a (chyba warunek z jakichś powodów nie był spełniony, chociaż w pliku konfiguracyjnym avrdude podawałem VID mojego programatora). Muszę jeszcze znaleźć jakiś opis jak skompilować te żródła pod Windows. Dzisiaj niestety muszę na tym zakończyć, ale będę drążył temat od poniedziałku. BTW: nie rozumiem dlaczego z tymi darmowymi projektami Soft-procesorów jest tak trudno: z projektem RISC-V to była droga przez mękę, a teraz z tym "AVR Core" jest podobnie. Nie orientuje się ktoś, czy są jakieś komercyjne IP-Core z soft-procesorami AVR dostępnymi dla FPGA Xilinx'a lub Intel'a ? Pozdrawiam
  7. Cześć, dopiero dzisiaj dotarł do mnie klon programatora/debuggera ICE/JTAG dla MCU AVR kupiony na AliExpress. To taki model: https://www.aliexpress.com/item/32871295257.html?spm=a2g0s.9042311.0.0.38364c4dJomjd4 Niestety wcześniej nie posiadałem żadnego programatora JTAG dla procesorów AVR (przez epidemię koronawirusa paczka była mocno opóżniona). Dzisiaj spróbuję zaprogramować ten soft-processor na zestawie FPGA CmodA7. Przewiduję sporo trudności bo jest to dość zabytkowy model programatora (jak i sama AtMega128 jest leciwa) i nie wiem jaka wersja kompilatora będzie poprawnie obsługiwała ten programator. Pozdrawiam BTW: robiłem próby z Arduino i "MegaCore", ale na razie nieudało mi się zaprogramować "AVR core".
  8. Cześć, jeśli chodzi o architekturę X86-64 to możesz też spróbować meta-dystrybucji Gentoo-Linux. Kilka razy robiłem za jej pomocą Linux'a "szytego na miarę" (łącznie z dostosowaniem jądra).. Niestety nie wiem jak to wygląda aktualnie - ostatnio taką okrojoną dystrybucję robiłem około 2010 roku. Jeśli nic nie zostało "spartaczone" w Gentoo w ostatnich latach to jest to według mnie dobry wybór. Niestety nauki i czytania dokumentacji jest sporo. Pozdrawiam
  9. Cześć, jeśli masz zainstalowaną aplikację "STM32CubeMX" to ona tworzy repozytorium kodu dla pobranych pakietów software (np. dla serii STM32F4x) w katalogu (Windows): C:\Users\TwojUser\STM32Cube\Repository\ i tam też należy szukać przykładów kodu. Np dla serii STM32F4x w katalogu: C:\Users\Twoj user\STM32Cube\Repository\STM32Cube_FW_F4_V1.24.1\Middlewares\ST\STM32_USB_Host_Library - patrz zrzut ekranu: Pozdrawiam BTW: nie wszystkie modele STM32 mają USB host'a.
  10. Powinny być bardzo zbliżone. Pozdrawiam
  11. Da się, ale i tak musisz napisać równania dla tego regulatora i je zrozumieć, w podanych linkach znajdziesz dane jak te równania wyglądają. pozdrawiam BTW: to są dość skomplikowane równania, zawierają całki i różniczki (o ile wiem takie równania można rozwiązywać w Excelu) - patrz artykuł: https://automatykaonline.pl/Aplikacje/Energetyka/metoda-symulacji-procesow-dynamicznych-finn-excel-2007 ale dużo łatwiej zrobić to w MATLAB/Simulink. Możesz też zrobić fizyczny regulator (sprzętowy) z użyciem Arduino i biblioteki PID i opisać wyniki korzystając np. z "Arduino processing".
  12. Cześć, Podstawowy algorytm i równania regulatora PID są ogólnodostępne - patrz link: https://pl.wikipedia.org/wiki/Regulator_PID A tu np. masz kod MATLAB regulatora PID do pobrania (musisz mieć założone konto w Mathworks): https://uk.mathworks.com/matlabcentral/fileexchange/22150-pid-controller-matlab-code https://uk.mathworks.com/matlabcentral/fileexchange/35163-matlab-based-pid-controller https://uk.mathworks.com/discovery/pid-control.html A tutaj trochę wi\ecej teorii: https://eia.pg.edu.pl/documents/184139/28374603/LAB_3_Material_pomocniczy_Czesc_1.pdf https://www.mathworks.com/videos/pid-control-in-matlab-simulink-117949.html https://uk.mathworks.com/videos/getting-started-with-simulink-part-4-tuning-a-pid-controller-1508444927396.html https://www.researchgate.net/post/How_could_I_make_a_MATLAB_code_to_design_a_PID_controller
  13. Cześć, mały update: oryginalnie ATMega103 nie miała interfejsu programowania JTAG, więc ten soft-procesor najprawdopodobniej trzeba programować jako ATMega128 (ATMega103 i ATMega128 są do siebie bardzo podobne i ATMege128 można za pomocą fuse-bits ustawić w trybie zgodności z ATMega103). Niestety obowiązki w pracy i brak czasu nie pozwoliły mi jeszcze tego sprawdzić. Pozdrawiam
  14. Cześć, najłatwiej jest to zasymulować korzystając z Arduino i biblioteki PID. Chba, że masz Matlab'a i Simulinka i chcesz w tych narzędziach zrobić symulację jako model matematyczny. Pozdrawiam
  15. Cześć @Treker, to dobry pomysł, aby wykorzystać te materiały, lecz niektóre z ćwiczeń dadzą się uruchomić tylko na płytce Mimas V.2 (ze Spartanem6), ale postaram się to jakoś podzielić miedzy dwie płytki ?Mimas/Elbert. Pozdrawiam
×
×
  • Utwórz nowe...