W miarę jak oglądam kolejne Twoje filmy, wraz ze spadkiem mojej samooceny co do własnych predystpozycji do zajmowania się elektroniką, rośnie mój podziw dla Ciebie 😀💪
Myślałem jeszcze nad dodaniem automatycznej detekcji układów, możliwością dodawania nowych układów z poziomu programatora oraz obsługą układów GAL ;) Tego możecie się spodziewać w wersji 2.0
No proszę Pana nie wiem co powiedzieć. Czapki z głów....👍👏. Dziwi mnie tylko że używasz gotowego stopera a nie zbudowanego przez siebie, który napewno byłby dokładniejszy 😉. Naprawde oglądam i podziwiam.Dzięki i pozdro.
Super sprawa budowanie własnych komputerów od zera. Można go wyspecjalizowac do konkretnych zastosowań bez zbędych elementów i kodu. Brakuje mi tylko w Twoich projektach oszacowania zużycia energii elektrycznej bo akurat dla mnie jest to ważne.
@@__MINT_ ja zabieram się za budowanie małego domku samowystarczajacego energetycznie oparego na fotowoltaice. Dlatego tak ważne jest rozważne dysponowanie energią przy niewielkim magazynie energii.
Hej, mega uznanie za ciekawe projekty i ciekawe pomysły. Odzywam się z pewnym opóźnieniem po obejrzeniu filmu. Poza ogólną koncepcją działania oczywiście też mnie zainteresował kod, tak sobie szukam i analizuję różne rozwiązania programowe. Proszę potraktować to jako konstruktywną krytykę, może drobne podpowiedzi przydadzą się do poprawienia (niezawodności) działania kodu. Przykładowy kompilator, chociażby ten z Arduino (ale uwagi ogólnie dotyczą się składni języka C) wskazał kilka problemów: W liniach 1536, 1759, 1981 porównywana jest liczba ze znakiem z liczbą bez znaku (int32_t z uint32_t). Dobrze by było jawnie zrzutować którąś ze zmiennych na typ tej drugiej zmiennej ale myślę, że po prostu zmienna i powinna być bez znaku bo w pamięciach nie ma ujemnych ilości bajtów :). W pewnym zakresie liczb to będzie działać nawet poprawnie. Znam jednak pewną swoją sytuację bawiąc się czujnikiem INA219 gdzie to w starszej wersji biblioteki zrobił ktoś podobny błąd związany z definicją zmiennej i potem na wyświetlaczu po przekroczeniu pewnej wartości napięcia pojawiały się liczby ujemne ... W linii 1981 zmienna jest nazwana zakazaną nazwą shift - ta nazwa jest zarezerwowana w języku C dla operatora przesunięcia. W linii 1737, 1841 chodzi o hierarchię ważności operatorów. W zapisie: if(percent != percentBef && i >= 0) na końcu będzie wykowywana relacja porównania z zerem więc wynikiem zawsze będzie 1 (TRUE). Podejrzewam, że operator logiczny && powinien być wykonywany na końcu więc wyrażenia po jego prawej i lewej stronie powinny być umieszczone w dodatkowych nawiasach. Kompilatorowi coś się jeszcze nie podoba funkcja String info(byte what), być może chodzi o jakiś zaginiony a może nadmiarowy nawias } ale tu się już nie wgłębiałem bo z powodu innych błędów kompilacja nie przeszła :).
Dzięki za porady, w pętli iterator celowo jest typem int32_t, bo wartość iteratora może być zmieniona przez kod w pętli, i może zdarzyć się tak, że będzie dekrementowany przy wartości 0. Gdyby zmienna była typem bez znaku, jej wartość przeskoczyłaby do 4294967295, niby pod koniec iteracji z powrotem wróci do 0, ale wolałem, żeby wartość mogła wynieść -1. W zapisie binarnym te liczby wyglądają identycznie, więc spokojnie można użyć uint32_t. Co do hierarhii operatorów, to kod działał prawidłowo, więc kompilator chyba domyślił się, w jakiej kolejności sprawdzać warunki. Z tego co widzę Arduino IDE ukrywa wiele błędów lub ostrzeżeń, bo kompilacja przebiega bezbłędnie. Z jednej strony to dobrze, a z drugiej źle, bo nie można doszlifowywać swoich umiejętności i wiedzy. Wczoraj np. dowiedziałem się, że przy zapisie "zmienna char[x] = "Napis" " w miejsce x trzeba wstawić 6, a nie 5 (lub nic nie wstawiać), bo string jest zakończony dodatkowym, zerowym bajtem. Arduino IDE przez kilka miesięcy ukrywało tą informację, i nie dawało błędu przy zapisie "zmienna char[5] = "Napis"
@@__MINT_ Z tymi int32_t jeśli działa poprawnie to dobrze. Może jednak nie trafiłeś na przypadek, że liczba po lewej stronie porównania była ujemna. Gdyby tak się stało to traktując ją jak liczbę bez znaku okazało by się, że np -1 jest większe od 1000 i warunek byłby inaczej potraktowany. Ale to może też zależy od kompilatora. Tak, z tablicami char trzeba pamiętać o tym końcowym zerze :) Podobnie trzeba to mieć na uwadze jak kopiujesz łańcuchy znaków z pamięci programu do tymczasowego bufora w RAM. też trzeba zarezerwować jedną komórkę więcej bo inaczej coś może się wykrzaczyć. O widzisz, faktycznie wybierając tradycyjną platformę UNO bez zbędnych bajerów kompilacja przechodzi, chociaż ostrzeżenia o których wspomniałem są generowane. Ja raczej częściej korzystam z platformy MiniCore z optymalizacją LTO i tam już to nie przechodzi.
@@inspektorelektron Właśnie z tego powodu jakoś nie jestem przekonany do korzystania z Arduino i pozostaje jak ten mamut przy Atmel studiu, nagminnie korzystając z dobrodziejstw debugera. :) A tak przy okazji można zadeklarować uint32_t, a do wykrywania wartości progowych stosować przykładowo if(uint32_t > stała).
@@__MINT_ Tak się zastanawiam nad tymi pętlami i iteracją. w zmiennej 32 bitowej 31 bitów można wykorzystać jako przestrzeń liczbową do adresowania pamięci, a jeden bit jako informację do wyjścia z pętli, przykładowo zmienna = granica; Do{ ... kod ... ; zmienna--;}While(test_asm); test_asm jako wstawka asemblerowa testująca jedynie najstarszy bit testowanej zmiennej na którym de-facto opiera się cała weryfikacja. To daje że każde testowanie zmiennej zajmuje o wiele mniej czasu niż tradycyjne metody. Minimalizacja czasu testowania zmiennej w rezultacie końcowym daje spore oszczędności w czasie wykonywania pętli, bo jest mnożone przez ilość iteracji pętli. Ps. Trochę "negocjacji" z AVR'ami dotyczących "podzielności uwagi" przeszedłem, staram się tak pisać programy by nie blokować wydajności rdzenia na pętle opóźniające, czas marnowany w takich pętlach można wykorzystywać do innych działań rdzenia. ;) Pozdrawiam
@@mariuszkajstura6635 Można tak, ale ma to sens tylko wtedy, gdy w pętli praktycznie nic nie ma. Inaczej ilość taktów poświęcanych na sprawdzanie zmiennej to kropla w morzu, samo sprawdzanie da radę zrobić bez ASM, korzystając z tego, że zmienna jest przechowywana na czterech bajtach, za pomocą pointera wystarczy odwoływać się do najwyższego bajtu i sprawdzać, czy ma ustawiony najwyższy bit
Widziałem na elektrodzie czy innym elvikom, że ktoś utworzył tani programator do kości 24/25 3.3v. Może utworzysz swój pewnego dnia :D I wprowadzisz do sprzedaży :D
Witam, gratuluję całego projetku. Za głupie pytanie, przepraszam, ale można 8051 za jego pomocą programować też? Chodzi mi o starszą wersję AT89C2051, a nie AT89S2051.
Ja bym dorzucił port pod taśmę z np. CH341 i dał tą pamięć Flash prawie na stałe i wtedy ta pamięć robiła by za bufor miedzy kompem, a programatorem, lub przerzucać dane bezpośrednio z kompa z CH341 do tego programatora bez bufora.
No ten w Arduino, po co inny? Bufora też nie potrzeba, dane mogą być zapisywane od razu, ewentualnie w małym buforze na 256B (pamięci zapisywane stronami mają określone maksymalne czasy pomiędzy zapisem kolejnych bajtów)
@@__MINT_ Nie oto mi chodziło >.< Ch341 jest konwerterem do różnych magistral i najczęściej używany jest jako programator pamięci szeregowych. Zamysł miałem taki by bez modyfikacji kodu wgrywać kod na tą pamięć szeregową, a potem z niej w równoległą 0:) Ps. w Arduino używany jest chip ch340, mógłby być ch341, ale to overkill.
Witam mam pytanie dotyczące świetlówki uv jak masz ją podłączoną? Podrzuć schemacik. Czemu nie zastosowałeś modułu wyświetlacza od noki lub lcd ST7735 jest on kolorowy, wszystko w menu było by bardziej czytelne, więcej można by tekstu na wyświetlaczu upchnąć zrobić fajne menu. I dla czego pamięć? nie prościej zastosować kartę SD łatwiej dane można by przenosić mieć kilkanaście wsadów do różnych pamięci Pomyśl nad modyfikacją projektu, projektem płytki nie jedna osoba wtedy by chciała kupić zestawik, a ty miał byś dodatkowy dochód na nowe projekty
Kolorowy wyświetlacz ma zazwyczaj kolor 160bit, nieliczne 8-bit. Monochromatyczny 1-bit, alfanumeryczny jakieś 1/256 bit. Sam policz ile RAM trzeba mieć w uC aby zbuforować dane! ŻADEN AVR nie da rady! trzeba sięgnąć po ARM, którego większość "pseudo elektroników" sie boi, bo ja the bilami! Na ARM program pisze się łatwiej i szybciej niz na AVR ponadto, ARM są tańsze od porównywalnych AVR. POminę milczeniem, ze są ARM, które nie mają odpowiednika w przestarzałych AVR!
@@eR-MIK A więc można użyć wyświetlacza od noki 3310 lub oled oba są monochromatyczne i mam schematy przenośnych programatorów z użyciem ich. Są to programatory do programowania avr. Po za tym oledy są i2c i potrzebne są im dwie linie adresowe. Można by też użyć gotowych modułów stm32f103c8t6
Ale w czym masz problem? Wyświetlacz 16x2 w zupełności wystarcza, jak będziesz budował własny programator, dasz wyświetlacz jaki chcesz, ja wybrałem taki, bo taki mi odpowiada
Mogę dodać obsługę GALi do Easy Proga, tylko największą zagadką jest to, w jaki sposób się je programuje. Część informacji już mam, ale są niekompletne, czyli pozostaje metoda prób i błędów
Chciałem, żeby to programator wszystkim zarządzał, a nie komputer programatorem. Jakbym dodał połączenie przez USB, to byłby konflikt dwóch interfejsów, programu do obsługi Easy Proga oraz samego programatora. W kodzie musiałbym na każdym kroku decydować, co w danym momencie ma priorytet, USB czy przyciski programatora, żeby nie doszło do sytuacji typu próba wgrania wsadu bez wybrania pamięci z listy. Takich sytuacji możliwych by było pewnie z kilkadziesiąt, i każdą z nich musiałbym przewidzieć, bo jak coś robię, to musi być idiotoodporne. To zbędne komplikowanie kodu, a bez tego mam 15KB wolnego miejsca na dodatki typu automatyczna detekcja układu. Jedyne co mogę dodać, jeśli chodzi o USB, to możliwość zapisu i odczytu flasha SPI.
Czy aby nie ma pomyłki na schemacie programatora w miejscu tranzystora Q3? Nijak nie wychodzi mi, żeby tak podłączony i taki tranzystor mógł działać. Co innego, gdyby to był tranzystor npn.
@@__MINT_ To widać nawet "na chłopski rozum", bo przecież prąd przez tranzystor bipolarny płynie zgodnie z kierunkiem grota w symbolu tranzystora. Inaczej napięcie programowania Vpp-source brałoby się chyba z eteru. Tak przy okazji mam kilka sztuk pamięci typu PROM TM622 (vintage 40-letni), ale nigdzie nie mogę znaleźć algorytmu ich programowania. Może przy okazji kontaktu ze starymi EPROMami natknął się Pan na coś takiego. Jest to odpowiednik Intelowskiego układu 3622.
No ambicja to tu jest,ale to hm w 70-tych latach było by co podziwiać 🙈 . Póki co nijak się to ma do 2022 r . Nie mówiąc zupełnie o innych parametrach . Wolę laptula (USB ).. Jednak upartość i wiedza+zdolności tu akurat niezna granic.Za 20 lat Nobel gwarantowany 🙈 - pzdr.
@@__MINT_ chciał byś może jakichś korepetycji udzielić ? bo jestem mechanikiem samochodowym i może byś jakiejś wiedzy udzielił odnośnie sterowników samochodowych ?
@@__MINT_ no to może 2cm przewody zakończone męskim goldpinem dolutować do podstawki, spiąć razem później to nie problem. Tylko przydała by się "mała dobódówka obudowy" z wklejonym zif
Ta budżetowa podstawka po "modyfikacji" wygląda na trwałą, nie ma co kombinować z dolutowywaniem goldpinów i jakimiś dobudówkami, bo z programatora zrobi się dziadostwo