Skocz do zawartości

miszczu18

Użytkownicy
  • Zawartość

    38
  • Rejestracja

  • Ostatnio

Wszystko napisane przez miszczu18

  1. W pierwszym przypadku wyświetlasz zawartość n-tego elementu tablicy tylko jest taki problem, że próbujesz dostać się do elementu, który jest tuż za tablicą bo wyszedłeś poza zakres. Dzięki temu, że bufor docelowy jest w pamięci umiejscowiony od razu za buforem źródłowym to przez src_buffer[BUFFER_SIZE] daje tak na prawdę dst_buffer[0]. dst_buffer[BUFFER_SIZE] też daje wartość elementu za tablicą, ale że tam może być cokolwiek, akurat u Ciebie 0 to jest taki wynik. Drugi przypadek. Nazwa tablicy to wskaźnik (adres) na jej pierwszy element. Tablice zawierają 32 elementy, każdy po bajcie, a że są w pamięci obok siebie to adresy pierwszych elementów różnią się o te 32 bajty.
  2. Problem rozwiązany. Dzisiaj "magicznie" zaczęło działać tak jak powinno chociaż nic nie zmieniałem.
  3. 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?
  4. 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ć?
  5. 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?
  6. A reszta się zgadza? Ten Boot0 po zaprogramowaniu mam zmienić jakoś z 0 czy może zostać na 0?
  7. 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?
  8. 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.
  9. 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)
  10. 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
  11. 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.
  12. 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.
  13. 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ć?
  14. 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); }
  15. 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
  16. 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?
  17. 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.
  18. 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.
  19. Cześć. Jeśli chciałbym pracować jednoczenie z układami zasilanymi z 5V i 3V3 to jak powinienem je zasilać i co jeśli komunikują się między sobą? Potrzebuje dwa stabilizatory do zasilania? Wyczytałem, że komunikacja z 3V3 do 5V może być bo mieści się w zakresie pracy ale co w druga stronę? Wtedy wciskam w układ coś takiego https://botland.com.pl/pl/konwertery-napiec/2259-konwerter-poziomow-logicznych-dwukierunkowy-4-kanalowy-sparkfun.html ?
  20. No i tu jest problem bo nie ma zworki. Ten konwerter znalazłem na allegro i jest zapakowany tak jakby w folie termokurczliwą. Jedyne piny które z niego wychodzą to te do arduino
  21. Cześć. Mam taki problem z konwerterem. Używałem go do programowania arduino pro mini i wszystko było okej. Zainstalowałem sterowniki żeby w ogóle komputer go wykrywał i wszystko śmigało ładnie. Próbowałem go dzisiaj podłączyć i nic. Komputer go nie wykrywa, diody na nim się nie świecą (nawet jak komputer go wcześniej nie wykrywał to świeciły). Na wyjściu Między VCC i GND jest 5V(nie wiem czy to pomoże). Sprawdzałem na innych portach ale to samo. Da się jakoś sprawdzić co jest nie tak i ewentualnie naprawić czy raczej umarł w kapciach?
  22. Cześć. Zamierzam sprzedać swoją stacjonarkę ale nie wiem jak wycenia się komputery, ile schodzi się z wartości komponentów. Mógłby mi ktoś coś doradzić?
  23. Za bardzo zasugerowałem się tym kursem. W sumie dobrze bo się nauczę na tym błędzie i będę lepiej szukał elementów
  24. Faktycznie, nie zwróciłem na to uwagi . To sprawiłoby jakąś różnicę oprócz wyglądu? Coś powinienem jeszcze poprawić w tej płytce?
  25. Chciałem spróbować je przylutować od dołu tak jak w tym poradniku. Myślałem, że odbicie tych czujników sprawi że będą tak jakby patrzyły w dół a nie w górę. Płytkę chcę spróbować zrobić sam, może się czegoś nauczę Odpalając znowu ten poradnik zorientowałem się, że mam złe czujniki, wersja poprawiona:
×
×
  • Utwórz nowe...