Skocz do zawartości

avrkwiat

Użytkownicy
  • Zawartość

    18
  • Rejestracja

  • Ostatnio

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    kwidzyn
  • Zawód
    Szkoleniowiec, Nauczyciel, Programista, Elektronik, ogrodnik :)

Osiągnięcia użytkownika avrkwiat

Starszy odkrywca

Starszy odkrywca (5/19)

  • Za 5 postów
  • Młodszy Juror
  • Aktywny twórca
  • To już rok!
  • To już 5 lat!

Odznaki

0

Reputacja

  1. Elvis, Dzięki za ten ostatni post, to wiele zmienia. Ja zawsze deklarowałem zegary i nawet tego nie zauważałem. Tu chciałem, aby kod był jak najkrótszy, żeby się zmieścił na 1 slajdzie prezentacji i to mnie zgubiło. Złe założenia, dobre chęci 😋. Ale dobrze posłuchać kogoś kto wie więcej na ten tema. Co do bibliotek standardowych, to ja nigdy im nie ufałem i radziłem sobie w inny sposób widoczny na filmie (czyli doświadczalnie). Niestety nie jest to dobry sposób jak się chce, to wytłumaczyć w technikum ^^, bo za każdą zmianą zegara trzeba było podłączać oscyloskop i konfigurować go na nowo, albo liczyć z proporcji do nowych ustawień. Dobrze, że dziś będę mógł już spać 😃
  2. Elvis, Na wstępie chcę podziękować Tobie za te oscylogramy. Były bardzo pomocne już wiem gdzie tkwił mój problem i problem z tymi bibliotekami. Już wyjaśniam. 1) Zakładałem, że jak w kodzie nie skonfiguruje żadnego zegara, to on automatycznie przydzieli mi HSI, czyli 8Mhz. Co okazało się błędnym założeniem. Za każdym razem trzeba konfigurować zegar, bo inaczej liczymy na szczęście. 2) Skonfigurowałem zegar w taki sposób: Przypisałem HSE zewnętrzny 10Mhz do mnożnika 7, czyli uzyskałem 70Mhz: // PLLCLK = 10MHz * 7 = 70MHz RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_7); Następnie przypisałem PLL do SysClk: RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); W tym momencie jak wywołam: SysTick_Config(70000000/1000); Dostałem idealnie 1ms. Powtórzyłem to dla innych ustawień, czyli ustawiłem 40Mhz i przypisałem: SysTick_Config(40000000/1000); Dalej dostałem 1ms, wszystko grało jak należy. Problem był tylko wtedy, gdy chciałem użyć: SysTick_Config(SystemCoreClock / 1000); Wtedy pod zmienną SystemCoreClock nie ma aktualnego zegara, tylko coś innego i tu tkwi problem. Dziś jestem już nieźle wydymany tym problemem, bo nie daje mi to spać i muszę odpocząć. Nie wiem, czy to jest wina CooCox, ale jeszcze to będę testował. W sumie to można zamknąć temat 😉, bo mi się wyjaśniło, a nad poprawą tych bibliotek i tak popracuję. Dzięki za wszystkie posty, które były pomocne.
  3. Elvis, Jestem juz na 99% pewny, że kod jest ok tylko ustawienia standardowe u mnie są inne. Ja aby dostać takie same wykresy muszę wpisać: SystemCoreClock=28800000; returnCode = SysTick_Config(SystemCoreClock / 1000); Mam prośbę mógłbyś skompilować mi twój kod z twoimi ustawieniami pod STM32F107vct6 i przesłać mi elf, albo hex na maila makwiatkow@gmail.com? Bo może to wina tego mojego procka. Wtedy będę miał 100% pewności, albo nowe podejrzenia co do mojej IDE.
  4. Elvis, Kod daje 200Hz na pinie15 czyli 5ms okres. Płytka Zl29ARM z STM32F107vct6 na zewnętrzny zegar podłączone jest 10MHz. Mi się właśnie skończył weekend, więc będę afk, ale dzięki za chęci 😉 #include "stm32f10x.h" void SysTick_Handler(void) { GPIO_WriteBit(GPIOE, GPIO_Pin_15, (BitAction) ((1-GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_15)))); } int main (void) { uint32_t returnCode; returnCode = SysTick_Config(SystemCoreClock / 1000); //200 tyknieć na sekundę if (returnCode != 0) { /* Check return code for errors */ // Error Handling } //konfigurowanie portow GPIO GPIO_InitTypeDef GPIO_InitStructure; /*Tu nalezy umiescic kod zwiazany z konfiguracja sygnalow zegarowych potrzebnych w programie peryferiow*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);//wlacz taktowanie portu GPIO E RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//wlacz taktowanie portu GPIO C GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOE, &GPIO_InitStructure); while(1); }
  5. Elvis, 1) Może mnie źle zrozumiałeś, bo widzę, że odebrałeś to jako atak. Nie o to mi chodzi, chodzi o to, że mieliście zrobiony kurs w którym były Systick wyjaśniony szybko i łatwo. Bez konieczności pisania nowych bibliotek. Dlatego uznałem, że fajnie jakby to działało. Wtedy nie musiałbym sam się męczyć. Wrzuciłbym film z waszym linkiem i pokazał, że ten kod na waszej stronie działa bez żadnych dodatkowych modyfikacji, bo tak byłoby szybciej z mojego punktu widzenia. Jak można zauważyć zrobiłem tak z waszym kursem na LPC 😉, jak coś jest dobre, to nie ma co tam kombinować. Niestety wyszło mi, że trzeba w tym kodzie jeszcze majstrować, dlatego fajnie poprawić to, aby wszyscy z tego skorzystali, bo docieracie do wielu ludzi. 2) Oczywiście mogę popracować nad tym co jest przyczyną takiej rozbieżności, bo cały dzień to za mną chodzi, ale teraz mam troszkę innej pracy (tej która daje mi chleb 😉 ). Pewnie zrobiłem gdzieś błąd w deklaracji zegara, ale nie mam teraz czasu tego sprawdzać. 3) Co do moich materiałów, to będę wdzięczny za pokazanie mi błędów w myśleniu, bo przecież tak właśnie ludzie się rozwijają i można się uczyć tylko od lepszych, więc jak wiesz więcej, to chętnie się poduczę od Ciebie. Harnas, Oczywiście, że można by wpisać 8000000/1000. Zgadzam się w 100%, ale w ten sposób pokazałbym jak uzyskać tylko 1ms, a nie pokazałbym jak uzyskać np 1,5ms. Wiem, że dla osób, które programują już kilka lat jest to normalne, ale ludziom w technikum dobrze nakreślić takie rozwiązanie, ponieważ teraz w szkole nie uczą proporcji. Póki co robię kursy dla uczniów z technikum, którzy chcą zacząć programować, a ja nie mam tyle czasu, aby z każdym siedzieć osobno. Kursy wideo są w tym przypadku najlepsze, bo można pokazać co i gdzie trzeba skopiować i wkleić.
  6. Na 100% to jest wina taktowania i konfiguracji, bo jak dobieram to oscyloskopem, to wszystko śmiga jak należy. Tu jest film jak ja to zawsze robiłem: Robiłem to na procesorze STM32F107vct6, który standardowo ma HSI 8MHz i stąd te 2,5ms jeśli nie konfiguruje zewnętrznego HSE. Czyli na wewnętrznym zegarze i SysTick_Config(SystemCoreClock / 1000); Ostatnio zacząłem update'ować moją starą stronę internetową i zacząłem szukać jakiś lepszych metod, żeby przekazać moją wiedze innym. Ale chyba najprościej jest właśnie proporcją i oscyloskopem 🙁
  7. Jest błąd w tym kursie, bo jest błąd w bibliotekach STM i prosiłbym o poprawę tego. Tu jest mój film z tym jak należy to konfigurować: Wyjaśniam problem: 1) Gdyby było tak jak w biliotekach, czyli SysTick_Config(SystemCoreClock / 1000); daje 1ms, to w waszym kodzie musielibyście ustawić delay_ms(1000); aby uzyskać 1 sekundowe opóźnienie, bo mili to 0,001s, a jak podłączyć to do oscyloskopu, to otrzymacie całkiem co innego. 2) Doświadczalnie doszedłem do tego, że SysTick_Config(SystemCoreClock / 1000); oznacza 100 tyknięć zegara na 1 sekundę. Czyli 2,5ms na jeden cykl. 3) W filmie pokazuję jak konfigurować Systicka do swoich potrzeb. Czyli jeśli chcemy uzyskać 37Hz, to należy wpisać SysTick_Config(SystemCoreClock / 185), a jeśli chcemy 10 ms, to wystarczy 4 razy powtórzyć systick z ustawieniem SysTick_Config(SystemCoreClock / 1000). czyli 2,5ms *4 = 10ms na filmie chyba dosyć jasno to wyjaśniam, w razie co można pytać.
  8. Witam już kilka lat temu, będąc jeszcze nieświadomym studentem stworzyłem stworzyłem stronę internetową Link na której pokazywałem jak zabrać się za programowanie i elektronikę. Teraz mając już trochę większe doświadczenie niż wtedy postanowiłem stworzyć kursy Wideo z elektroniki i programowania. Oczywiście wideo są bezpłatne i zawsze będą bezpłatne. Stanową moje portfolio dla moich przyszłych pracodawców oraz swoistą pamięć zewnętrzną dla mnie i moich uczniów. Kursy które są już dostępne: ELEKTRONIKA: Playlista: 0) Jak zbudowane są komputery: 1) Płytka stykowa, prawo Ohma, multimetr 2) Prąd przemienny, stabilizatory, własne zasilacze: 3) Tranzystory bipolarne i mosfety oraz budowa stabilizatora na tranzystorach: 4) Bramki logiczne na tranzystorach: 5) Sygnały prostąkątne na tranzysotrach i ALU: 6) Przetworniki AC i CA, wzmacniacze i komparatory oraz zwojnice: Programowanie AVR/ARM w C: playlist: Programowanie AVR na Atmega16 i Atmel Studio: 1) Ogólne filmy odnośnie programowania: 2) Atmel Studio, fusebity, Atmega16 i rejestry DDRx i PORTx 3) Tworzenie własnych bibliotek cz1, maski itp: https://www.youtube.com/watch?v=9b-cpMV6UxM&list=PLZQKTfr7_vvQ32WG-JeBtw8Uq6G39n3mY&index=5 4) wyświetlacz 7 segmentowy: https://www.youtube.com/watch?v=bETiw-CG70U&index=6&list=PLZQKTfr7_vvQ32WG-JeBtw8Uq6G39n3mY 5) Rs232 wysyłanie danych do komputera: https://www.youtube.com/watch?v=iZ6_XI_VvyY&list=PLZQKTfr7_vvQ32WG-JeBtw8Uq6G39n3mY&index=7 6) RS232 przerwania i odbieranie danych z komputera: https://www.youtube.com/watch?v=qe5_H_TbFKQ&index=8&list=PLZQKTfr7_vvQ32WG-JeBtw8Uq6G39n3mY 7) Przetworniki ADC w atmedze16: https://www.youtube.com/watch?v=z1dq7zu-bi4&list=PLZQKTfr7_vvQ32WG-JeBtw8Uq6G39n3mY&index=9 8) Transmisja SPI, czyli przesyłanie danych do innych urządzeń: https://www.youtube.com/watch?v=uSFWlaOsK4I&list=PLZQKTfr7_vvQ32WG-JeBtw8Uq6G39n3mY&index=10 9) Standardowy timer w Atmedze16: https://www.youtube.com/watch?v=iOTPY37wFEs&list=PLZQKTfr7_vvQ32WG-JeBtw8Uq6G39n3mY&index=11 10) Watchdog: https://www.youtube.com/watch?v=zey3a8wvTb4&index=12&list=PLZQKTfr7_vvQ32WG-JeBtw8Uq6G39n3mY Programowanie ARM na przykładzie STM32F107vct6 i darmowego środowiska CooCox IDE: 1) Jak skonfigurować CooCox IDE i wgrywać program do procka: https://www.youtube.com/watch?v=7nCV1G4BkMw&index=13&list=PLZQKTfr7_vvQ32WG-JeBtw8Uq6G39n3mY 2) Nasz pierwszy program, czyli konfiguracja zegara i używanie GPIO: https://www.youtube.com/watch?v=Rlj9SGxKkgc&index=14&list=PLZQKTfr7_vvQ32WG-JeBtw8Uq6G39n3mY 3) Używanie bibliotek na przykładzie lcd alfanumerycznego LCD44780: https://www.youtube.com/watch?v=hYfRvutYW8A&list=PLZQKTfr7_vvQ32WG-JeBtw8Uq6G39n3mY&index=15 Co jakiś czas wgrywam nowe filmy (chronologia taka jak na stronie internetowej). Do wakacji znajdzie się tam programowanie ARM i raspberry Pi. Programowanie obiektowe w JAVA: playlist: 1) Słowa kluczowe static, class, extends, super, method, this, construct: https://www.youtube.com/watch?v=vi30cXLJs8Q&list=PLZQKTfr7_vvSNqQvWHzZjVPmeIBTX8uN3&index=4 2) Listy i tablice: https://www.youtube.com/watch?v=XbFt6xxrazA&index=5&list=PLZQKTfr7_vvSNqQvWHzZjVPmeIBTX8uN3 3) obsługa wyjątków: https://www.youtube.com/watch?v=h2kREV9SqCI&index=6&list=PLZQKTfr7_vvSNqQvWHzZjVPmeIBTX8uN3 4) Bazy MSSQL: https://www.youtube.com/watch?v=SMBT3kRHk84&index=7&list=PLZQKTfr7_vvSNqQvWHzZjVPmeIBTX8uN3 Na moim kanale możecie znaleźć wiele innych interesujących projektów takich jak Tester Płytek PCB na RPI: https://www.youtube.com/watch?v=AG7iUPtX7-A&list=PLZQKTfr7_vvROCQTghPZzj9gmt9_JVr5T&index=10 Grę szkolną napisana w Unreal Engine 4: https://www.youtube.com/watch?v=QCLSjbalkrM&list=PLZQKTfr7_vvQUMGqJtPgkrhLRZjOQMTtd&index=14 Sterowany samochód za pomocą bluetooth i akcelerometra: https://www.youtube.com/watch?v=Ay33BFERYOw&index=1&list=PLZQKTfr7_vvROCQTghPZzj9gmt9_JVr5T Samochód sterowany za pomocą serwera http: https://www.youtube.com/watch?v=VZwOwTnPBpc&list=PLZQKTfr7_vvROCQTghPZzj9gmt9_JVr5T&index=2 samochód sterowany za pomocą pilota RC5: https://www.youtube.com/watch?v=cnDBmnTefpY&list=PL76933258EE2CC026&index=1 oraz mój inteligentny dom, który można przetestować online na stronie: iqhome.avrkwiat.nstrefa.pl Z góry dziękuję za wszelkie uwagi oraz propozycje współpracy.
  9. Ostatnio przebudowałem mój RaspCar na inteligentny dom i udostępniłem wszystko na mojej stronie. Teraz każdy może pobawić się moją zabawką online (oczywiście jak jest światło). Cały projekt jest opisany na mojej stronie: moja strona z projektem W moim projekcie wykorzystałem 2 serwa, aby zrobić kamerę obrotową i ustawiać ją o odpowiedni kąt. Do tego można załączyć 6 pinów (4 pierwsze są podpięte do przekaźników i można zapalić na nich diodę). Można także odczytać 8 czujników cyfrowych, ale w tym momencie wszystkie mam odłączone. Jak ktoś chce zobaczyć jak to działa to zapraszam na: kamera Jeśli strona jest niedostępna, to oznacza, że projekt jest wyłączony.
  10. Co do sterowania, to będę je zmieniał, bo teraz to tragedia. Ale wolałbym unikać paska ze zmianą prędkości i zostawić płynne przyspieszanie poprzez przesuwanie kursora myszki. Najprawdopodobniej ograniczę szybkość poruszania się samochodu i przymocuje kamerę do jakiegoś stelaża na stałe. Jak o nie pomoże, to zastanowię się nad poważniejszymi zmianami. Co do tego QuadroCoptera, to znalazłem coś takiego http://abc-rc.pl/DJI-F450 za 859zł Stelaż, śmigła, silniki + akumulatorek litowy za 159zł. Nie mam pojęcia jak działają te silniki bezszczotkowe i czy będę musiał mieć jeszcze jakiś dodatkowy układ (coś jak mostek H). Zainteresuję się tym dopiero jak będę miał kasę, bo teraz nie będę sobie smaka robił. W sumie można zamówić te części bezpośrednio z HobbyKing, ale nie wiem ile mnie taka paczka wyniesie. Bo z doświadczenia wiem, że jak doliczy się koszty przewozów itp, to ta różnica wcale nie jest taka duża, a kupując gotowy zestaw mam nadzieję, że uniknę przykrych niespodzianek z niedopasowanymi elementami.
  11. PWM jest z biblioteki WiringPi, a opis tego PWM masz na stronie: https://projects.drogon.net/raspberry-pi/wiringpi/software-pwm-library/ Specyfikacja ze strony: Each “cycle” of PWM output takes 10mS with the default range value of 100, so trying to change the PWM value more than 100 times a second will be futile. Each pin activated in softPWM mode uses approximately 0.5% of the CPU. There is currently no way to disable softPWM on a pin while the program in running. You need to keep your program running to maintain the PWM output! Ja ustawiłem od 0 do 9 ten przedział (bo taką wartość przekazywałem z telefonu w wersji RaspCar1.0). Ale jak to się ma do rzeczywistych wartości, to teraz nie powiem, bo siedzę u brata, a tu nie mam oscyloskopu. W domu będę dopiero od września jak zacznę pracę w szkole i pewnie wtedy będę dalej rozbudowywał ten projekt z moimi uczniami. Prędkość kół i skręt mnie nie interesuje. Może kiedyś z nudów to zrobię, ale teraz wolałbym dopracować sterowanie i zacząć pracę nad RaspCopterem. Silniki i stelaż już wybrałem tylko potrzebuje jakiś tysiąc zł 😋, więc trzeba szukać robotę, żeby mieć na swoje zabawki 😃
  12. RaspCar 2.1v już gotowy. W tej wersji steruje RaspCarem za pomocą WiFi i serwera www postawionego na raspberry. Opis całości jest na mojej stronie: http://avrkwiat.nstrefa.pl/omnie/index.php?option=com_content&view=article&id=214&Itemid=242 Sterowanie trochę zbyt czułe, ale wszystko działa jak należy.
  13. W projekcie w katalogu bin znajduje się skompilowany program Gra1.apk. Jak widzę dla chcącego nic trudnego i sobie poradziłeś ^^ bez instalacji Eclipsa. W sumie dając kody źródłowe, myślałem, że każdy będzie chciał przerobić aplikację pod siebie (dodać swoją muzykę, dźwięki, obrazki itp) i nie wpadłem na to, że ktoś będzie korzystał z tego co napisałem 🙂. Ale dzięki za zwróconą uwagę. Niedługo ukaże się wersja RaspCar2.0v sterowana przez WiFi z kamerką itp. Serwer lighttpd i kamerka już przetestowany. Przekazywanie wartości na silniki także działają. Niestety wyjechałem do brata i zapomniałem zabrać robota ze sobą. Więc trzeba poczekać, aż się pogoda zepsuje i wrócę do domu.
  14. Jako że znowu wylądowałem na bezrobociu, to postanowiłem ogarnąć moją całą wiedzę i stworzyć coś ekstra za minimalne koszty jako Open Project, który będzie można rozwijać w dowolny sposób. Pierwszą wersję można już obejrzeć na yt, projekt oparty jest na komputerze Raspberry Pi, a jego kody źródłowe będą całkowicie otwarte: Pomysł polega na stworzeniu robota podobnego do łazika marsjańskiego. W pierwszej wersji (którą już opisałem) RaspCar1.0 jest sterowany za pomocą telefonu komórkowego z Androidem przy użyciu bluetooth. Program do androida napisałem sam, a jego kod źródłowy można pobrać z: http://avrkwiat.nstrefa.pl/omnie/index.php?option=com_content&view=article&id=207&Itemid=235 Niestety nie mam kasy na założenie konta w google play, dlatego na razie trzeba go instalować przez Eclipsa. Aplikacja potrafi sterować robotem za pomocą ekranu dotykowego, kursorów i wewnętrznego akcelerometru. Co daje niezłą zabawę przy sterowaniu robotem. Cały projekt opisuje na: http://avrkwiat.nstrefa.pl/omnie/index.php?option=com_content&view=article&id=212&Itemid=240 Z czasem mam zamiar dołączyć kamery oraz zrobić sterowanie za pomocą strony www. Mam nadzieje, że projekt się spodoba i znajdę kilku hobbystów którzy także zaczną rozwijać swoje łaziki marsjańskie 😃 __________ Komentarz dodany przez: Sabre Przeniosłem do innego działu.
  15. Widzę, że kolega się wypalił i nie dopracował poradnika do końca, dlatego w długi majowy weekend siadłem do mądrej książki Marka Galewskiego i opisałem troszkę układów pod tą samą płytkę uruchomieniową co kolega. Wszystkie przykłady były przetestowane na ZL29ARM z kamami i programowane za pomocą ZL30PRGv2 używając środowiska TrueStudio. Filmików nie robiłem, bo szkoda mi było czasu. W artykułach opisałem wszystko co potrzeba do uruchomienia przykładów. Począwszy od programatora, płytki uruchomieniowej, środowiska pracy, a skończywszy na materiałach z których korzystałem podczas tworzenia artykułów takich jak książki. Możecie tam znaleźć linki do sklepów, które sprzedają te artykuły. Oczywiście sam się uczę i trudno było o jakiś kurs na necie, dlatego postanowiłem opisać te układy, które udało mi się uruchomić. Aby inni mieli łatwiej na starcie. Są to tylko podstawowe przykłady obsługi ADC, DMA, Licznika SysTick, LCD44780, LCD od noki wzorowane na przykładach z książki Marka Galewskiego "STM32 Aplikacje i ćwiczenia w języku C" przerobione pod zestaw ZL29ARM. Oczywiście więcej przykładów oraz doskonały opis najważniejszych układów znajdziecie w tej książce, dlatego zachęcam do kupna. Linki do książki znajdziecie na mojej stronie do którą podaje niżej. Są tam także linki, do przykładów do tej książki, które można sobie ściągnąć po zalogowaniu. http://avrkwiat.nstrefa.pl/omnie/index.php?option=com_content&view=article&id=120&Itemid=142 Życzę miłej zabawy i z góry mówię, że nie lubię siedzenia na forum, dlatego nie odpowiadam na pytania. Jak ktoś chce o coś zapytać, to na maila, albo na facebooka. Oczywiście w miarę możliwości pomogę 😉 Pozdrowienia AVRkwiat.
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.