Tablice wartosc1,wartosc2,wartosc3 są zbyt małe muszą mieć po 3 elementy. W funkcji hextoul tratujesz przekazaną zmienną jako string kończący się 0, a w tablicach nie masz już miejsca na koniec stringu. Dalej nie przeglądałem.
Albo się nie zastanawiać i użyć funkcji sformatowanyego wyjścia z rodziny printf.
Hej Musisz includowac rownież biblioteke stdio.h. Dobry kompilator powinien zgłosić brak deklaracji funkcji printf().
Ten program wysyła bajty odczytane z pamięci jako znaki, a nie jako sekwencje cyfr ASCII. Zacznij od programu, który będzie w pętli co jakiś czas wysyłał np. kolejne cyfry lub litery. Jeśli to zadziała, będziesz wiedział, że masz poprawną transmisję - wtedy włącz obsługę pamięci i ew spróbuj wysyłać jej zawartość zamieniając ją na wartości np. szesnastkowe...
W książce Tomasza Francuza "AVR Praktyczne projekty" znalazłem bardzo przyjemny sposób na użycie USART w XMEGA posługując się fprintf lub fscanf. Niestety po przejściu na DMA okazało się, że nie da się tak łatwo zastąpić fprintf przy użyciu funkcji wysyłającej dane do bufora i dalej przez DMA do komputera. Znalazłem inny przykład w sieci z wykorzystanie...
OK. Ja też jestem w pracy i nie zawsze mogę o tej porze coś robić. Ale dalej: Do testowego używania UARTA przyda się "podmienienie" standardowej obsługi funkcji printf na taką, która wysyła dane przez UARTA do naszej Windowsowej konsoli. Możesz to wpisac standardowo przed obsługą assert_failed() /** * (at)brief Retargets the C library printf function...
Jak to działa na AVR ? Ano np. tak: #include <avr/io.h> #include <stdio.h> #define USART_USED int lcd_putchar(char c , FILE *stream) { //LCD_wyswietl_znak(); return 0; } FILE lcd_str = FDEV_SETUP_STREAM(lcd_putchar,NULL, _FDEV_SETUP_WRITE); int main() { #ifdef USART_USED stderr=&lcd_str;...
To jest program pod ATmega32 ale powinien dzialac #include <avr/io.h> #include <stdlib.h> #define F_CPU 8000000 // 8MHz zegar procesora #define CYCLES_PER_US ((F_CPU+500000)/1000000) // cpu cycles per microsecond // #define UART_BAUD 19200ul //prędkość transmisji w bodach (tu 19200 bodów) #define UART_CONST (F_CPU/(16ul*UART_BAUD)-1...
USART sprzętowo nadaje cały bajt, wraz z bitem startu, stopu i parzystości. PRzerwanie w czasie takiej transmisji nic nie zakłóci. Co najwyżej do nadania kolejnego bajtu minie jakiś czas, ale to nie problem, gdyż każdy bajt ma swój bit startu, w efekcie odbiornik to poprawnie odbierze.
Może konflikt pinów z LCD i SPI. Musisz pokombinować. Zresztą, zrób sobie pusty projekt dodaj fatfs i ten plik, napisz obsługę SPI i powinno działać. A i uzupełnij sobie funkcje int _write(); np. tak żeby korzystała z USART, będzie ci działać printf();.
Pewnie jest. Przerwanie -> skasowanie flagi -> prinf po uarcie W trakcie tego kolejne przerwanie -> skasowanie flagi -> prinf po uarcie ..... Przerwanie nie może wywłaszczyć samego siebie. Niemniej jednak idea użycia printf w przerwaniu i to jeszcze z liczbami zmiennoprzecinkowymi... Niezbyt dobry pomysł, zwłaszcza że w tym przypadku printf() alokuje...
Ja na szybko złożyłem układ z AVR32DB28 bo taki akurat mam pod rękom. I wykorzystałem SPI1 (od PC0 od PC3, MOSI, MISO, SCK, SS) do komunikacji z MAX31865 i UART0 do wyświetlania wyników. I oto kod który użyłem: https://obrazki.elektroda.pl/9666089600_... https://obrazki.elektroda.pl/8604180000_... A i akurat miałem...
1. Cele projektu Opracować moduł umożliwiający komunikację z wyświetlaczem 16x1 przez USART. By wysłać dane na wyświetlacz należy wydać instrukcję informującą o rozpoczęciu transmisji " 2. Diagram wdrożenia 2.1 Komunikacja mikrokontrolera z komputerem PC Mikrokontroler PIC16F84A komunikuje się z komputerem PC wykorzystując w tym celu port COM. Konieczne...
Witam, Ostatnio mam przyjemność zabawy z płytką STM32F746NG Discovery. Mam problem z usartem... Nie jestem w stanie odebrać znaku w konsoli mojego komputera. Chciałem zrobić tak samo jak to się robi np.: w Nucleo, czyli korzystam z USARTA2, piszę odpowiednią funkcję do wysyłania znaków i w whilu daje printf... ale tutaj to nie działa. Wszystkie parametry...
Oj ja w rzeczywistości w ogóle kanału nie wybrałem :D Teraz już działa ;) Ale pozostaje jedna sprawa związana z tym co napisałeś, aby zaczęło to dobrze działać to muszę ustawić w sumię 3 razy ADON :d SWSTART nie trzeba chyba przy ciągłej, ale czemu jest tak z tym ADON? teraz już trochę inaczej: włączam ADON, ustawiam ADC, znów włączam ADON i potem przed...
Witam, mam problem z odbieraniem danych po usarcie. Jest on skonfigurowany tak: USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; /* Configure the USART1 synchronous paramters...
Tak jak psałem, printf sam w sobie wysyła dane tylko do strumienia standardowego stdout. To co się z nimi stanie zależy od samego strumienia. Otwierając go musisz podać funkcje zapisu i odczytu znaku ze strumienia, dopiero te funkcje są odpowiedzialne za wysyłkę danych przez konkretny interfejs. Stąd też najlepiej stworzyć dwa nowe strumienie, podając...
Witam. Niedawno zacząłem się bawić programowaniem mikrokontrolera atmega32 zawartego w zestawie evb 4.3. Pojawił się problem w momencie, kiedy chciałem połączyć zestaw ze swoim laptopem. Kod dla mikrokontrolera: #include <avr/io.h> #include <util/delay.h> #include "lcd.h" void usart_init(unsigned int baud); void usart_transmit(...
Witam! Próbuję zaprogramować mikrokontroler STM32F107, aby współpracował z siecią. Najpierw chciałbym skompilować kod z przykładowym projektem dostarczonym do STM32 jako EthernetDriver, czyli stm32_eth_lib. Przykład napisany jest z użyciem stosu TCP/IP uIP. Całość kompiluje się bez żadnych błędów (ew. warningi) z użyciem kompilatora CodeSourcery G++...
Kiedy pozbędziesz się wszystkich float i operacji na nich zajętość pamięci spadnie o połowę. Po wyrzuceniu printf zapewne zyskasz jakieś następne 1.5 KiB. ;) Co powiesz na odpowiedź z AVR np. taką: B 1234 2345 6789 gdzie te trzy liczby to np. napięcia w mV.
Witam, mam dwa niewielkie problemy ;) pierwszy to wykorzystanie funkcji printf i pochodnych do wypisywania danych na USART/LCD/cokolwiek innego ;] co muszę zrobić, żebym mógł tak go używać?;] czy można stworzyć po prostu strumień do którego wpisywałbym dane za pomocą fprintf jak to było np. w AVR-GCC? :P czyli np. fprintf(&LCD, "Hello World"); czy...
char znak; while(1) { znak=USART_Recieve(); if(znak=='1') printf("OK\n"); } lub char znak; while(1) { znak=USART_Recieve(); if(znak=='1') { printf("OK\n"); } } Dodano po 42 Chociaż to opóźnienie po tym if'ie i tak bym wstawił.
Szanowni Forumowicze, uruchomiłem sobie sprzętowego UARTa wykorzystując bibliotekę ze strony atmela. Wszystko działa, łączę się z terminalem na komputerze, wyświetla się to co powinno. Dodałem też funkcję do wysyłania całego łańcucha znaków wykorzystując wskaźnik, gdyż w atmelowskiej bibliotece znalazłem jedynie do wysyłania konkretnych pojedynczych...
Dzień dobry! mam pytanie do osób znających uC STM32, czy jest tutaj jakiś buffor danych USART? Mam taki kawałek kodu: [syntax=c] while (1) { if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE)){ int i = 0; while(USART_GetFlagStatus(USART2, USART_FLAG_RXNE)){ buffor[i] = USART_ReceiveData(USART2); i++; for(int j=0 ; j < 10000 ; j++){}; } printf("odebrano...
Dziekuje za odpowiedz. Uzywam windowsowskiego Hyper Terminala :P. Ale dalej mi nie dziala :/. Teraz kod wyglada tak: #include <stdio.h> #include <avr/io.h> #define FOSC 16000000 #define BAUD9600 #define MYUBRR (FOSC/(16*BAUD)-1) #define sbi(var, mask) ((var) |= (uint8_t)(1 << mask))...
Poczytaj o FDEV_SETUP_STREAM np. (jeszcze) tutaj: http://www.appelsiini.net/2011/simple-us... W definicji twojego strumienia (w przykładzie - który ci podałem) brak jest funkcji pobierającej znak ze strumienia. Funkcję zdeklaruj wg podanych przykładów i przypisz jako drugi parametr tego makra (obecnie NULL). Natomiast trzeci parametr przestaw...
Bajki nie bajki, ten http://www.elektroda.pl/rtvforum/topic18... przypadek też był trywialny. Takie rzeczy tylko w erze: /* * main.c * * Created on: 13-02-2011 * Author: tymon_x */ #include <stdio.h> void statyczna_zmienne(); int main(void) { int magiczny_licznik; for(magiczny_licznik = 1; magiczny_licznik...
Chcę w jakiś sposób okiełznąć USART, na razie bez DMA. Korzystam z gotowego przykładu, jednak pustki w terminalu. Fizycznie : GND przejściówki USB RS232 podłączony z GND disco, RX, TX kros. stm32f10x_usart.c [syntax=c] #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" #include <stdio.h>...
Zamierzam użyć pilota do dekodera philips PVR 7201/91 jako nadajnika podczerwieni. Odbiornik TSOP 1136 (lub 38, czy to coś zmienia??). Aby wiedzieć co dokładnie jest odbierane przez odbiornik przy naciśnięciu poszczególnych przycisków, napisałem program, którego efektem ma być wyświetlenie elementów tablicy, której elementy są czasami trwania kolejnych...
Witam, Od jakiegoś czasu stawiam pierwsze kroki w programowaniu PICów. Pisałem sobie jakieś pierwsze programiki na PIC18F66J65, uruchomiłem komunikację z komputerem po USART aż tu pewnego pięknego popołudnia coś się wykrzaczyło i procek pracuje tylko na wewnętrznym oscylatorze. Mikrokontroler mam przylutowany na płytce-przejściówce QFP - DIP. Dołączony...
Dzien dobry, Bardzo proszę o pomoc w wysyłaniu komend do modemu z Pic'a. Używam Pickit3 z Ready for PIC. Wylutowałem J2,J3. Zbudowałem układ na MAX232. Na oscyloskpie widzę ze Tx coś przesyła. Ale modem już nie odsyła. [syntax=c] #include <stdio.h> #include <htc.h> #include "usart.h" /* A simple demonstration of serial communications which...
Sam while: [syntax=c]while(1) { TWI_MasterWriteRead(&twiMaster, SLAVE_ADDRESS, &sendBuffer[BufPos], 3, 3); while (twiMaster.status != TWIM_STATUS_READY) { /* Wait until transaction is complete. */ } uint8_t byte0 = twiMaster.readData[0]; uint8_t byte1 = twiMaster.readData[1]; uint8_t byte2 = twiMaster.readData[2]; printf("%d", byte0); printf("%d", byte1);...
Operatory << w C++ można przeciążyć, w efekcie będą one wykonywały dowolną funkcję, jakiej zapragniesz. Także wystarczy stworzyć klasę obsługi LCD i przeciążyć te operatory, aby uzyskać np. coś takiego LCD<<"Napis";. W przypadku urządzeń i ich instancji warto pomyśleć też o ich implementacji jako singletony. Jest to wygodne i odporne na...
Witam Znalazłem na naszym szanownym forum kod w C do obsługi portu RS232 (na PC): #include <windows.h> #include <stdio.h> int main() { HANDLE hCom; //uchwyt portu DCB dcb; //konfiguracja portu BOOL fSuccess; //flaga pomocnicza BYTE RS_buf; //bufor danej DWORD RS_ile; //ilosc bitow wyslanych //otwarcie portu COM1 z prawami RW...
Tym razem ma problem z RS232. Spróbowałem na początek skorzystać z gotowego przykładu HiTech, a nie udało mi się podczas kompilacji main.c #include <stdio.h> #include <htc.h> #include "usart.h" void main(void){ unsigned char input; INTCON=0;// purpose of disabling the interrupts. init_comms();// set up the...
Poniżej przedstawiam korespondencję oraz dalsze kroki mające na celu wykorzystanie implementacji funkcji printf pochodzącej z strony freddiego chopina. Ja: Witaj, Chcialem wykorzystac twoja funkcje printf, jednak w paczce z nia zabraklo pliku usart.h . Brakowolo jedynie referencji do funkcji usart_put_char więc ją dopisalem. Niestety nie ma również...
Nie trzeba - masz na schemacie, który UART jest podłaczony do st-linka. w 446RE np. USART2 w innych nie pamiętam - ale można to sobie od razu na schemacie ze strony STM zobaczyć.
tu jest kod prostego programu który podgląda to co dzieje się na magistrali, filtruje odpowiedź jednego z urządzeń i obrazuje na ekranie to co jest odbierane. jest tam też pomocniczy licznik który pozwala mi analizować ile tych ramek (które są odpowiedzią urządzenia może być pomijane. Jedyne "przetwarzanie" ramki to wyświetlenie jej zawartości na ekranie....
Chyba logiczne jest, że jak chcesz mieć mały kod, to używasz optymalizacji rozmiaru, czyli -Os... printf z newlib (taki masz i w yagarto i w CS) - jest ogromny, to fakt znany od dawna. printf ten obsługuje jednak wszystko co tylko możliwe. Paczki z yagarto, tak samo jak paczki z CS nie mają "tych" funkcji zaimplementowanych, więc wystarczy spojrzeć...
Udało mi sie pójść krok dalej, robot przestał wariować, ale kiedy próbuje wysłać mu coś przez RSa, nic się nie dzieje. Ogólnie kiedy włączam robota zapala się lampka przy RS, która odpowiada wysyłanie, a kiedy podłączam kabel do RSa to zapala się też lampka od odbioru. Kod z robota: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h>...
Witam, mam problem z programową implementacją I2C. Po zczytaniu godziny z PCF'a pokazuje mi same zera i nie zlicza czasu. oto kod programu: #include <p18cxxx.h> #include <stdio.h> #include <delays.h> #define SDA TRISAbits.TRISA3 #define SCL TRISAbits.TRISA4 #define SDA_IN PORTAbits.RA3 #define SCL_IN PORTAbits.RA4 void i2c_init (void)...
Na końcu artykułu o USART napisałem: Problem liczb i znaku zapytania w terminalu Jeżeli wysyłasz do terminala liczby w postaci kodów ASCII, możesz się natknąć na problem pojawiającego się w zamian jedynie znaku zapytania. Rozwiązanie problemu znajdziesz tutaj: Problem znaku zapytania podczas konwersji float do znaków ASCII
Witam czy to normalne ze kod wynikowy programu napisanego w AvrGCC jest > od kodu w Bascomie ?? Kod w C #include <stdio.h> #include <avr/io.h> int uart_putchar(char c); int main(void) { UBRR = 0x17; //0x17; UCR = (1<<RXCIE)|(1<<T... fdevopen(uart_putchar,NULL,...
Po pierwsze - potrzebujesz itoa(), nie atoi(). Po drugie - co znaczy, że sprintf() nie działa? Ściągnij okrojoną wersję ze strony Freddiego (razem z itoa). Jak się odrobinę postarasz, to przekierujesz zawartego tam printf'a na UART - będziesz mógł wysyłać przez UART bez "pośrednictwa" sprintf().
Rozwiązałem już swoje problemy następnego dnia po napisaniu posta, ale nie zdążyłem tu napisać, przepraszam. Dziękuję za porady, mimo że po czasie. Problem z delayem rzeczywiście leżał w priorytetach RTC_Handler i SysTick_Handler. Nie rozumiem tylko, dlaczego SysTick_Handler miał niższy priorytet od RTC, skoro w pliku z wektorem SysTick ma priorytet...
witam mam problem z kompilacją kodu na atmege16, Program służy do wysyłania znaków z atmegi16 przez UART na komputer z użyciem standardowych funkcji typu puts, printf itd. Wkleje ci dzialajacy kod na printf'ie porownaj ze swoim: #include <avr/io.h> #define baud ((F_CPU/(predkosc*16UL)&... #define predkosc 2400 #define...
Dzień Dobry Chciałem zapoznać się z konfiguracją przerwań zewnętrznych. I mam pewien problem. Wydaje mi się, że rejestry skonfigurowałem dobrze. Założenie jest takie, żeby wygenerować sygnał prostokątny na pinie następnie podać ten sygnał na pin który będzie odpowiedzialny za przerwanie zewnętrzne. W przerwaniu chciałbym zmieniać stan diody. Przykład...
Witam juz dziala :-) poprostu bylo trzeba uzyc polecenia fdevopen Uart inicjalizuje tak ->UCR = (1<<RXCIE)|(1<<TXEN)|(1<&... UBRR=0x17; procedurke wyslania pojedynczego znaku nazwalem nie putchar tylko UART_putchar ale cos mi sie wydaje ze zabardzo skomplikowalem sprawe :-) Mam jeszcze jedno pytanie jak zrobic obsluge 1wire ?...
Serdecznie dziękuję za odpowiedź rb401. Zmodyfikowałem kod: https://obrazki.elektroda.pl/7556589300_... warningi znikają po usunięciu volatile sprzed deklaracji zmiennej buf1, ale nic się nie pojawia w terminalu Dodano po 36 To trochę dziwne, bo wychodzi na to, że kompilator krzyczy, że zmienna uint8_t buf1 jest niezgodna z tą którą...
zmieniłem i nic nie dałao. Jak podglądam pakiety przy pomocy wireshark to widzę tlko 2 pakiety DISCOVER i OFFER i nic więcej. Zastanawiam się czy problem nie może być gdzieś w: static PT_THREAD(handle_dhcp(void)&... { PT_BEGIN(&s.pt); /* try_again:*/ s.state = STATE_SENDING; s.ticks = CLOCK_SECOND; do { send_discover();...
Witam Od jakiegoś czasu próbuję przeprowadzić odbiór danych z UART z wykorzystaniem DMA. Jeśli chodzi o konfigurację UART to jest ona przeprowadzona prawidłowo, ponieważ mogę dane wysyłać jak i odbierać ręcznie. Problem pojawia się przy próbie zaprzęgnięcia do odbioru DMA. Dane w buforze odbiorczym nie są aktualizowane (po zainicjalizowaniu bufora wartościami...
W Tera Term mam ustawione 8-bitów danych, bez kontroli parzystości, 1 bit stopu. Szybkość transmisji jest ta sama. Odczytywanie w Tera Term "Hello world" działa. Coś takiego napisałem ale nie działa. Jest w stanie ktoś coś podpowiedzieć? [syntax=c]void send_char(char c) { while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); USART_SendData(USART2,...
analogicznego uzywam i w innych programach... i dziala... no ale na innych procesorach :/... void Timer_Init() { OCR0 = 150; USART_Transmit('^'); TCCR0 = (1<<CS02)|(0<<CS... TIMSK |= OCIE0; } ISR(TIMER0_COMP_vect) { USART_Transmit('*'); OCR0 += 150; }...
Ja zacząłem programować pice w Proton +. Wogóle na niego nie narzekam, można szybko napisać niezły prog. Może zżera zasoby, ale na przykład nie zauważyłem różnicy w szybkości wykonywania operacji. Próbowałem nauczyć się w C ziomalować, ale on ma wszędzie to Include, co w końcu staje się męczące, a prosty prog długo się pisze :/. Nie można powiedzieć,...
Cześć Od razu nadmienię, że jestem w tym początkujący. Posiadam mikrokontroler STM32F100C4T6B oraz moduł GY-50 L3G4200D. Próbuję nawiązać połączenie za pomocą interfejsu I2C i wyświetlić informację na komputerze kominukując się po UART, który na pewno działa. Jeżeli chodzi o połączenie to jestem na 99% pewny, że jest dobrze. Korzystam z programu STM32CubeMX...
Trochę zmieniłem twój program, nie kompilowałem więc może się coś wkradło ale wydaje mi się że lepiej będzie odbierać znaki w przerwaniu. #include <avr/io.h> #include <util/delay.h> #include <stdio.h> #include <string.h> #include <avr/interrupt.h> #define F_CPU 8000000ul // 8Mhz #define UART_BAUD 19200ul // prędkość transmisji...
Witam, zamierzam pomiędzy dwiema Atmegami32 przesłać pomiar temperatury, przewodowo, za pomocą SPI. Linie MISO, MOSI, i SCK podłączyłem ze sobą, SS mastera jest na masie, SS Slave'a także. Temperaturę przez pewien czas przesyła prawidłowo, jednak po pewnym czasie, na wyswietlaczu Slave'a sa glupoty, jak odłączę na chwilę kabel SS Slave od masy i znowu...
Szukałem na internecie poradników do terminala UART i udało mi się zrobić coś takiego z kawałków znalezionych w sieci. Problem polega na tym, że mój kompilator wyrzuca błędy a nie pokazuje mi gdzie one są (i tym samym nie mogę ich skompilować) i jeśli ktoś może sprawdzić poprawność kodu w 1. i 2. main.c(są to dwa odzielne programy w dwóch projektach...
Droga, którą obrałem to wpierw HAL, ze względu na bardzo przyjazną graficzną możliwość konfiguracji, a potem wraz z przeglądaniem dokumentacji powolne przechodzenie na rejestry. Po prostu po kolei np. obsługę portów (wejścia/ wyjścia) stosuję już bezpośrednio na rejestrach. I tak krok po korku ;) Co do wcześniej opisanego problemu, to moduł BT sterowany...
https://obrazki.elektroda.pl/4509007500_... Zapraszam na prezentację https://obrazki.elektroda.pl/1519670000_... Przygodę z APM32F003F6 pozwoli nam szybko rozpocząć płytka Mini Board. Oprócz głównego MCU z przydatnymi do uruchomienia elementami takimi jak rezonator kwarcowy, przycisk RESET oraz testowy, diody LED,...
Witam, otóż zasilam owy wyświetlacz napięciem ±3.3V, a także stany logiczne są na tym poziomie. Pin kontrastu jest podpięty bezpośrednio do masy, kontrast wizualnie wydaje się być dobrany idealnie. I problem w tym, że pixele bardzo wolno się zapalają.(wyszło mi ok. ~300ms na pełne zaświecenie pixela) Czy jest to jest maksimum wyświetlacza, czy...
Nie wiem jaka jest implementacja. Jak sprzętowa to po transmisji sprawdzać stan flagi TXC - zamiast delay wstawić coś w stylu: while(!(UCSRA & (1<<TXC))); . Ewentualnie nie używać printfa tylko skrobnąć własna procedurę do wysyłania danych przez USARTa?
Witam, jest to mój pierwszy post więc proszę o wyrozumiałość :) Problem jest następujący - chciałem napisać sobie programik mierzący napięcie(potem bedę mierzył poziom napięcia na akumulatorze) więc zaczełem od napisania programu z ADC w trybie FREE RUN, czyli jak raz go uruchomilem to calyc czas wysyłał wyniki konwersji przez rs232, następnie postanowilem,...
Witam, Jest sobie termostat do laminatora oparty o ATMega8 - dzieło ze strony: http://thomaspfeifer.net/laminator_tempe... Ponieważ zrobiłem swoją wersję tego urządzenia wzbogaconą o dodatkowe funkcje, muszę zmodyfikować program, a z programowaniem w C nie miałem dotąd za wiele wspólnego... Na początek postanowiłem sprawdzić działanie...
Witam! Chciałbym się dowiedzieć jak poprawnie używać liczby zmienno przecinkowe. Korzystam z win-avr i niestety nie mogę sobie poradzić. Dodałem biblioteki printf_flt oraz m (math) i odpowiednie opcje dla linkera (zywcem wziete ze strony avr-gcc) ale niestety jakiekolwiek uzywanie floatów daje mi 0 (sprintf'uje do tablicy znakow i usartem przesylam...
Chyba raczej USART_send(&USARTC0, "Content-length: 11\r\n\r\n"); USART_send(&USARTC0, "s=Temp:10*C"); (% to były elementy stringu formatującego dla printf).
Toolchain : C:\Program Files\GNU Tools ARM Embedded\4.9 2014q4 Debugowanie programu : http://obrazki.elektroda.pl/8776950400_1... Gdzieś w sieci wygrzebałem: In case that link ever disappears, what you have to do is ensure that your gcc command has "-Wl,-u,vfprintf -lprintf_flt -lm". This translates to: force vfprintf to...
Witam, Chce pomierzyc okres sygnału prostokatnego za pomocą 90S2313. Dla testów podaje z generatora na wejsice INT0 prostokąt o f=1kHz, czyli okres = 1ms. Idea pomiaru to taka ze w momencie wykrycia narastajacego zbocza procek zgłasza przerwanie na INT0, wtedy zeruje i właczam Timer1. Przy nastepnym narastajacym zboczu zatrzymuje Timer1 a zawartosc...
Zazwyczaj najwygodniej uczyć się języka C na desktopie, czyli swoim PC-cie. Programując STM32 lub AVR-ki używa się języka w ten sam sposób, ale zwykle nie mamy dostępu do pewnych bibliotek standardowych, które na desktopie są od razu, bo komputer ma monitor, klawiaturę, dysk twardy itp.. W mikrokontrolerach tego nie mamy, więc użycie printf(), getch()...
Hej, osobiście stosuję następujące rozwiązanie: - kwarc zewn. 3.6864 MHz - timer2 zliczający z prescalerem 1024, do 36 (po tym się resetuje i liczy na nowo od 0) W efekcie mam "rtc", który przepełnia sie 100 razy na sekundę (3686400/1024/36), a zatem mogę odliczać z dokładnością do setnych sekundy. Chyba wystarczająco. Poniżej kod w C, kompilator avr-gcc...
Witam, posiadam moduł ethernetowy MMnet03 i chciałabym pisać na niego programy za pomocą Nut 0S. Robiłam wszystko zgodnie z filmikami na NutWiki oraz z artykułem z EP "Ethernet i AVR-y". Wersja Nut OS , ze strony ethernut.de ethernut-4.8.9.exe WinAVR : WinAVR-20081205 I program 'Hello world" nie działa, nic się nie wyświetla w terminalu, nawet krzaki,...
Obstawiam kłopot z wykonaniem funkcji uart_printf. Na czas jej wykonania masz blokowane wszystkie przerwania. Sprawdź flagę stanu USART - pewnie masz błąd buffer overrun. Jeśli potrzebujesz szybkości dużo wyższych niż 9600bps, to pomyśl też o XMEGA, w której odbiór danych z USART możesz zrealizować przez DMA, dzięki temu i kilka Mbps nie jest problemem.
Opiszę tutaj moje próby zaprogramowania w linuksie Mikrokontrolera ATtiny2313 z wykorzystaniem kompilatora języka C avr-gcc, programatora avrdude oraz Sample Electronics programmer. Schematów nie dorzucam ponieważ nie bardzo jest sens cały programator to tylko 3 oporniki podłączone do portu LPT do znalezienia w google w każdej chwili, reszta mojego...
Witam! Od jakiegoś czasu bawię się mikrokontrolerami. Ostatnio próbuje swoich sił przy WinArmie. Nie mam problemu przy prostrszych projektach, gdzie w skład wchodzi pare plików. Problem i to duży pojawił się ostatnio, gdy próbowałem skompilować projekcik FREE RTOS-a (dość rozbudowany). Zmieniam ścieżkę dostępu do projektu, w pliku poza tym nic nie zmieniam....
Witam, Nie mogę spowodować , aby działała funkcja printf w programie napisamym w Coocoxie. Program się kompiluje, nie ma błedów, widać w terminalu napisy pochodzące od funkcji send_char, natomiast od printfa nie ma. Czy robię jakiś bład: [syntax=c]#include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_usart.h" #include "stm32f10x_rcc.h"...
Witam. Szkole się w programowaniu zacnych STM32 i od razu na poczatku mam problem z funkcja printf(); Po wywołaniu tej funkcji procesor się zawiesza. Mam zrobiony proste nadawanie i odbieranie danych przez UART. Używam Keila MDK ARM V5 biblioteki HAL wygenerowane w STM32CUBEMX. Korzystam z płytki Kamami Zl27ARM. Na razie chcę uzyskać następujące efekty:...
A zainicjowano porty USART0 lub USART1 ? Może jednak kawałek kodu ?
http://obrazki.elektroda.net/65_12471396... Witam Szanownych Forumowiczów Niedawno zakończyłem prace nad urządzeniem, które nazwałem GPS Tracker. Urządzenie to służy do raportowania pozycji samochodów ciężarowych lub osobowych, z wykorzystaniem pozycji z GPS, przesyłanej przez sieć GSM. Wykonanie zostało zlecone przez indywidualnego klienta....
Bo jak już uda mi się skomunikować po przewodzie będę próbował transmisji bezprzewodowej 433. Zmieniłem kod i odbiornik teraz wykorzystuje przerwania. Niby już transmisja działa ale nie odbieram tego co bym chciał czyli temperatury, a raczej jej wartość jest nie prawidłowa. Podejrzewam że porąbałem coś z typami zmiennych http://obrazki.elektroda.pl/9814723300_1...
Witam Chciałbym wysłać znak hex w postaci ASCII. Wiem że używa sie do tego znaku %x jednak chciałbym aby do komputera przez USARTa docierał pełen znak heksalny np. 0x0250 dociera do kompa jako 250(juz zamienione do ASCII),a chciałbym żeby docierało 0250 lub 0x0000 docierało jako 0000 a nie 0. Jest jakaś możliwość żeby już sam pritnf zamieniał to do...
Aby było prościej to zrezygnujmy z DMA. Przy zwykłym wysyłaniu stringa efekt jest taki sam. Wysyłam tak: GCC HOME: C:\Program Files (x86)\GNU Tools ARM Embedded\4.9 2014q4\bin compile: [mkdir] Skipping C:\CooCox\CoIDE\workspace\DMA\dma\De... because it already exists. [mkdir] Skipping C:\CooCox\CoIDE\workspace\DMA\dma\De...
Witam! Mam problem z popranym odbiorem danych. Kod wygenerowany przez kreatora jest przedstawiony na listingu. I teraz pytanie. Mam odebrać z odbiornika widomość o długości 154 bajtów. Wiadomość ta przychodzi co 1 sekundę i zaczyna się zawsze czterama takimi samymi znakami : (at)(at)Ha Próbowałem już robić to z pętlą, by odbierać 154 znaki, i potem...
Witam, postanowiłem zrobić prosty sprzętowy dekoder midi na Atmega16, kwarc 14.7456, błąd baudu około 1.5% (dopuszczalny zgodnie z notą katalogową). Samo połączenie przy klasycznym baudzie np. 38400 jest w porządku i znaki wysłane z terminala są poprawnie interpretowane i procesor odtwarza na piezo skalibrowane dźwięki (najniższy ton - 27 dźwięk), niestety...
[syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <avr/wdt.h> #include <string.h> #include <util/delay.h> #include <stdio.h> #define BAUD 4800 #define MYUBRR F_CPU/BAUD/16-1 void USART_init(unsigned int myubrr) { UBRRH = (unsigned char)(myubrr>>8); UBRRL = (unsigned char)myubrr; UCSRB = (1<<TXEN)|(1<<RXEN);...
Witam, Mam problem z uruchomieniem UARTU na ATmega128. Jako kompilatora używam CodeVisionAVR. Program się kompiluje lecz nic nie mogę wysłać z procka do kompa, co może być źle w kodzie: #include <mega128.h> #define RXB8 1 #define TXB8 0 #define UPE 2 #define OVR 3 #define FE 4 #define UDRE 5 #define RXC 7 #define FRAMING_ERROR (1<<FE)...
#define BAUD 2400 #define MYUBRR F_CPU/BAUD/16-1 #include <stdio.h> #include <avr/io.h> #include <util/delay.h> /* Inicjuje port szeregowy AVRa */ void USART_init(unsigned int myubrr) { /* Ustala prędkość transmisji */ UBRRH = (unsigned char)(myubrr>>8); UBRRL = (unsigned char)myubrr; /*...
Mam problem z zapisem informacji do pliku txt, a dokładniej z funkcją "fopen", która przy wywołaniu zwraca error: main.c:(.text.startup.main+0xa4): undefined reference to `fopen' Poniżej zamieszczam kawałek kodu. char n[] = "6E436C703186B19CBC6BFD77DFD8FF3D85... char subn[40]; strncpy ( subn, n, 5); subn[5]...
Zaczynam powoli pisać taką najprostszą obsługę ADC. Chciałbym dokonywać konwersji w pętli while w main. Generalnie jest może jakiś algorytm postępowania w trakcie inicjalizacji przetwornika? Widzę że są pewne różnice odnośnie AVR i nie jestem tego w stanie zrobić przez całkowitą analogię... Przedstawię to co zrobiłem: main: [syntax=c] #include <stdint.h>...
Nie lubie jak jest pod górke. Na szybko wymyśliłem obejście :D sprintf(message,"\n\r HH:MM:SS"); USART0_print(message); sprintf(message," %d:%d:%d" ,g,m,s); Jak przyjdą większe chęci to spróbuje przeskoczyć problem z printf() ale obawiam się, że prędko to nie będzie ;) W każdym razie dzięki...
Witam, Zmieniona wersja USART_Transmit_Word: void USART_Transmit_Word( char *slowo) { char n=0; while (slowo[n]) { while ( !( UCSRA & (1<<UDRE)) ); UDR = slowo[n]; n++; } } Tak to jest użyte: USART_Transmit_Word(LOSCA); USART_Transmit_Word(TOSCA); USART_Transmit_Word(SCA);...
to mój kod. raz działa raz nie. Np ponowne uruchomienie Debugowania już go pogoni, a czasem nie da rady. wywala HardFault_Handler() lub inne. [syntax=c] /** ****************************************... * File Name : main.c * Date : 13/09/2014 10:34:06 * Description : Main program body ****************************************...
Witam ponownie, mam teraz niezwykłą zagadkę, tak więc posklejałem kawałek kodu który obsługuje USART + Ethernet - program polega jedynie na tym że jak odbierze jakąkolwiek ramkę Ethernetową to powiadomi o niej i wyśle przez RS-232 MAC address nadawcy i odbiorycy (przy czym tutaj kwestia estetyczna jest niedopracowana) - tak czy inaczej kod ten przetestowałem...
Mam problem z czytaniem szyny 1 -wire http://obrazki.elektroda.pl/3067281100_1... mam 4 termometry czytam pojedynczo ich adresy poprzez OW_Write(0x33); i mam następujące wyniki 0100010100111010010001010111110111001000... 0000010100111010010001010111110111001000... -''- 1000010100101010110101011001110111001000...
Witam Chciałbym się dowiedzieć, gdzie jest problem w programie poniżej. [syntax=c] #include <stdio.h> #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/eeprom.h> #include "encoder.h" #define F_CPU 16000000L #define BAUD 57600 #define MYUBRR F_CPU/BAUD/16-1 #define SET_LED PORTD |= (1<<PD7)...
Witam! Praktykuję ostatnio kompilację na wielu rdzeniach, aby ją nieco przyspieszyć. Przez 99% wszystko działa OK, a w tym jednym przypadku (zwykle jak trzeba przekompilować tylko jeden plik), dostaję np. coś takiego: **** Build of configuration Default for project xxx **** make all -j 3 Compiling file: ts.c arm-none-eabi-gcc -c -mcpu=cortex-m3...
Cały kod z atmegi "slave": Krótko opisując to adres atmegi jest ustawiany na 4 pinach, moze byc wartość od 0 do 15. Następnie w komendzie jest wysyłany adres po literce T, czyli np. T07049... to znaczy adres 7. Adres z komendy jest porównywany z adresem na pinach i jezeli jest zgodny to wykonuje obliczenie. Jak nie jest to nic nie robi. Być może problem...
Witam, piszę ostatnio program na Atmega16, odtwarzający melodie midi, przy wolniejszych utworach wszystko działa wspaniale, przesyłałem nawet informację na terminal i bajty wspaniale się zgadzają. Generalnie przychodzą 3 bajty, z których pierwszy jeśli jest równy 90, gram nutkę występującą po nim, jak 80 to ją wyłączam, jak 0xC0 i wyżej do 0xC9 to znaczy...
Chodzi ci o tą funkcję z CMSIS Dodano po 1 Nie o to ci chodziło :) Doczytałem i zrobiłem tak jak jest to opisane w readme.txt linaro opcje dla linkera LD_FLAGS += --specs=rdimon.specs -Wl,--start-group -lgcc -lc -lc -lm -lrdimon -Wl,--end-group usunąłem plik syscals.c i wszystko ładnie się skompilowało Odpaliłem OpenOCD z opcjami openocd -f scripts/board/stm32f4discovery.cfg...
Nie widzę sensu w używaniu stringów wstawiając w nie 0. Dużo funkcji, np printf, bazuje na tym, że na końcu stringa napotka na 0. Podobne rzeczy spotkasz chociażby bibliotece radzia do hd44780 czy jakiejkolwiek innej operującej na stringach. Coś a la: [syntax=c]void usart_send(char *data) { while(*data) LCD->DR = *data++; } ... int main() { ... usart_send("ala...
STM32 + FreeRTOS 7.1.0 + IRQ Siedze już dłuższą chwilą nad takim czymś. Mam zdefiniowaną kolejkę i zadanie: xQueueReceive definiuje po ilu taktach (czyli ms) zadanie ma przechodzić w stan ZABLOKOWANE. Co bym tam nie wpisał zadanie się nie blokuje i działa. Ilość znaków w kolejce się zgadza - po wyświetleniu ostatniego znaku z kolejki zwraca 0. Próbowałem...
usart printf stm32f printf printf stm32
wyświetlacz zamiennik allegro jakie zelazko rs232 ramka
pralka electrolux blokada większy pobór prądu przez mikrofalówkę
Maksymalne napięcie zasilania TL071 - szczegóły Mozano Home przerywa pracę - diagnostyka i rozwiązania