Skocz do zawartości

miszczu18

Użytkownicy
  • Zawartość

    35
  • Rejestracja

  • Ostatnio

Reputacja

5 Neutralna

O miszczu18

  • Ranga
    3/10

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

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

  1. Czy to załatwi sprawę ze wszystkimi UARTami? void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance==USART2) { HAL_UART_Transmit_IT(huart, (uint8_t*)TxBuffer, sizeof(TxBuffer)); } } Nie mam zbytnio pojęcia o co chodzi z tymi wszystkimi zdarzeniami. Mógłbyś coś podpowiedzieć?
  2. Cześć, Chciałem zapytać czy przerwanie, które zrobiłem jest poprawne, to znaczy czy to działa przypadkiem czy może jest okej? Ma to być przerwanie od TX. main.c #include "stm32f1xx.h" UART_HandleTypeDef uart; char TxBuffer[] = "proba\r\n"; void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { HAL_UART_Transmit_IT(huart, (uint8_t*)TxBuffer, sizeof(TxBuffer)); } int main(void) { SystemCoreClock = 8000000; HAL_Init(); __HAL_RCC_GPIOA_CLK_ENABLE() ; __HAL_RCC_USART2_CLK_ENABLE() ; GPIO_InitTypeDef gpio; gpio.Mode = GPIO_MODE_AF_PP; gpio.Pin = GPIO_PIN_2; gpio.Pull = GPIO_NOPULL; gpio.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &gpio); gpio.Mode = GPIO_MODE_AF_INPUT; gpio.Pin = GPIO_PIN_3; HAL_GPIO_Init(GPIOA, &gpio); uart.Instance = USART2; uart.Init.BaudRate = 9600; uart.Init.WordLength = UART_WORDLENGTH_8B; uart.Init.Parity = UART_PARITY_NONE; uart.Init.StopBits = UART_STOPBITS_1; uart.Init.HwFlowCtl = UART_HWCONTROL_NONE; uart.Init.OverSampling = UART_OVERSAMPLING_16; uart.Init.Mode = UART_MODE_TX_RX; HAL_UART_Init(&uart); HAL_NVIC_SetPriority(USART2_IRQn,0,0); NVIC_EnableIRQ(USART2_IRQn); HAL_UART_Transmit_IT(&uart,(uint8_t*)TxBuffer,sizeof(TxBuffer)); while (1) { } } Do stm32f1xx_it.c dodałem ten fragment: extern UART_HandleTypeDef uart; void USART2_IRQHandler(void) { HAL_UART_IRQHandler(&uart); } HAL_UART_Transmit_IT to taki zamiennik zwykłego transmit dla przerwań jeśli dobrze rozumiem?
  3. A reszta się zgadza? Ten Boot0 po zaprogramowaniu mam zmienić jakoś z 0 czy może zostać na 0?
  4. Nie wiem czy dobrze zrozumiałem to co znalazłem. W moim przypadku jeśli chcę załadować program przez Bootloader to muszę ustawić Boot0 na 0, z konwertera USB->UART podpiąć się RX-USART1 TX, TX-USART1 RX . Mas konwertera i mikrokontrolera nie muszę łączyć czyli wystarczą tylko 2 kable czy powinienem je połączyć? Po wgraniu programu, żeby program działał to muszę ustawić Boot0 na 1?
  5. Ogólnie to szukałem poprostu jak zaprogramować sam mikrokontroler i natknąłem się na tamtą lekcje. No i w sumie faktycznie HAL byłby lepszy do mojego projektu Aktualizacja: Macie może jakieś rady jak się programuje (goły) STM32? Chodzi o podłączenie i ewentualne programy.
  6. Cześć. Chciałbym użyć STM32F103C8T6 w swoim robocie ale nie za bardzo wiem jak programować sam mikrokontroler, który nie znajduje się na żadnej płytce (np. Discovery). Czy wystarczy, że posłużę się częściowo materiałami z tej lekcji https://forbot.pl/blog/kurs-stm32-f4-12-programowanie-przez-bootloader-id13478 (podłączenie i sposób wgrywania) i będę mógł wgrać program przez UART? Chciałbym ten program zrobić w oparciu o STM32 Standard Peripheral Libraries dlatego odrzuciłem wykorzystanie Blue Pill (znalazłem informacje, że programuje się to jak Arduino)
  7. Tak zapytam z ciekawości, na jakiej częstotliwości działa ta atmega? Bo może coś z tym preskalerem jest nie tak. Taka luźna opcja bo jestem super początkujący
  8. Rozwiązanie: Nie ma sprzętowego rozwiązania Po przeczytaniu wszystkich komentarzy do tej lekcji wyszło na to, że brakuje kondensatora filtrującego, który na schemacie jest ale na płytce go nie ma.
  9. Cześć. Mam pewien problem z "pracą domową" z kursu o STM32 F4 z lekcji o GPIO. Napisałem program do zmiany stanów tych diod ale przy wciśnięciu przycisku czasem może mi przełączyć nawet 3 diody. Obstawiam, że zbocze na które działa nie ma znaczenia(tylko na rosnące jest ustawione) no bo to tylko jedno wciśnięcie. Sprawdzałem z tym programem do pobrania i jest identycznie. Może to być spowodowane drganiem styków? Niby tam jest to sprzętowe rozwiązanie ale nie mam pojęcia co by to mogło być innego.
  10. Cześć. Chciałem podłączyć takie coś do płytki stykowej https://botland.com.pl/pl/moduly-zasilajace/1482-modul-zasilajacy-do-plytek-stykowych-mb102-33v-5v.html Wczoraj dla pewności sprawdziłem jak te zworki działają, wszystko fajnie. Dzisiaj próbowałem jeszcze raz ale coś mnie naszło żeby sprawdzić jeszcze raz. Zworka na "off" działa ale jeśli ustawie na 5V lub na 3.3V to i tak dostaje coś koło 11.2V. Coś się mogło przepalić?
  11. Cześć. Próbowałem przećwiczyć przerwania migając diodą co 0.5 sekundy ale dioda nie zmienia stanu. Znalazłem w nocie katalogowej, że dla mojej ATmegi8, timer1 ma tryb CTC i ma dwa kanały(niezbyt wiem co to znaczy). W channel a nie ma preskalera do ustawienia więc postanowiłem użyć channel b ale nie działa mi to. #include <avr/io.h> #include <avr/interrupt.h> int main(void){ DDRC|=(1<<PC3); PORTC|=(1<<PC3); TCCR1B|=(1<<WGM13)|(1<<WGM12); //USTAWIAM TRYB CTC TCCR1B|=(1<<CS12);//PRESKALER NA 256 OCR1B=62499;//ZEBY WYSZLO 0.5Hz TIMSK=(1<<OCIE1B);//ODBLOKOWANIE PRZERWANIA sei(); while(1){} } ISR(TIMER1_CAPT_vect){ PORTC^=1<<PC3; } Rozwiązałem problem. 1. Zamiast Hz w obliczeniach dałem 0.5 sekundy więc obliczenia bez sensu i zła wartość do OCR1x. Powinno wyjść 15624. 2.Zła nazwa wektora przerwania w ISR(), powinno być TIMER1_COMPA_vect. 3. Ogólnie ustawianie trybu pracy i preskalera jest a kanale B ale wpisywanie wartości do porównania, odblokowanie i wektor przerwania są na kanale A. Nie mam pojęcia dlaczego. Mógłby mi to ktoś wytłumaczyć? #include <avr/io.h> #include <avr/interrupt.h> int main(void){ DDRC|=(1<<PC3); PORTC|=(1<<PC3); TCCR1B|=(1<<WGM12); //USTAWIAM TRYB CTC TCCR1B|=(1<<CS12);//PRESKALER NA 256 OCR1A=15624;//ZEBY WYSZLO 0.5Hz TIMSK=(1<<OCIE1A);//ODBLOKOWANIE PRZERWANIA sei(); while(1){} } ISR(TIMER1_COMPA_vect){ PORTC^=(1<<PC3); }
  12. Właśnie nad tym LM1117 myślałem. Ogólnie to wszystko jest od zera i nie mam teoretycznie nic . Robiłem wcześniej mini sumo, w którym też mi doradzałeś ale to był projekt grupowy więc muszę poszukać jakiś akumulatorków i ładowarki. Jak coś znajdę to wstawię i będę liczyć na to, że nie stracisz cierpliwości
  13. Czyli mogę zrobić coś takiego? -całość zasilana z li-pol 7.4V -ATmega zasilana przez stabilizator na 5V -wyświetlacz tak samo i bezpośrednie połączenie z ATmegą -moduł Bluetooth zasilany przez stabilizator 3.3V i połączenie z ATmegą za pomocą SN74HC125N Tak pomyślałem bo wtedy starczy mi jeden bufor a tak to do tego wyświetlacza musiałbym użyć dużo więcej. Nad silniczkami to myślałem żeby użyć micro Pololu HP, i podłączyć ich zasilanie bezpośrednio pod li-pol a sterować przez TB6612FNG. Nikt nie będzie zatrzymywać wału więc myślę, że ten mostek i stabilizatory starczą. Brzmi to jakoś sensownie czy ostro przekombinowałem?
  14. Zasilanie ATmega8 z noty katalogowej jest 2.7V-5.5V O ten moduł bluetooth mi chodziło konkretnie https://botland.com.pl/pl/moduly-bluetooth/2891-modul-bluetooth-hc-05-v2.html na 3.3V Widziałem też taki https://botland.com.pl/pl/moduly-bluetooth/2570-modul-bluetooth-hc-05.html właśnie z z tą możliwością pracy na 5V. To, że toleruje 5V na wyprowadzeniach komunikacyjnych to tak tylko jeśli nie ma innej opcji? Bo zakładam, że nie jest to zalecane. A wyświetlacz LCD https://botland.com.pl/pl/wyswietlacze-alfanumeryczne-i-graficzne/224-wyswietlacz-lcd-2x16-znakow-niebieski.html na 5V. Chodzi mi bardziej o poradę "jak to się na świecie robi" to coś najwyżej pokombinuje i będę mógł użyć wiedzy gdzieś indziej a nie tylko do tego przypadku.
  15. Zabrałem się za zabawę z ATmega8 i chciałbym podłączyć do niej moduł Bluetooth HC-05 i wyświetlacz LCD. No i tu się pojawia mój problem bo wyczytałem że ATmegę mogę zasilać od 2.7V do 5V, HC-05 jest na 3.3V a wyświetlacz na 5V. Na tą chwilę to będą zabawy na stykówce ale potem chciałbym tego użyć w robocie zasilanym z np. 7.4V.
×
×
  • Utwórz nowe...