Skocz do zawartości

ozi(pl)

Użytkownicy
  • Zawartość

    12
  • Rejestracja

  • Ostatnio

Wszystko napisane przez ozi(pl)

  1. NIby racja ale nie naleze do osob idacych na latwizne wole spedzic caly tydzien probujac ogarnac jak wlacza sie diode nizeli pojsc na skroty poszukac informacji w internecie lub naprawde dlugo czytac note to juz gusta i gusciki
  2. nie. wystarczyło jedynie właczyc ta jedna rzecz o której wspomniałem. stop after reset dla mnie przyjemniej na rejestrach sie uczy nizeli na gotowych bibliotekach i komendach lubie wiedziec co dokladnie sie dzieje nie tweirdze, ze latwiej sie uczyc na halu ale jakos to nie przemawia do mnie
  3. Próbowalem naprawdę ale niestety nie przypadłem sobie do gustu z Hal jak i MX nie "czuję" tego
  4. Wybacz, ale nie wiem dokładnie gdzie to jest. Jak ci pokazać na funkcje init_all nie patrz bo tam konfigurowane są odpowiednie funkcje używane w programie. jestem jeszcze zółty w tematach programowania. dobra przeklikalem ustawienia i trzeba bylo to odznaczyc w ustawieniach debugera może kiedyś się jeszcze komuś przyda
  5. Cześć, nie wiem czy dokładnie temat opisze mój problem ale: Musiałem zrobić na PC reinstalke Windowsa i pobrałem Keila. Wszystko ładnie pobrało mi - sterowniki do STlinka, biblioteki etc. zautomatu. I pojawił się taki problem, że za każdym razem jak zaprogramuje procka muszę wciskać reset by program ruszył. Wcześniej nie musiałem mam opcję zaznaczoną w ustawieniach STlinka ale po wgraniu i podstawowego programu (mruganie dioda) int main(void) { init_all(); while(1) { GPIOA->ODR^=1<<5; delay(20); } } zawsze musze zresetować plytke (nucelo f103) czy ktoś z Was miał podobny problem? Przed reinstalka systemu ten sam program nie wymagał czegoś takiego Pozdrawiam!
  6. Cześć! Mam pytanie. wspierałem się tym kursem lecz napotkałem mały problem moja dioda RGB straaasznie powoli zmienia kolory oraz brakuje jej plynnosci... kod poniżej (probowalem bawic sie parametrami i zauwazylem, ze jak zmniejszam 300.0f na np 100 to ciemniej swieci a jak zawiekszam x0 ten sam efekt) float calc_pwm(float val) { const float k = 0.1f; const float x0 = 50.0f; return 300.0f / (1.0f + exp(-k * (val - x0)));//moc swiecenia } void tecza(void) { float r = 50 * (1.0f + sin(counter / 100.0f)); float g = 50 * (1.0f + sin(1.5f * counter / 100.0f)); float b = 50 * (1.0f + sin(2.0f * counter / 100.0f)); set_red(calc_pwm(r)); set_blue(calc_pwm(b)); set_green(calc_pwm(g)); delay(1); counter++; } dodatkowo funkcje sterujace np set_red void set_red(uint16_t value) { TIM4->CCR2=value; } konfiguracja PWM TIM4->CCMR1 &=~ TIM_CCMR1_CC1S | TIM_CCMR1_CC2S; TIM4->CCER |= TIM_CCER_CC1E | TIM_CCER_CC2E; TIM4->CCMR1 |= TIM_CCMR1_OC1PE | TIM_CCMR1_OC2PE; TIM4->DIER |= TIM_DIER_CC1IE | TIM_DIER_CC2IE; TIM4->CCMR1 |= TIM_CCMR1_OC1M | TIM_CCMR1_OC2M; TIM4->CR1 |= TIM_CR1_CEN; TIM4->CR1 |= TIM_CR1_DIR; TIM4->CR1 |= TIM_CR1_ARPE; TIM4->ARR=licznik; // zdefiniowany wczesniej na 1000 funkcja opozniajaca jest na Systicku void SysTick_Initialize (uint32_t ticks) { SysTick->CTRL = 0; SysTick->LOAD = ticks; SysTick->VAL = 0; SysTick->CTRL |= SysTick_CTRL_CLKSOURCE; SysTick->CTRL |= SysTick_CTRL_TICKINT; SysTick->CTRL |= SysTick_CTRL_ENABLE; } void SysTick_Handler(void) { if (TimeDelay>0) TimeDelay--; } void delay(uint32_t nTime) //milisekundy { TimeDelay = nTime; while(TimeDelay != 0); } dziękuję za pomoc oczywiście sam też będę walczyć bo sprawia mi to przyjemność ale małą podpowiedzią nie pogardzę PS korzystam z nucleo f103 Pozdrawiam
  7. Elvis, moj keil nie chcial wczytac tych bibliotek niestety.
  8. akurat przypadkiem trafilem na twoj blog i mam do Ciebie pytanie NVIC->ISER[EXTI15_10_IRQn/32]=1 << (EXTI15_10_IRQn % 32); nie rozumiem tego przypisania oraz dlaczego dzielimy na 32? nastepne mam maly problem jak zrobic obsluge przycisku tak aby w mainie zwiekszal mi licznik. Tzn robie projekt i w main chce aby byl wybor trybu swiecenia a w przerwaniu ikrementowal zmienna np "j". Hmm moze by bylo jasniej. W main jest wybor swiecenia na podstawie klikniec w przycisk. moglbym zrobic prostszym case ale zalezy mi na tym aby po ktoryms tak kliknieciu w main funckja wyswietlania byla caly czas. Robie sterownik do led adresowalnych.
  9. Witam! Jestem początkującym programista i mam lekkie problemy z operacjami na rejestrach czy jest ktoś tutaj z obecnych zajmujący się tym? Ponieważ nie do końca rozumiem pewne rzeczy. Obsługę portów GPIO jakoś już ogarnąłem. Robie kurs stm lecz moj keil nie chcial wczytac gotowych bibliotek takich jak w kursie wiec wzialem do reki referance i zaczalem probowac sam. Udalo mi sie zrobic miganie dioda oraz systick uruchomic -> to ostanie to w sumie najprotsze poniewaz wystarczylo wpisac komende. Lecz nie wiem czy dobrze skonfigurowałem EXTI i nie wiem jak ruszyc z NVIC. Tak samo czy timery musze uruchomic juz wraz z przerwaniami? //WLACZENIE OBSLUGI PRZERWANIA RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; //inicjalizacja obslui przerwan EXTI //DLA 13 PORTU AFIO->EXTICR[3]=(1<<13); //WLACZENIE PRZERWANIE NA 13 PIN - NOTA KATALOGOWA EXTI->IMR |= (1<<13); //WLACZENIE PRZERWAN NA 13 PINIE EXTI->RTSR |= (1<<13); //narastajace zbocze EXTI->FTSR |= (1<<13); //OPADAJACE ZBOCZE //KONFIGURACJA NVIC //tutaj musze znalesc co do konca ustawiac to jest moj ładny kod na obsluge przerwan lecz nie wiem jak ruszyc NVIC poniewaz w refance nie za bardzo rozpisali sie na ten temat. void EXTI15_10_IRQHandler(void) { int i; EXTI->PR |= (1<<13);// wyzwolenie przerwania po wykryciu przerwania if(!(GPIOC->IDR & (1<<13))) { if (i>2) { i=0; } else { switch (i) { case 0: zapal(); delay(200); zgas(); break; case 1: zapal(); delay(200); zgas(); delay(200); zapal(); delay(200); zgas(); delay(200); break; case 2: zapal(); delay(200); zgas(); delay(200); zapal(); delay(200); zgas(); delay(200); zapal(); delay(200); zgas(); delay(200); break; case 3: zapal(); delay(200); zgas(); delay(200); zapal(); delay(200); zgas(); delay(200); zapal(); delay(200); zgas(); delay(200); zapal(); delay(200); zgas(); delay(200); break; } EXTI->PR &=~(1<<13); } } to jest moj kod na przerwanie ale nie działa nie wiem dlaczego czy własnie dlatego, ze NVIC jest nie skonfigurowany? doczytalem, ze jestes PR musi byc zerowany po skończeniu przerwania. Zamysl mam taki, ze w main dioda swieci caly czas a po po przerwaniu chcialem by byl licznik to znaczy ze naciskamy raz dioda mrugnie raz dwa razy to dwa razy etc w mainie funkcja dziala a w przerwaniu niestety nie. if(!(GPIOC->IDR & (1<<13))) tak samo nie mam pewnosci czy ten zapis jest poprawny tak jak napisaem na poczatku jestem poczatkujacym programista i sam znak & oznacza w tym zapisie, ze "w sumie" czy to jest warunek? Dziekuje za pomoc
  10. To znaczy ja sie nie gniweam czy czuje sie obrazony tylko bylem ciekaw co molgoby byc nie tak skoro porgoram bardzo ladnie hula. chodzi o to, ze znajomy ruszyl mi procka od 0 a ze postanowilem troche bardziej zaglebic sie w ten temat (zaczelo mnie to bardziej interesowac) postanowilem sobie wykomentowac to co uwazam. I tak stawia zero mialem na mysli w bicie [ Dodano: 05-10-2017, 08:16 ] Powiem Ci, ze bardzo spodobał mi się twoj blog i mam nadzieję, ze rozwiniesz go bardziej
  11. to nie są tak losowe progarmy ponieważ one działają dobrze. wiec jestem ciekaw jakie bledy moga byc w komentarzu poniewaz przyznaje sie ze ucze sie i nie jestem pewien czy dobrze zrozumialem note katalogowa
  12. Witam jestem laikiem a strasznie chciałbym się nauczyć programować hobbistycznie. Czy będzie tutaj na tyle miła duszyczka która pomoże wciągnąć się w programowanie na podstawie moich pytań? Na początek chciałbym się upewnić o same zapisy bo czasem spotykam się z takimi zapisami w kodach ( sam przy pomocy kolegi uczę się niestety poprzez różnicę wiedzy on za szybko to robi i chaotycznie i mi ciężko zrozumieć) co dokładnie znaczy ten zapis RCC->APB2ENR|=RCC_APB2ENR_AFIOEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN; czy to oznacza, ze w rejestrze RCC status APB2ENR włączam GPIO oraz porty PA PB? GPIOA->CRL &= ~(GPIO_CRL_CNF7); //stawia 0 GPIOA->CRL |= GPIO_CRL_MODE7; //stawia 1 a to dobrze wykomentowałem? wiem, ze te linijki działają ponieważ bawię się programowalnymi ledami - proste funkcje do zmian koloru, które sam klepałem. Nie jestem zaawansowanym programista a laikiem, który bawi sie od jakiegos czasu narazie prostymi funkcjami. tak samo jak mam uruchomic obsluge przycisku na porcie PB1 jest to ADC12_IN9/ TIM3_CH4(9) wyczytane z referance maunal. tak samo bardzo bym prosił o poprawienie moich komentarzy konfiguracji bo tutaj pomagał mi też znajomy pomagał uruchamiac - skasował cały plik i w paru linijkach skonfigurował mi go a ja sam komentowałem #include "stm32f10x.h" void SystemInit (void) { //konfiguracja RCC->CR|=RCC_CR_HSION; //wlaczenie kwarca, ktory jest wbudowany RCC->CIR = 0x00000000; //zerowanie bitow while(!(RCC->CR & RCC_CR_HSIRDY)); // czekanie kiedy wypelni sie HSI RCC->CFGR|=RCC_CFGR_PLLMULL; //wlacznie plmulla RCC->CR|=RCC_CR_PLLON; while(!(RCC->CR & RCC_CR_PLLRDY)); //wlacznie komunikacji usart oraz timerow RCC->CFGR|=RCC_CFGR_PPRE1_DIV2; RCC->APB1ENR|=RCC_APB1ENR_PWREN; //rezerwacja pamieci flash FLASH->ACR |= FLASH_ACR_PRFTBE; //flash w rejestre ACR wlacz jedynke bitu FlASH_ACR_PRFTBE FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; //austawienie opoznienia zapisu flash dla jednego okresu dla 24mh RCC->CFGR|=RCC_CFGR_SW_1; //ustawienie HSE jako zegar czasowy systemu } Dziękuję za pomoc oraz mam nadzieję, że nie urażę tutaj nikogo brakiem wiedzy. Szukam jakiejś też dobrej książki do nauki ARMów w C. Pozdrawiam
×
×
  • Utwórz nowe...