Skocz do zawartości

miszczu18

Użytkownicy
  • Zawartość

    37
  • Rejestracja

  • Ostatnio

Reputacja

6 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. Problem rozwiązany. Dzisiaj "magicznie" zaczęło działać tak jak powinno chociaż nic nie zmieniałem.
  2. Cześć. Mam problem z zasilaniem płytki STM32F303K8 Nucleo z 3.3V. W User Manual znalazłem, że należy zdjąć zworki SB14 i SB9 i wtedy połączenie do pinu "3.3V" na płytce powinno ją zasilić ale bez zasilenia ST-Linka. Zdjąłem je i zastąpiłem własnymi które można swobodnie zdejmować i zakładać. Sprawdzałem miernikiem, nic nie zwarłem przy lutowaniu. Zasilanie na wyjściu stabilizatora, z którego zasilam jest równe 3.3V. Normalnie programuje płytkę z założonymi zworkami i wtedy działa ale z tym zewnętrznym zasilaniem przy zdjętych zworkach już nie. Macie może pomysł co mogło pójść nie tak?
  3. 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ć?
  4. 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?
  5. A reszta się zgadza? Ten Boot0 po zaprogramowaniu mam zmienić jakoś z 0 czy może zostać na 0?
  6. 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?
  7. 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.
  8. 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)
  9. 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
  10. 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.
  11. 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.
  12. 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ć?
  13. 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); }
  14. 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
  15. 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?
×
×
  • Utwórz nowe...