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.
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...
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...
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.
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...
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, 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...
no dobra a jak zastopic printf gdy nie mam bibloteki stdio.h dla CC5X ?? bo przy tym wymiekam :( bo obecnej podpowiedzi nie jestem wstanie skompilowac a gdy zastepuje printf TXreg to tez wywala kompilacje ;(
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...
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...
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...
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...
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>...
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(...
Czujnik to HTU21D. Wysyłam do niego komendy, które są w Datasheet (w załączniku). Chcę odczytać temperaturę w trybie Hold Master. Oto kompletny kod main.c: http://obrazki.elektroda.pl/4783952000_1...
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...
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.
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))...
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...
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++...
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...
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ć,...
Ok. Przeprowadziłem eksperyment. Jeżeli chodzi o Cortex M3 to dodałem plik z rozszerzeniem cpp i kompilacja przebiegła bez błędów. Tylko nie działa standard C++11 tylko jakiś starszy. Sprawdziłem to dodając słowo kluczowe auto, które podobno jest elementem języka od chwili pojawienia pojawienia się standardu C++11. Poniżej zdjęcie ilustrujące pewne...
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....
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;...
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...
Albo się nie zastanawiać i użyć funkcji sformatowanyego wyjścia z rodziny printf.
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ł.
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ż...
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();.
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...
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...
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; }...
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...
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().
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).
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...
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"...
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...
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...
Czy dobrze odczytuję, że RX i TX mogę podłączyć do pinów PB0 i PB1? Tak dobrze odczytujesz na PB0 i PB1 jest USART3. I wtedy możesz używać PWM na pinach portu A. I tu masz przykładowy program z TB3216 który przerobiłem aby wykorzystywał UART na pinach PB0 i PB1. [syntax=c] #define F_CPU 3333333 #define USART3_BAUD_RATE(BAUD_RATE) ((float)(F_CPU * 64...
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.
#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; /*...
aster11: w zupełności się z Tobą zgadzam dlatego pęka mi już głowa. Do wyświetlania wyniku używam funkcji: usart_putf (rxData); z biblioteki AVRLIB. Oto kod tej procedury: void usart_putc(char data) { while (!(UCSRA & 0x20)); // Wait untill USART data register is empty // Transmit data UDR = data; } void usart_puts(char...
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,...
Witam. Chciałem zrobić termometr bezprzewodowy. Na razie mam problem z komunikacją UART. Nadajnik działa na 100 % odczytywałem temperaturę na komputerze prze ft232. Ale odbiornik nie odczytuje temperatury. W tej chwili obydwa mikrokontrolery są spięte przewodem TX ->RX Kod Nadajnik [syntax=c]#include <stdio.h> #include <avr/io.h> #include...
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...
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);...
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...
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...
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 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...
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)...
Tak z ciekawości... Jaki masz kompilator??;D Bo jak się kiedyś bawiłem PIC16, to ciężko było dorwać coś sensownego:D A co do pytania... Czytanie masz opanowane... Spoko... Zapis... Hmmm... Skoro Ci ten printf nie działa, to może czas zajrzeć do dokumentacji?? Generalnie wysłanie czegoś, to po prostu przypisanie wartości zmiennej do rejestru TXREG, co...
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ć.
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...
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...
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...
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]...
[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);...
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...
Witam Problem jak w temacie, przy próbie wysłania znaku z terminala do atmegi, program się zawiesza. [syntax=c]#define BAUD 2400 #define MYUBRR F_CPU/BAUD/16-1 #include <stdio.h> #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> volatile unsigned char odb_flaga =0;//flaga informująca main o odebraniu liczby...
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...
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...
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>...
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...
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...
Dzięki wielkie za odpowiedzi, oczywiście było tak jak mówicie, bit w rejestrze DIER + błędnie ustawiony bit UDIS, teraz już działa ;) co do wartości w rejestrach PSC i ARR to były zupełnie przypadkowe na razie :) a TIM2_CR1_CEN_bb = 1; to dostęp do bitu CEN przez bitbanding i tak, włącza on timera ;) Jeśli chodzi o printf Freddiego - on napisał swoją...
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...
poprawiłem błędy, ale nadal nie działa. Dodano po 1 Wciąż nie znam całego kontekstu, ale zaczniemy od tego, co już wiemy. Upewnijmy się, że wszystkie elementy są poprawnie skonfigurowane. 1. W funkcji `USART_Init()`, skonfiguruj rejestry UART do odbierania i nadawania danych. Sprawdź, czy prędkość BAUD jest prawidłowo ustawiona. 2. W funkcji `USART_RX_init()`,...
Witam. Próbuję przeprowadzić komunikację między ATMEGA16 a PC. Kod znalazłem na jednej ze stron i powinien być ok. Zmieniłem go tak aby wysyłał słowo test. Niestety w konsoli otrzymuję inne znaki niż te, które wysyłam. Znaki nie są losowe zawsze te same tak jakby był problem z kodowaniem. Przejściówka sprawdzona, sprzętowo też racze ok, program testowy...
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. Dzień cały męczę się żeby zrobić głupią komunikację opartą na RS232->PC gdzie nadajnikiem jest uC amtega8-8pu i nie mogę dojść co robię nie tak... oto mój kod (mocno skrócony ale nadal nie działający tak jak powinien) #include <avr/io.h> #include <stdio.h> #define BAUD 9600 #define MYUBRR F_CPU/BAUD/16-1 void USART_init(unsigned...
Witam, Mam jeden z dwóch często występujących problemów. Nie wiem czy to wina konstrukcji czy kodu. Z napięcia około ~12V mam zrobiony dzielnik napięcia (4K7 i 8K) tak, że na wyjściu mam około 2.44V. Po wgraniu kodu otrzymuje następujące wyniki: 2715 $ 2723 $ 2721 $ 2718 $ 2717 $ 2715 $ Jak widać, rozbieżność jest w granicy moich oczekiwań jak na rezystory...
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
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....
Dzięki.Nie miałem wczoraj okazji sprawdzenia więc na razie nie powiem co mi wyszło.Ciekawią mnie dwie rzeczy. W DevC++ gdy pisałem funkcje to wyglądała ona mniej więcej tak: sms[255]={"hgjgjg"} i gdy chciałem z tego wyjąc np: trzeci znak to pisałem printf (sms[2]) Jesli tu chcę zrobić coś takiego to gdzie jest ta tablica z której mam to wyjąć?? buffer[FIFOSIZE]...
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...
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...
Trzeba posłużyć się wskaźnikiem, ponieważ w C nie przekazuje się całej tablicy (czyli np. ciągu znaków) do funkcji, lecz tylko jej adres. Tymczasem kolega jako argument funkcji podaje zmienną typu char. Proponuję wklepać tak: void pisztekst(char *tekst) //wysyłaj tekst { char zn; char nr=0; while(1) //pętla do pobierania pojedynczych...
Witam. Chciałbym przerobić wagę łazienkową w taki sposób aby wynik był odczytywany przez atmegę. Jako wzmacniacza użyłem układu INA125 Czy jeżeli układ INA 125 zasilam napięciem 5V to napięcie referencyjne 5 volt nie osiągnie tego poziomu i będzie wynosić 4,48 V z uwagi na zbyt niskie napięcie zasilania? Cały mój problem jest taki że mostem bez obciążenia...
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...
Złe podłączenie biegunów odpada mam zrobione tak że do wejścia stabilizatora mam podpięte takie gniazdo DC z takim bolcem w środku, stabilizator zasilałem z zasilacza sharp 12,9V 3A ze starego laptopa (bardzo stary taki co miał system operacyjny ms dos xD) do zasilania układów używam go już od ponad 2 lat i nigdy nie było problemów z nim. Atmegę zaprogramowałem...
Cześć, skonfigurowałem DMA i 2 UARTY (właściwie jeden USART, jeden UART), tak żeby odbierać dane z GPSa na UART4 i poprzez DMA przesyłać dane na stringa, a następnie wysyłać do putty`ego przez USART2. Na pewno dobrze skonfigurowałem UARTy, dane odbieram, natomiast DMA nie działa. Pewnie popełniłem błąd gdzieś w konfiguracji, ale porównywałem ją z różnymi...
Jeśli w jakimś kodzie występuje wspomniana przez kolegę właściwość to proszę go wkleić, bo na pewno nie jest to kod z pierwszego postu tego wątku. No to proszę bardzo. Jest to mały wycinek mojego programu przygotowany tak, aby się skompilował, który działa dokładnie tak jak opisałem. Rzutowanie kolejnej struktury na bufor niszczy poprzednią strukturę....
Dzięki wszystkim za pomoc. Oto mój program: [syntax=cpp] while(1) { dana = USART_Transmit_back(); // odczyt temperatury if (dana == 49) // 49 to tak naprawdę 1 wysyłana z kompa, zignorowałem dlaczego:) { PORTA = 0x01; // zapalenie diody, żebym wiedział która dana aktualnie jest czytana if(ds18b20_ConvertT()) /* Funkcja 'ds18b20_ConvertT' wysyła do układu...
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...
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, 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)...
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 mam taki programik do odczytu ROM CODE czyjnika ds18b20: [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <stdio.h> #include "ds18b20.h" /* Prędkość transmisji 2400 */ #define BAUD 2400 #define MYUBRR F_CPU/BAUD/16-1 /* Inicjuje port szeregowy AVRa */ void USART_init(unsigned int myubrr) { /* Ustala prędkość transmisji...
Prosze bardzo, zmenne oraz main. Zakomentowane linie sluza do odczytu temperatury z ds1820, wyswietlania jej na LCD czy tez zapiswanie do eepromu. [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <stdio.h> #include <stdlib.h> #include <util/twi.h> #include "hd44780.h" #include "ds18b20.h" #include "i2cds1307.h"...
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 Zrobiłem dwu kanałową płytkę do ściamniacza żarówek na 230V z wykorzystaniem triaka (oczywiśie dwóch, po jednym na kanał). Schemat znalazem na formu, wykorzystywany jest układ detekcji przejścia przez zero, triak jest sterowany przez MOC3021, itd. Układ detekcji przejścia przez zero jest podłączony do przerwania INT0, wyzwalanie triaktów do wyjść...
Witam. Próbuję napisać program na uC odczytujący temperaturę z jednego czujnika DS18b20. Pin Data podpiąłem do portu A pin 2 (RA2). uC to PIC16F88. DC18B20 podłączyłem do ego samego zasilania co procesor. Sprawdziłem działanie funkcji RESET_PULSE i wygląda, że DS odpowiada (po odpięciu pinu DATA funkcja zwraca błąd) Niesetety niezależnie od temperatury...
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...
Witam, mam pytanie odnośnie przesyłania pomiaru temperatury z czujnika DS18b20 przez RS232 do PC. Korzystam z płytki edukacyjnej: http://are.net.pl/?id=products&cmd=9... Do uC mam podłączony czujnik DS18b20, wyświetlacz LCD. Pomiar temperatury na LCD wyświetla się poprawnie, to samo chcę wysłać przez RS232 do PC i już nie działa, w ogóle...
A zainicjowano porty USART0 lub USART1 ? Może jednak kawałek kodu ?
Ten program wprowadza mojego STM w tryb uśpienia, ale go nie wybudza, macie jakieś pomysły jak to rozwiązać żeby się wybudzał? Wewnątrz while jest kod wykonawczy zadanej funkcji, w tym momencie działa to tak, że po podłączeniu zasilania wykonuje się ten program, po wypełnieniu licznika przechodzi w tryb sleep i już z niego się nie wybudza. Dodam, że...
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...
printf usart printf double printf write
oporność głośnik renault megane oleju naprawa starych zegarów
potencjometry behringer eurolive potencjometry behringer
Mercedes W124 słaby nawiew, brak stopniowania – rezystor dmuchawy, regulator PWM, naprawa Kod błędu P11B2 - Zwarcie do plusa w obwodzie EGR