To dobry moment na poczytanie w końcu datasheeta, czyli zrobienie tak zwanego RTFM. • Bit 7 – RXC: USART Receive Complete This flag bit is set when there are unread data in the receive buffer and cleared when the receive buffer is empty (i.e., does not contain any unread data). If the receiver is disabled, the receive buffer will be flushed...
No ale czy masz pewność, że tak właśnie nie powinno być? Bit można wyłączyć w przerwaniu od TC (albo po tym jak bit TC się ustawi), natomiast włączyć zegar trzeba przed rozpoczęciem wysyłania. Istnieje pewna szansa, że po prostu "tak ma być"... W moim rozumieniu USART działa jak SPI, a w SPI jest tylko jeden master i tylko on może wysyłać zegar. Datasheet...
Prosty program na AVRStudio : #include <m16def.inc> ; Prohibits use of non-implemented instructions (ATmega16) .dseg .org SRAM_START .cseg ;—————R...
OK, rozumie Twoje intencje i z chęcią pomogę, bo minimalizowanie poboru energii to mój "bzik" :) Jednakże zacząłbym od tego, że przy takim zasilaniu gdy ustawisz ten mikrokontroler na kwarcu 32kHz , to zużywać będzie zaledwie 20 μA przy 3V i niewiele więcej przy 5V. Czy to nie wystarczy? Większe straty masz na samym zasilaczu. Co do usypiania -...
odpowiedź jest bardzo prosta, sam zobacz na fragment swojej funkcji do odbioru: USART_Receive jest blokująca , a gdybyś napisał nieblokującą to miałbyś taką sytuację jaką powyżej próbowałeś przewidzieć ;)
Witam, Przejściówka od chińczyków za 5zł. http://obrazki.elektroda.pl/9250235300_1... Na innym temacie już się o niej rozpisywali, także odnośnie sterowników przy błędzie "USART receive framing error".
nie musi nic kasowac, flaga sie sama kasuje jak dane z UDR sa czytane. Bit 7 – RXC: USART Receive Complete This flag bit is set when there are unread data in the receive buffer and cleared when the receive buffer is empty (i.e. does not contain any unread data ).
Lol, wystarczyło popatrzeć na funkcję od pana Mirka Przeiceiż jest taka lcd_char(); Musi działać :) [syntax=c] while(1) { i=USART_Receive(); lcd_char(i); }[/syntax]
Witam, mam problem z transmisją UART. Działam na płytce Discovery stm8l. Próbuję od jakiegoś czasu dodać do projektu standardowego (projekt Discover ściągnięty ze strony st) transmisję z Hyper Terminalem. Z tego co zdążyłem się zapoznać to porty PC2 i PC3 są zarezerwowane już dla wyświetlacza. Pozostają porty PA2, PA3 oraz PC5, PC6. W datasheet sterownika...
[syntax=c]#include "common.h" #include "ymodem.h" #include "stm32f10x.h" extern pFunction Jump_To_Application; extern uint32_t JumpAddress; static void IAP_Init(void); void My_Delay(void); uint8_t tab_128[128]; int32_t lenght = 2, tmp, a = 0; uint16_t receive = 0; USART_InitTypeDef USART_InitStructure; USART_ClockInitTypeDef USART_ClockInitStructure;...
I bufor kołowy właśnie jest wykorzystywany w bibliotece Atmela :) (at)Piotrus_999 - uważasz, że powinienem napisać tutaj własne funkcje do obsługi uarta? Panie Tomku - rozumiem zamysł, poprawię kod :) Powiem może dokładniej co mam do zrobienia i dlaczego uparłem się na tę bibliotekę Atmela. Trochę mi nie wychodziło stąd wróciłem do początku żeby sobie...
schemat jest następujący - standard: http://obrazki.elektroda.pl/7191493100_1... te 4 elementy 3 rezystory i kondensator są niezamontowane - jest to polecane przez ST obwód zamiast rezystora 120R (mniej prądożerny). kod z maina: RCC_APB2PeriphClockCmd(RCC_APB2Perip... ENABLE); GPIO_Conf.GPIO_Pin = GPIO_Pin_10; GPIO_Conf.GPIO_Mode...
W VB mam takie funkcje do wysyłania i odbierania danych RS232 Dodano po 1 Zmieniłem funkcję odbierania danych w VB i zaczęło się ściągać. Dodano po 1 W zasadzie opanowałem transfer danych w obie strony. Pozostał problem z wyświetlaniem na wyświetlaczu LCD kodów znaków zamiast znaków (funkcja 'itoa (data,str,10);LCD_WriteText(str);' ).
W AVR306 mozna znalezc taki kod obslugi USARTA dla atmegi128: #include <avr/io.h> #include <avr/iom128.h> #include <avr/ina90.h> /* UART Buffer Defines */ #define USART_RX_BUFFER_SIZE 128 /* 2,4,8,16,32,64,128 or 256 bytes */ #define USART_TX_BUFFER_SIZE 128 /* 2,4,8,16,32,64,128 or 256 bytes */ #define USART_RX_BUFFER_MASK ( USART_RX_BUFFER_SIZE...
ogarnąłem to w taki sposób - wszelkie komentarze mile widziane ;) nie śmiać się jeśli to mocno dookoła proszę :) [syntax=c]void HAL_UART_RxCpltCallback(UART_HandleTypeD... *UartHandle) { if(UartHandle->Instance == USART1) //ensure that interrupt comes from USART1 { if(USART1->RDR == 0xA3 && !marker) //if 0xA3 received and no correct frame receive in...
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...
Ale to: [syntax=c]int main(void){ MYUBRR = 25; //baud rate = 2400 USART_Init( MYUBRR ); USART_Transmit(USART_Receive()); //wyślij odebrany bajt }[/syntax] nie działa tak jak zakładasz. To się wykona raz po czym procesor wejdzie w martwą pętlę. Ostatnią linię trzeba więc zapętlić. Druga sprawa - jeśli odbierasz śmieci to znaczy, że masz źle ustawione...
Prawie dokładnie tak. Dlaczego prawie? Spodziewam się, że po wysłaniu tego co napisałeś otrzymasz '\r' i '\n'. Wynika to z tego, że najczęściej USART_Receive() nie używają przerwań i odbierzesz dwa ostatnie znaki. Aby sensownie korzystać z tych funkcji użyj przerwań odbiorczych z USART. Pozostaje jeszcze problem echa. To zależy od urządzenia i jego...
(at)tadzik85 to jest moja inicjalizacja : [syntax=c] void init_USART6(){ GPIO_InitTypeDef GPIO6_InitStruct; // this is for the GPIO pins used as TX and RX USART_InitTypeDef USART6_InitStruct; // this is for the USART6 initilization NVIC_InitTypeDef NVIC6_InitStructure; // this is used to configure the NVIC (nested vector interrupt controller) RCC_APB2PeriphClockCmd(RCC_APB2Periph_US...
Witam, Po uruchomieniu trzech interfejsów RS232 w STM32f103rb przyszedł czas na RS232 w STM32f407 i odrazu problem. Zrobiłem konfigurację USARTA i wysyłam w pętli znak 'a' a otrzymuję jakieś E z indeksem dolnym 1. Konfiguracja : [syntax=c] void init_USART1(){ /* This is a concept that has to do with the libraries provided by ST * to make development...
Problem już prawie rozwiązany, gdyż moja lista z projektami świeciła się jak choinka za sprawą tych samych, złych bibliotek. Poprawiłem już prawie wszystko, ale chce się upewnić co do jednego. Czy w kodzie który zamieszczam wystarczy usunąć "||" czy coś tam powinno być? W pliku źródłowym na jakiejś stronie internetowej też tego nie ma, więc nie usunąłem...
Hej, Chciałem uaktualnić swój stary projekt, w którym używałem Atmegi162. Układ ma łączyć się z zewnętrznym urządzeniem za pomocą magistrali UART, o parametrach 8b danych, 1b stopu, parzystość "even". Obecnie próbuję zrobić te same operacje wykorzystując płytkę z mikrokontrolerem ARM - STM32F407Z (na płytce CORE407). Po paru minutach udało mi się skonfigurować...
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...
Nie napisałeś nic, co mogłoby pomóc rozwiązać problem. Nie wiadomo jakiego typu jest zmienna ramka2, co zwraca funkcja USART_Receive(). Może być to zmienna ośmiobitowa, a jeśli tak jest, to taki token się w niej nie zmieści, choćbyś nie wiem jak się starał. Jeśli token ma długość 6 bajtów, to musisz je odczytać, zapisać np. do tablicy i tą tablicę zapisać...
W ATMega nie ma takiej opcji - włączenie USART powoduje przejęcie kontroli nad pinem IO i ustawienia rejestrów portu dotyczące tego pinu nie mają znaczenia. Ależ jest. Włączenie RXEN ustawia tylko pin na wejściowy, ale nie zmienia ustawień rezystora podciągającego (można normalnie ustawić - rejestr PORTx). Sam się na to nadziałem jakiś czas temu na...
Witam, Chcę zrobić coś takiego: strumień danych z RX kanałów USART1 oraz USART2 ma być połączony w jeden strumień i przesyłany na bierząco kanałem USART3. Chciałem to zrobić na przerwaniach i czymś w rodzaju DIY bufora cyklicznego - USARTY w przerwaniach ładują do jednego bufora i inkrementują wskaźnik, natomiast w nieskończonej pętli w main.c jest...
Witajcie, w jaki sposób można optymalnie odczytać przesłany (aż do znaku nowej linii / powrotu karetki) ciąg znaków od przerwania otrzymania danych? /* * Sterowanie przez RS232 (main.c) */ #include "defines.h" #include <ctype.h> #include <stdint.h> #include <stdlib.h> #include <stdio.h> #include <avr/interrupt.h>...
Szanowni Forumowicze, postawiłem sobie za zadanie opanowanie UARTa w prockach xmega, co nie powinno być zadaniem bardzo trudnym. Na początek zajrzałem na stronę producenta i znalazłem pdf z opisem UARTa i przykładowy kod dla wykorzystania sprzętowego na przerwaniach i software'owego. Zacząłem od przerwań. Utworzyłem projekt i skompilowałem program....
Witam, próbuję przepisać program z Atmega8 na Atmega328P, z powodu małej pamięci Atmegi8, w programie wykorzystuje komunikacje USART. Program dla atmegi8: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #ifndef F_CPU #define F_CPU 1000000 #endif //set desired baud rate #define BAUDRATE 9600 //calculate...
Witam, postanowiłem przenieść swój układ z atmegi na atXmegę. Do tej pory do komunikacji urządzeń po serialu używałem biblioteki SoftwareSerial (Arduino) bo układ miał tylko 1 fizyczny serial. Teraz w Xmedze mam ich 5 :) Wgrałem [url=ten]http://mikrokontrolery.blogspot... programik i wszystko...
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...
Dodam moj przepis na ładną tablicę wektorów (przykład dotyczy ATtiny2313) : .cseg ;—————R...
No dobra, może tak, z [url=http://morf.lv/modules.php?name=tut... strony mam taki kod, wybrałem tylko minimum (chyba). Wszystko się kompiluje ale coś dalej nie gra. Czy coś się wysyła nie wiem bo problem jest tym razem ze sterownikiem usb atmela, "nie rozpoznano urządzenia" czyli ogóle system coś wykrywa ale gdzieś...
składanie zmiennej przez |= miało pokazać co musiałbym zrobić aby uzyskać podobny kod wynikowy do tego co wygenerował kompilator. I ja tak nie piszę lecz takie coś na podstawie prostej operacji wygenerował kompilator. Tak wygląda mój kod bo widzę, iż ktoś sięciągle czepia przykładu jak mniej więcej wyglądać musiałby kod źródłowy aby uzyskać taki dziwny...
Już wiem. W pliku m8def.inc są takie wpisy: .equINT0addr=$001; External Interrupt0 Vector Address .equINT1addr=$002; External Interrupt1 Vector Address .equOC2addr =$003; Output Compare2 Interrupt Vector Address .equOVF2addr=$004; Overflow2 Interrupt Vector Address .equICP1addr=$005; Input Capture1 Interrupt Vector Address .equOC1Aaddr=$006; Output...
Datasheet/I/O-Ports/Alternate Port Functions/Alternate Functions of Port D s. 63 : • TXD – Port D, Bit 1 TXD, Transmit Data (Data output pin for the USART). When the USART Transmitter is enabled, this pin is configured as an output regardless of the value of DDD1. • RXD – Port D, Bit 0 RXD, Receive Data (Data input pin for the...
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, Próbuję korzystać z biblioteki Peter Fleury do obsługi usart-u, której listing znajduje się poniżej: PLIK uart.c /***************************************... Title: Interrupt UART library with receive/transmit circular buffers Author: Peter Fleury <pfleury(at)gmx.ch> http://jump.to/fleury File:...
Hej, napisalem cos takiego na ATm8515, fuse_high=0xd9, uP pracuje na 1MHz, transmisja ustawiania na 8N1, bez parzystosći, 19200, 9600 i za każdym razem komputer odbiera od uP przekłamaną w całości transmisję. Coś zmaściłem, ale co?? Skończyły mi się pomysły.. Z góry dzięki, migod usart.c --------------------------- static volatile u08* data; void usart_init(u16...
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...
No dobrze, nie byłem zbyt precyzyjny, mea culpa. SS tak, bo w masterze SS nie jest de facto obsługiwane przez sprzęt. Tak, mogłem o tym napisać. Jeżeli chodzi o USART, to jednak nie masz racji: • TXD – Port D, Bit 1 TXD, Transmit Data (Data output pin for the USART). When the USART Transmitter is enabled, this pin is configured as an output...
mam ustawione przerwanie zewnętrzne ustawione na wyzwalanie zboczem opadającym i narastającym w funkcji obsługi przewania zapisuję sobie do bufora: void EXTI0_IRQHandler(void) { //Check if EXTI_Line0 is asserted if(EXTI_GetITStatus(EXTI_Line0... != RESET) { Buffer[iWriteIdx] = 'I'; GoToNextElement(&iWriteIdx);...
Faktycznie, rozwiązanie kwestii działania SPI było dosyć proste i po sprawdzeniu - SPI działa. Odczytuję zapisany wcześniej rejestr poprawnie. Teraz mam inny problem. Poniżej zamieszczam program z pliku main.c, w którym są dodane miejsca wysyłania kolejnych numerów przez UART i program zatrzymuje mi się po wysłaniu numeru 88. Nic więcej się nie dzieje,...
W tym fragmencie: /* Interrupt handlers */ #pragma vector=USART0_RXC_vect __interrupt void USART0_RX_interrupt(void){ ---------> LINIA: 72 unsigned char data; unsigned char tmphead; /* Read the received data */ data = UDR0; /* Calculate buffer index */ tmphead = ( USART_RxHead + 1 ) & USART_RX_BUFFER_MASK; USART_RxHead = tmphead; /* Store new...
Witam, mam następujący problem od pewnego czasu próbuję odpalić komunikację pomiędzy STM32L-Discovery oraz komputerem na RS232 z sygnałami RTS i CTS, niestety coś robię źle ponieważ komunikacja nie działa i wysłane znaki nie docierają do terminala :/. Czy mógłbym prosić o zerknięcie na ten kod ? [syntax=c]void USART1forFUN(void) { USART_InitTypeDef...
Od jakiegoś czasu zmagam się z problemem wysłania danych przez UART co określone chwile czasowe. Dokładnie chodzi o to iż jeśli wywołuje funkcje: void uart1WriteByte (t_int8u byte) { while (!(USART1->SR & USART_FLAG_TXE)); USART1->DR = byte; } w pętli głównej programu while(1) { uart1WriteByte(0x77);...
Witam serdecznie, Robię hexapoda 18xservo, wykorzystuję do tego niezależne kanały TIM2,3,4,5 i TIM12. Napotkałem problem z kanałem 2 i 3 dla TIM5, nie działa. Żeby nie wrzucać całego programu i nie zaburzać czytelności, przygotowałem mini aplikację testową dla TIM5 PWM, podobnie channel 1 i 4 działa, channel 2 i 3 nie działa. Czy dla pinów PA1 i PA2...
Pozwoliłem sobie uczytelnić kod dla pokazania jak można sobie ułatwić pisanie kodu - zmieniamy w jednym miejscu, a zmiany są uwzględniane w całym kodzie... Daje to bezbolesną możliwość dowolnego przepięcia linii sygnałowych pod inne wyprowadzenia µC przy minimalnych zmianach w kodzie (podobnie jak w językach wyższego poziomu). #include <m16def.inc>...
Witam Używam płytki STM32F4 Discovery. Muszę odczytać sporą ilość danych, więc UART wydaje się jedynym rozsądnym rozwiązaniem. Poniżej kod, którego używam (sugerowałem się kodami z różnych stron). [syntax=c]#include "stm32f4xx.h" #include "stm32f4_discovery.h" #include "misc.h" // I recommend you have a look at these in the ST firmware folder #include...
Ten "durny" temat założyłem dla tego że nie miałem jak sprawdzić tej funkcji w praktyce, a musiałem zlecić płytki do produkcji. Uruchomiłem dzisiaj ten USART in SPI mode, działa super. Trochę namieszane z rejestrami jest i trzeba dobrze doczytać. Przykład w bascom który u mnie działa, myślę że komuś się przyda :) http://obrazki.elektroda.pl/4837277300_1...
receive buffer motorola receive receive power level
volvo silnika ładowarka makita migają diody napiąć panel słoneczny
Czy kontakt spray uszkodzi napisy na wzmacniaczu? Naprawa radioli lampowych - serwis i konserwacja