Przeniosłem #include na początek, zmieniłem na 4800, ale ten sam błąd :/
//Ustawienie Baud Ratu , po obliczeniach wyszla mi wartosc 12 UBRRH = 0x0;//(ubrr_value>>16); UBRRL = 0x12;//ubrr_value; To jaką wartość wpisujesz? 12 czy 18=0x12? Popraw i pewnie będzie działać.
Nie no zaraz zaraz. RX uC to jest to co odbiera dane, łączysz to bezpośrednio z TX telefonu ponieważ telefon i tak nie da więcej niż 3,3V a uC działa na 5V. TX uC to jest to co nadaje dane, i tutaj wychodzi sygnał 5V czego telefon nie przyjmie. Skoro układ z diodą nie działa najlepiej, użyj dzielnika napięcia szeregowo 2,4k, potem 2,7k do masy. Co do...
A gdzie jest UBRRH_VALUE i UBRRL_VALUE ??
Spróbuj takiego kodu. U mnie on działa, tyle że na Atmega8535(nie mam ósmej atmegi luzem). #include <avr/io.h> #include <util/delay.h> static void uart(void) //konfiguracja UART wzięta z dokumentacji avr-gcc { #define BAUD 1200 #include <util/setbaud.h> UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; #if USE_2X UCSRA |= _BV(U2X);...
Skorzystaj z tego: [syntax=c] #ifdef BAUD #undef BAUD #endif #define BAUD 19200 #include <util/setbaud.h> UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; [/syntax] oczywiście po przestawieniu "fizycznej" czyli rzeczywistej prędkości zegara np. w AvrStudio, musisz w pliku Makefile zmienić podawaną kompilatorowi wybraną prędkość zegara np.: F_CPU = 8000000...
Witam !! Kolega define i include w funkcji ?? używa :>, zaznaczył kolega kod jako C, To tak można ??
Dziękuje za pomoc w temacie jak już wcześniej napisałem został on przeze mnie rozwiązany, błąd tkwił w złym policzeniu parametru UBRR, dziękuję również za link z informacjami o makrach: [syntax=c] #define BAUD 57600 //tutaj podaj żądaną prędkość transmisji #include <util/setbaud.h> //linkowanie tego pliku musi być //po zdefiniowaniu BAUD //ustaw...
Nie pisałem że to jedyny sposób, i raczej nie ma wiele wspólnego z danym typem AVR-a; zmieni się nazewnictwo konkretnego przerwania ISR, może nazwa rejestru UDR (ja mam tak napisany program do ATmega32). Prędkość wygodnie ustawić: #ifdef BAUD #undef BAUD #endif #define BAUD 19200 #include <util/setbaud.h> UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE;...
Po co zajmujesz się liczeniem? Algorytm i nagłówek setbaud.h zrobią to za Ciebie. Wykorzystaj po prostu funkcję, którą Ci wskazałem ponieważ istnieje jeszcze mnożnik: U2X Masz wtedy pewność poprawnego ustawienia, a przy przekroczeniu parametru błędu otrzymasz warning. Podsumowując, jeżeli zdefiniuje w ten sposob parametry transmisji, to prędkość zostanie...
Do obliczania UBRR możesz użyć makra z <util/setbaud.h>. [syntax=c]#define BAUD 9600 #include <util/setbaud.h> int main() { UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; [/syntax] [syntax=c]UCSRC = (1<<UCSZ1)|(1<<UCSZ0);// <-- tutaj dane lecą do UBRRH zamiast do UCSRC[/syntax] Kiedy zapisujesz do rejestru UCSRC, musisz ustawić...
Ja tak inicjalizowałem tinego: UCSRC = 1<<UCSZ1 | 1<<UCSZ0; UCSRB = (1<<RXCIE)|(1<<T... // 8 Databits, receive and transmit enabled, receive complete interrupt enabled #define F_CPU 11059200 #define BAUD 9600 #include <util/setbaud.h> UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; Spróbuj...
Mam taki kod [syntax=c]#define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <string.h> #include <avr/pgmspace.h> #include <avr/sleep.h> #include <util/delay.h> volatile unsigned char odb_flaga = 0; char liczba; void usart_inicjuj(void) { #define BAUD 9600 #include <util/setbaud.h>...
Witam. Pocę się przy pisaniu w AtmelStudio 6. Mam problem z konfiguracją wspomnianego USART-a. Używam, a przynajmniej próbuję tym kodem: [syntax=c]#include <util/setbaud.h> void USART_Init(void) { UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; UCSRC=(1<<URSEL)|(1<<UCSZ1)|... UCSRB=(1<<RXEN)|(1<<TXEN); }[/syntax]...
Zamiast opracowywać własny wzór obliczania parametrów prędkości transmisji, wystarczy wykorzystać setboud.h : jest stratą mocy obliczeniowej . Wystarczy wykorzystać przerwania: http://mikrokontrolery.blogspot.com/2011... I drobna uwaga - nie definiuj F_CPU w kodzie z tych powodów: http://mikrokontrolery.blogspot.com/2011...
Ustawiasz USART0, a próbujesz wysyłać przez USART1. W tym fragmencie zgubiłeś średnik po while: [syntax=c]void USART_Transmit(unsigned char data) { while(!(UCSR1A & (1<<UDRE1)) ) UDR1 = data; }[/syntax] Nie chce mi się weryfikować, czy dobrze ustawiasz baudrate, przelicz sobie, albo wstaw w kodzie wzór wg noty, albo użyj takiej konstrukcji:...
Witam. Nie posiadam wyświetlacza LCD ani 7segm. chciałem nauczyć się obsługi DS18B20 niestety na ekranie terminalu do odbioru sygnału z RSa widnieje dziwna wartość "1360" . UART działa poprawnie. Procesor to Atmega8 z wewnętrznym 8MHz, czujnik podpiłem do PB0 i dałem rezystorek 4,7kłoma. Proszę o jakaś sugestie. #define F_CPU 8000000UL // 8 MHz #define...
Witam, Problemy rozwiązałem wczoraj w nocy, zapomniałem napisać ;) Już wszystko działa, problem chyba był w tym: [syntax=c] #include <util/setbaud.h> UBRR0H=UBRRH_VALUE; UBRR0L=UBRRL_VALUE; [/syntax] Całość zamieniłem na to: [syntax=c]#define BAUD 9600 #define MYUBRR F_CPU/16/BAUD-1 void USART_Init( unsigned int ubrr) { /*Set baud rate */ UBRR0H...
#define FOSC 16000000UL -> nie poprawiło sytuacji. Jeśli chodzi o wartość rejestrów to debugger wyrzuca 67 (HEX) czyli 103 (DEC) dla UBRRL, dla UBRRH jest 0, co zgadza się z obliczeniami. Fusebity ustawiłem w AVRstudio tu te ustawienia są nazwane jako: EXTHIFXTALRES (czyli zewnętrzny kwarc/oscylator o wysokiej częstotliwości, czas startu 16K CK + 4ms)
Strasznie dziwne rzeczy się dzisiaj dzieją z tym wszystkim, udało mi się uruchomić USART ale nie działał mój stary kod z którego korzystałem od dawna. W zasadzie to była biblioteka napisana w oparciu o datasheet. Nie działała poprawnie funkcja inicjalizacji i zadziałała dopiero funkcja z jakiejś strony internetowej. Teraz mam tak, że jak dodam w funkcji...
1. Powinieneś się zdecydować, albo obsługujesz odbiór w przerwaniu, albo w procedurze rec() . Obie metody na raz powodują, że procesor będzie wisiał cały czas w procedurze rec() ( RXC będzie zawsze wyzerowane po wyjściu z przerwania), 2. Następna sprawa - nie używa się już #include <avr/signal.h> , tym bardziej jednocześnie z #include <avr/interrupt.h>...
To program który musiałem przerobić: http://obrazki.elektroda.pl/1371139000_1... To program który zrobiłem na bazie danych katalogowych atmega 8: Źle dodane obrazki usunąłem. Mirek Z.
Problem stanowił ft232, po wymianie na inny wszystko zaczęło działać. Postanowiłem jednak odświeżyć temat ponieważ napotkałem się na jeszcze jeden problem. Przy wysyłaniu jakiegoś kilka razy jakiegoś ciągu znaków np: "dioda" Odbiór jest następujący (zarówno w VC# jak i w RealTerm). dioda dioda dddddddddioda dioda dioda dioda ddddddddddddiodadd tak wiec...
kompletnie nie mam pojęcia co się dzieje. Próbowałem na wszystkie sposoby otrzymać cokolwiek od BTM-a i nic. Na uC wylaczylem BTM_init i funkcje inicjalizującą napisałem taką: #include <avr/io.h> #define F_CPU 4000000 #include <util/delay.h> static void uart_19200(void) { #define BAUD 19200 #include <util/setbaud.h> UBRRH...
Witam, wiem że temat przewijał się przez Elektrodę miliony razy, ale w 60% nie został podsumowany i nic z nich ostatecznie nie wynikło. Otóż mam takie funkcje: [syntax=c] volatile unsigned char odb_x; //odebrana liczba X volatile unsigned char sss; volatile unsigned char odb_flaga =0; //flaga informująca main() o odebraniu liczby volatile unsigned int...
Build started 6.4.2014 at 00:25:04 avr-gcc -mmcu=atmega16 -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Proba_10.o -MF dep/Proba_10.o.d -c ../Proba_10.c avr-gcc -mmcu=atmega16 -Wl,-Map=Proba_10.map Proba_10.o -o Proba_10.elf avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature...
Witam, próbuję zrobić układ który będzie wysyłał na komputer dane z wartości zmierzone na ADC w atmega8. Napisałem program który ma na razie wysyłać poprostu liczbę która powinna się zwiekszać z każdym wysłaniem o 1. Wysyłanie sprawdzam w Realterm i mam mały problem, ponieważ pokazuje w nim tylko liczbę początkową w ogóle nie zwiększając jej i nie robiąc...
Witam, próbuję napisać program do odbierania danych z modułu Bluetooth HC-06. Kod, który znalazłem i zmodyfikowałem działa, lecz jest napisany w języku, który jest dla mnie trudniejszy. Chciałbym zapytać czy ktoś ma może odpowiednik poniższego programu w języku Arduino? Aktualnie potrzebuję stworzyć Timer, który po otrzymaniu danych z Bluetooha ustawi...
Cześć mnogość tematów u Was mam nadzieję, że dobrze trafiłem :) Chcę zrobić komunikację za pomocą portu USART Mam taki o to kod, który wgrywam na Atmege 88: #include <avr/io.h> #include <util/delay.h> #define BAUD 19200 #include <util/setbaud.h> void USART_Init(){ UBRR0H = UBRRH_VALUE; UBRR0L = UBRRL_VALUE; UCSR0B = (1...
Cześć! Mam Atmege328 taktowaną z kwarca 16 Mhz. Do konfiguracji uarta używam nagłówka <util/setbaud.h> i chciałbym uartem nadawać z prędkością 115200. tutaj kawałek mojego nagłówka uart.h #warning "Baud rate achieved is higher than allowed" w setbaud.h a tam dziwactwo: [syntax=c]#if 100 * (F_CPU) > \ (8 * ((UBRR_VALUE) + 1)) * (100...
Sugerując się tym tematem http://www.elektroda.pl/rtvforum/topic13... Napisałem prostą obsługę rs485 dla dwóch mega16 jeden to master drugi slave. Niestety nic się nie dzieje błąd tkwi w kodzie lub połączeniu na płytce albo w obu. Master: #include <avr/io.h> #include <inttypes.h> #include <util/delay.h> #include <stdio.h>...
Witajcie Postanowiłem pobawić się RS232. Używam do tego przejściówki USB->FT232->RS232. Atmega8 ustawiona: 8MHz Baud: 9600 UBBR: 51 Po przeczytaniu Datasheet i innych tutków napisałem coś takiego: [syntax=c]#include <avr/io.h> #include <inttypes.h> void USARTInit(uint16_t ubrr_value) { UBRRL = ubrr_value; UBRRH = (ubrr_value>>8);...
Pamiętaj jeszcze o sei(); no i to co pisałem -- #include ... Powinno działać. Oczywiście kompilator WinAVR? --- o i napisz jeszcze w UCSRC zamiast (3<<UCSZ0) troche przejrzyściej (jak dla mnie) czyli: (1<<UCSZ1) | (1<<UCSZ0) od razu widać że te bity są ustawione i własnie one ustawiają 8-bitową transmisję. -- zmień sobie na 1 bit stopu,...
Witam. Zrobiłem prosty projekt a jednak nie działa poprawne wyświetlenie informacji odebranej. Połączyłem dwie atmegi88P pzez USART czyli dałem linię TXD pierwszej na RXD drugiej. Druga wyświetla to co dostała na LCD. No i ciągle widzę jakieś krzaczki. Częstotliwość taktowanie procka 1 MHz. Kod atmegi nadającej [syntax=c]#include <avr/io.h> #include...
Mam problem z realizacją odczytu znaków, wysyłanych przez napisaną przeze mnie aplikację na system android, przez ATmege8. Połączenie nawiązywane jest bez problemu. Wiem, że mikroprocesor odbiera informację ponieważ podczas testów z odbieraniem jakichkolwiek informacji dane te zostały odbierane. Problem następuje jeśli chcę porównać odczytane dane z...
Witam Próbuję połączyć dwa uC za pomocą komunikacji UART. Attiny ma za zadanie nadanie jednego znaku ASCII natomiast Atmega powinna go odebrać i wyświetlić na wyświetlaczu lcd. Niestety kontrolery nie mogą się dogadać, programy realizujące to zadanie są praktycznie wklejone z not katalogowych Atmela, ale zamieszczam je niżej bo może coś pokręciłem....
Witam, mam problem z obsługą UART'a. Nie wiem dlaczego nie działa skoro teoretycznie powinien. Wykorzystuję ATmega325, zewnętrzny kwarc 16MHz, konwerter MCP2200. Poniżej zamieszczam kod. Jeżeli wpiszę do rejestru UDR0 jakąś wartość to otrzymam ją w terminalu ale używając funkcji zapisu i odczytu to już to nie działa tak jak powinno. Gdzie może być błąd?...
(at)krzysiek_kutno Odszukaj w kodzie, który masz odwołań do pionu IO. Zwykle są to pojedyncze instrukcje. One na sztywno mają jakąś maskę, odzwierciedlającą położenie pinu. Tę maskę zamień na zmienną globalną, którą będziesz modyfikował w swoim kodzie. Gdyby załącznik był w zip to bym sobie go podglądnął, ale jestem zbyt leniwy na rozpakowanie rara...
Witam, Próbuję zrobić układ mierzący napięcie w zakresie 0-5V i wysyłający wynik na COMa. Napięcie odniesienia ustawiłem na wew. AREF i do pinu ADC1 podłączyłem dzielnik napięcia z dwoma rezystorami 330, więc jeśli dobrze myślę to 5V/2=2.5 i (2.5/2.56)*255=249 i taki wynik powinno mi wysyłać na coma a wynik jaki otrzymuję gdy na zasilaczu ustawiam 5V...
Witam po dość długim czasie. Nie miałem zbytnio czasu żeby zająć się tym uartem. Jak do tej pory nie znalazłem żadnego kodu który kompilował by się bez problemów. Oprucz tego: #include <avr/io.h> #include <inttypes.h> void USARTInit(uint16_t ubrr_value) { UBRRL = ubrr_value; UBRRH = (ubrr_value>>8); UCSRC=(1<<URSEL)|(1<...
Witam, mam problem z połączeniem po USARCIE tych dwóch procesorów. Sprawa wygląda następująco: atmega1284p ma być docelowo masterem, wysyła ramkę i w odpowiedzi dostaje ramkę zwrotną od atmega8. Obsługa ramek nie jest jeszcze napisana, na razie wysyłam 8 bajtów atmegą1284p i jeżeli wszystkie bajty zostają poprawnie odebrane, to atmega8 odsyła mi 11...
Witam, Chciałem sprawdzić czy będę dostawał odpowiedzi na wysłany komunikat. W tym calu wrzuciłem poniższy program na ATiny2313. #include <avr/io.h> #include <inttypes.h> //This function is used to initialize the USART //at a given UBRR value void USARTInit(uint16_t ubrr_value) { //Set Baud rate UBRRL = ubrr_value; UBRRH = (ubrr_value>>8);...
Ustawiłem źródło taktowania na zewnętrzny kwarc 14,7456 MHz. Program: http://obrazki.elektroda.pl/1652325000_1... Transmisja przebiega pomyślnie bez błędów, co widać na załączonym obrazku.
Witam, zmontowałem sobie prosty układ do komunikacji z PC. Komunikacja następuje przez przejściówkę USB <>UART opartą o FT232R. Wszystko pięknie działa do momentu, kiedy zmieniam baud rate na <190 - mikrokontroler sygnalizuje, że taki baud rate jest możliwy do ustawienia, natomiast po zmianie w Real term komunikacja nie następuje. Poniżej wklejam...
Witam Poszedłem za twoją radą i odpaliłem najpierw rs232 #include <stdint.h> #include <avr/io.h> #include <util/delay.h> // Define baud rate #define USART_BAUD 9600ul #define USART_UBBR_VALUE ((F_CPU/(USART_BAUD<<4... void USART_vInit(void) { // Set baud rate UBRRH = (uint8_t)(USART_UBBR_VALUE&g...
Pokaż program po zmianach. [syntax=c] /* BAUD RATE: 9600 */ #include <avr/io.h> // Załaduj bibliotekę input/output #include <util/delay.h> // Załaduj bibliotekę opóźnień #include <avr/interrupt.h> // Załaduj bibliotekę obsługi przerwań #include "ioinit.h" // Załaduj bilbiotekę zew. (do ustawienia portów ATMega 8) #include "uart.h"...
Cześć, próbuję odczytywać dane z magistrali która ma format ramki Start 8bitów_danych extra_bit_danych stop, standard 9600 NRZ kolejność bitów to 0 1 2 3 4 5 6 7 MODE_BIT (kolejność 0...7 standardowa jak w UARCIE) Na screenie widać przebieg z analizatora http://obrazki.elektroda.net/78_12734803... Stop jest wyjechany w prawo trochę, ale to dlatego...
Witam! Problem jak w temacie. Zakupiłem moduł bluetooth BTM 112, zrobiłem pod niego płytką z wszelkimi potrzebnymi elementami (wg. schematu z datasheeta) i wyprowadzeniem sygnałów na goldpiny. Po podaniu zasilania moduł się włącza i przechodzi w stan "mrugającej diody połączenia". Od strony PC mogę się bez problemu połączyć i następnie wysyłać do modułu...
Witam! Mam problem z odbieraniem stringów przez USART. Chcę, aby po wpisaniu do terminala na komputerze "abc", mikrokontroler odesłał "OK". Kod programu: [syntax=c]//#define F_CPU 14745600 #include <avr/io.h> #include <util/delay.h> #define USART_BAUDRATE 9600 #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) unsigned char...
Witam kod do nadajnika może wyglądać tak: #include <avr/io.h> #define F_CPU 1000000UL #include <util/delay.h> #include <avr/interrupt.h> //set desired baud rate #define BAUDRATE 1200 //calculate UBRR value #define UBRRVAL ((F_CPU/(BAUDRATE*16UL)&... //define receive parameters #define SYNC 0XAA// synchro signal...
Mam spory problem z uruchomieniem sterowania wyświetlaczem od Nokii 3110 za pomocą biblioteki GLCD ze strony glcd_set_contrast(70); , zastąpię tym co w niej siedzi, program wykonuje się do końca ("ABCDE" w terminalu), a na ekranie pojawia się jedna linia znaków, ale nie są to te znaki, które powinny się pojawić i nie pojawiają się w tej pozycji w której...
Witam szanownych Kolegów, Natknąłem się na problem, z którym wojuję już dłuższą chwilę. Mimo poszukiwań w obszernych zasobach naszego forum niestety nie udało mi się odnaleźć odpowiedzi lub podpowiedzi odnośnie mojego problemu (być może źle szukam). Nabyłem takie oto moduły: http://electropark.pl/moduly-komunikacji...
Witam, jako iż mój poprzedni temat został usunięty, a bardzo pilnie potrzebuje jakiejkolwiek pomocy jestem zmuszony założyć temat jeszcze raz. Otóż mój problem dotyczy sterowania silnikiem DC, a konkretnie napięciem jakie do niego wysyłam, chodzi o zmianę prędkości obrotowej, wzorowałem się na poradniku użytkownika Dondu konkretnie aplikacji LED Master....
Jak wrzucę funkcję wyświetlającą wynik na wyświetlaczu wracam do punktu wyjścia. Układ nie odbiera danych z drugiego mikro kontrolera. Bynajmniej tak to wygląda. Nie wiem czy o to Ci chodziło [syntax=c]#include <stdio.h> #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include "hd44780.h" #define USART_BAUDRATE...
Twój program z postu [url=https://www.elektroda.pl/rtvforum/v... wydaje się być poprawny. Wartości jakie wpisujesz do OCR1 (czas w us) powinny być w okolicach 1500 +- 500 - tak z grubsza, te powinny zaakceptować różne serwa. Te 5000 o których wspomniałeś to raczej przesada. Jak to zasilasz, bo w tym może być problem....
Dobrej nocy, jak napisałem wyżej już wyrzuciłem je z przerwań co poskutkowało tym że już nie ma transmisji.. RXC działa ale teraz transmisji brak... heh Dodano po 1 A po modyfikacjach jak niżej problem znów ten sam. Jeżeli wywołam metodę ustaw_timer() przy fladze Juz_freq to nawet Startu(0x80) już nie dam. Gdzie teraz tkwi szczegół? Switcha nie mogę...
Dzień dobry:) Mam kolejny problem. Atmega nie może odczytać tego co wysyłam z komputera. Do komputera elegancko wszystko dochodzi ale w drugą stronę już to się nie udaje. Posiadam http://obrazki.elektroda.pl/5367414100_1... (T1OUT to TX a R1IN to RX w ft232) Płytka testowa: http://obrazki.elektroda.pl/7785833400_1...
[syntax=c]#define USART_BAUD 4800ul #define USART_UBBR_VALUE ((F_CPU/(USART_BAUD<<4))-1) void USART_Init (void) { // Set baud rate UBRRH = (uint8_t) (USART_UBBR_VALUE >> 8); UBRRL = (uint8_t) USART_UBBR_VALUE; // Set frame format to 8 data bits, even parity, 1 stop bit //UCSRC = (0 << USBS) | (1 << UCSZ1) | (1 << UCSZ0)...
[syntax=c] #define USART_BAUD 9600ul #define USART_UBBR_VALUE ((F_CPU/(USART_BAUD<<4))-1) void uart_init(void) { // Set baud rate UBRRH = (uint8_t) (USART_UBBR_VALUE >> 8); UBRRL = (uint8_t) USART_UBBR_VALUE; // Set frame format to 8 data bits, even parity, 1 stop bit //UCSRC = (0 << USBS) | (1 << UCSZ1) | (1 << UCSZ0)...
#include <avr/io.h> #include <avr/interrupt.h> #define USART_BAUDRATE 9600 #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) int main (void) { UCSRB |= (1 << RXEN) | (1 << TXEN); // Turn on the transmission and reception circuitry UCSRC |= (1 <<...
Witam, Zapoznałem się z tym tematem: https://www.elektroda.pl/rtvforum/topic2... Niestety jest zamknięty, więc musiałem otworzyć nowy. Szukałem wielu porad w tym temacie i ostatecznie napisałem program w BASCOmie i działa, aczkolwiek z pewnym problemem z częstym błędnym odczytem CRC. Teraz powoli przeprowadzam się na C i z podanego tematu ściągnąłem...
Witak wszystkich. Mam dziwny problem. Piszę obsługę RS-485 na Atmega328P. Testowo program jest bardzo prosty: #include "MPCM_Port_D.h" #include "USART.h" #include <util/delay.h> #ifndef F_CPU #define F_CPU 16000000UL #endif #include <avr/io.h> int main(void) { char a[]="abcde"; uart_master_init();...
Witam. Mam pewną zagryzkę z prędkością USART w mojej atmedze. Niezależnie od ustawionego Baudrate zawsze na diodzie mam około 30Hz co tak na oko daje śmieszną prędkość. Czy coś robię źle? W jaki sposób wycisnąć z tego coś więcej? Poniżej podaje kod który jedyne co robi to inicjalizuje Usart i w pętli wysyła znak i mruga diodą. #include <avr/io.h>...
Witam Mój problem polega na tym, że muszę odczytywać z ADC, a następnie wysyłać dość duże paczki danych. Wymyśliłem tak jak poniżej (wiem, że nie najlepiej), że wezmę puszczę przetwornik w FRM, tak żeby generował przerwanie po każdym pomiarze i w tym przerwaniu wysyłam to prosto po USART. [syntax=c] //pliki nagłówkowe #include <avr/io.h> #include...
Rozumiem wszystkie wasze spostrzeżenia i sugestie. To rozwiązanie nie musi być ani dobre ani efektywne, po prostu ma działać. Celem zadania jest znalezienie optymalnej częstotliwości próbkowania. Czy program jak poniżej ma szansę działać? [syntax=c] /* * usart_try.c * * Created: 2012-11-17 12:59:36 * Author: mikroice90 */ #include <avr/io.h> #include...
Dlaczego UART nie wysyła wartości 0x31 ? Błąd jest w programie, czy może przekombinowałem coś z kablem i max232? (używam makiety 300-k) // główny moduł projektu #define _MAIN_MOD_ 1 // pliki dołączone ( include ) : #include <avr/io.h> // funkcje : void USART_Init( unsigned int ) ; void USART_Transmit( unsigned char); int main(void) { USART_Init(51);...
Witam. Mam dwa układy komunikujące się ze sobą za pomocą RS485. Jeden wysyła dane, drugi odbiera i wyświetla na lcd. Napisałem kod ale na lcd nie wyświetla się to co powinno. Proszę o sprawdzenie. Kod nadajnika: http://obrazki.elektroda.pl/1247361100_1...
Witam. Może temat artykułu nie jest za dobry, ale nie wiedziałem jak to opisać dokładniej. Mam taki problem, od kilku tygodni próbuję połączyć Amtege8 poprzez UART z komputerem. Kiedy budowałem przejściówkę opartą o układ MAX232 to chyba spaliłem mój port COM w komputerze bo teraz to nawet echo na tym wejściu nie działa. Na wtyku jest napięcie na wszystkich...
Napisałem sobie obsługę protokołu modbus pod Atmege8 (taką prowizoryczną). W fazie projektowej symulowałem zapytanie od Mastera które było analizowane zaraz po wystartowaniu. uC reaguje prawidłowo tzn. Wysyła ramkę zgodną z oczekiwaniami. Problemy zaczęły się przy odbiorze danych po interfejsie UART. Otóż dane odbierane przez uC nie zgadzają się z tym...
Bieżący program wygląda następująco: #include <avr/io.h> #include <avr/interrupt.h> unsigned char volatile p1[8] = {0x50,0x90,0x90,0x90,0x30,0x30,0x30... unsigned char volatile p2[8] = {0x90,0x90,0x90,0x90,0x30,0x30,0x30... unsigned char volatile p3[9] = {0x90,0x30,0x90,0x30,0x90,0x30,0x50...
Konwersję na litery lub cyfry ASCII robisz za pomocą specjalnych funkcji. ale to działa tylko przy wysyłaniu do terminala w PC. Pomiędzy mikroprocesorami przesyła się zwyczajnie zmienne. Jak szukasz kodziku do RS-232 to ci dam taki uproszczony, używany dziś przeze mnie: [syntax=c] #ifndef F_CPU #define F_CPU 1000000UL // set the CPU clock #endif #define...
Jestem początkujący w programowaniu mikrokontrolerów i mam problem z obsługą przerwań w Atmega8. Mam taki oto, bardzo prosty program znaleziony w sieci: #include <avr/io.h> #include <avr/delay.h> #include <avr/interrupt.h> #define F_CPU 1843200 #define USART_BAUDRATE 19200 #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE...
Mam problem otóż wpisując w hyper terminalu 'n' procek tego nie wykrywa zapaleniem diody na porcie D7 połączenie jest bo jeśli zrobie tak: SIGNAL(SIG_UART_RECV) { sbi(PORTD,7); } to dioda zapala się. kwarc jest 16MHz czyli UBRR = 25(UBRRH =0x00, UBRRL =0x19) dla 38,4Kbaud #include <avr\io.h> #include <avr\interrupt.h> #include <avr\signal.h>...
Dzień dobry! Mam taki kod: [syntax=c]#include <avr/io.h> #include <util/delay.h> //set desired baud rate #define BAUDRATE 1200 //calculate UBRR value #define UBRRVAL ((F_CPU/(BAUDRATE*16UL))-1) //define receive parameters #define SYNC 0XAA// synchro signal #define RADDR 0x44 void USART_Init(void) { //Set baud rate UBRRL=(uint8_t)UBRRVAL;...
mam kolejne pytanie :) napisalem kilka programikow, kompilator nie wywala bledow, ale i tak nie dzialaja i pewnie gdzies znowu mam jakis blad :( przejzalem dokumentacje juz chyba ze 100 razy i nie wiem co jest zle :/ moze ktos pomoze :D (predkosc 38400, kwarc 8MHz) #include <avr/io.h> #include <avr/signal.h> #include <avr/interrupt.h>...
Witam! Napisałem na szybko kod odbierający po 8 znaków z komputera. Pierwszy znak "?" jest znakiem startu. Następne 7 to dwie liczby (trzy i dwucyfrowa). Mikrokontroler nie odczytuje (poprawnie, bądź wcale) ostatniego znaku, wcześniejsze są ok. Nie wiem, gdzie mogłem się machnąć w tak prostym programie. Ze strony komputera korzystam z terminal by br(at)y....
Witam! Od wczoraj siedze nad tym kodem i nie moge odebrac string'a w "calosci". Wysylanie pojedynczych znakow oraz calych tekstow dziala prawidlowo jak rowniez odbior pojedynczych znakow. Jednakze jak probuje odebrac string - nic z tego. Ponizej zamieszczam kod: #include <avr/io.h> #include <stdlib.h> #include <util/delay.h> typedef...
zamiast TIMSK1 użyj TIMSK gdzie znajdziesz ICIE1 PSRSYNC w M32 nazywa się chyba PSR10 i jest w SFIOR a nie w GTCCR jak w M168 Tak, to dało rozwiązanie, że kod mi się kompiluje. Problem w tym, że na wejście dostaje sygnał 50 Hz (ramka trwa 20ms) a sygnały wysoki w przedziale 0-2 ms. Obojętnie jakie dam wypełnienie (0-2ms) to ciągle na z tego kodu otrzymuje...
Mam problem z ukladem PL-2303 firmy prolific. Pochodzi ze starego kabla do telefonu nokia z USB po stronie PC oraz rs po stronie wyjscia ( 3 kabelki, GND,rx,tx). Testowalem go robiac null - modem, przy uzyciu programu COM Terminal .NET na windows vista ( vista wgrala drivery z netu dla tego ukladu ). Dzialalo swietnie! Dostawalem echo. Układ emulował...
Witam, mam problem z nawiązaniem połączenia przez układ MCP2200. Jest to konwerter USART=>USB. Korzystam z programu z strony: http://mikrokontrolery.blogspot.com/2011... Kod programu: http://obrazki.elektroda.pl/3793960700_1... Wszystko robię tak jak jest opisane na stronie, po podłączeniu układu...
Witam oto mój kod obsługi przetwornika A/C i niestety jest problem w terminalu odbieram tylko same jedynki. #define F_CPU 8000000 #define UART_BAUD4800 #define UBRR(F_CPU/(16ul*UART_BAUD)-... #include <avr/io.h> #include <avr/interrupt.h> #include <string.h> #include <stdlib.h> //Inicjalizacja UARTU void USARTInit(unsigned...
wyczyściłem trochę kod, żeby nikogo nie mylił i załączam zrzuty ekranu debuggera (w momencie wejścia w miejscu "usartt"). Wg mnie jest niby ok. .include "m8def.inc" .def temp= r16 .EQU SYSCLK = 1000000; częstotliwość pracy ; CKSEL(3..0) = 0001 (domyślnie dla wewn. oscyl.) ; uwaga: ptaszek w ponyprog oznacza 0 ; 0010 - 2MHz,...
Witam wszystkich Elektrodowiczów! Mam mikrokontroler ATtin2313, który pracuje na wewnętrznym oscylatorze 8 MHz (bez dzielnika CLK=8) . Chcę na nim zrobić transmisję szeregową po USARTcie w trybie normalnym asynchronicznym (U2X = 0) , z 1 bitem stopu i 8 bitami danych. Wcześniej robiłem transmisję na USARTcie, ale na ATmega8 i działało - tu nie chce....
Witam dokładniej rzecz ujmując jak mam w mainie gdziekolwiek funkcje odbierającą uart to adc przestaje działać adc jak tylko zakomentuje tą funkcję adc działa normalnie. Wyjściem jest użycie przerwań do UARTU ale to w ogóle nie działa... Program działa tak, że mierze 6 kanałami adc coś i jak to coś jest to wystawiam na nodze PB7 "1" podaje ją na INT0...
Cześć. Mam taki kod: sei() po wywołaniu wyświetlania tekstu na ekranie: [syntax=c]lcd_puttext_P(PSTR("Trwa lokalizowanie!"));[/syntax] Nic się nie dzieje. Jeśli jest tak jak teraz (//sei()), na wyświetlaczu pojawia się napis. Dodam, że jest to wyświetlacz na kontrolerze HD44780 podłączony do Atmegi32 w porty PD3-PD7 oraz PC0 i PC1. Fragment jest z deklaracją...
komputer <--> przejsciowka USB w oparciu o atmega8 <--> atmega8 Dodano po 26 void USART_Init( unsigned long int ubrr ) { UBRRH = (unsigned char)(ubrr>>8); // Set baud rate UBRRL = (unsigned char)ubrr; UCSRB = (1<<RXEN)|(1<<TX... // Enable Receiver...
Dobry wieczór, Mam problem z połączeniem mojej Amegi8 po UART z PC. Opierając się o wiedzę z blogu Mirka oraz przeglądając elektrodę w poszukiwaniu podobnych tematów ( #include <avr/io.h> #include <util/delay.h> #include <inttypes.h> #include <avr/interrupt.h> #include <string.h> #include <stdint.h> #define USART_BAUD...
Witam. Przedstawię dzisiaj kompletne rozwiązane jak szybko uruchomić za parę złotych własny terminal rs-owy w oparciu o konwerter USB RS232 na układzie scalonym PL-2303HX który można kupić bez problemu na Allegro. http://obrazki.elektroda.pl/9582806900_1... Przykład oparłem na programie putty z domyślnymi ustawieniami dla RS-a. Biblioteka...
Jasne, tu masz całkowitą racje UCSRC |= (1<<URSEL)|(1<<U... tej 3 ma nie być - aż sam sie dziwie,że coś takiego napisałem. Fakt, datasheet wskazuje na te sam adres... Nie zauważyłem tego wcześniej. Dzieki wielkie za to! Ale tematu na wszelki wypadek jeszcze nie zamykam. Dodano po 32 Niestety, dalej...
Witam panowie. Zagadka jest taka. Jest sobie arduino uno, ale programuję je bez bootloadera, bezpośrednio w c w avr studio wersja 4. W pewnym momencie w programie startuję timer 2 w trybie CTC i używam go jako wyjście zegarowe dla bufora. Timer 2 ma ustwienia prescalera na 1 i rejestru porównawczego na 7, co daje ze wzoru przy częstotliwości uC 16Mhz,...
Witam Problem udało się rozwiązać. Przelutowałem jeszcze raz max232. W tej chwili avr odbiera dane (zwraca echem w celu sprawdzenia) a w zależności od wyniku zaświeca jedną z 4 diod. Jest to najprostsza komunikacja Uart dla atmega32 bez buforów i korekcji transmisji jednak dla moich celów w zupełności wystarczy. Dodatkowo wrzuciłem funkcję wysyłania...
Witam. Od dłuższego czasu "walczę" z przerwaniem, które nie chce się za nic wykonać. Zrobiłem już wszystko co potrafiłem, ale niestety brak reakcji. Chodzi tu o układ z obsługą dysku twardego, który połączony jest z komputerem za pomocą MAX232 (RS-232). Procesor to Atmega32 z wewnętrznym oscylatorem 8MHz. Pętla "echo" działa. Dane wracają. Może ktoś...
Kończę właśnie mojego Hexapoda. Rozbudowuje komunikację pomiędzy dwoma atmega16. Jeden to sterownik serw a drugi oblicza kinematykę i struje wyświetlaczem LCD. Otóż problem polega na tym że transmisja jest pełna błędów. Uśredniając to co 5-6 transmisja jest prawidłowa. Ustawienia USARTu: UBRRL=0x33; UBRRH=0; //ustawienie prędkości transmisji dla 9600...
Witam, miałem oto taki kod jak poniżej, działał normalnie czyli po resecie wysyłał liczbę 23 w kodzie ASCII. [syntax=c]#include <avr\io.h> #include <inttypes.h> #include <util\delay.h> #include "uart.h" const uint8_t tabela_losowa[16] = {66, 11, 89, 100, 45, 2, 67, 24, 65, 10, 33, 6, 91, 21, 15, 72}; int main(void) { uart_init(); uart_wyslij_int(23,...
Witam, docelowo chcę zrobić program, gdzie za pomocą Realterma będę wysyłać ciąg znaków,a następnie je odsyłać z powrotem w celu potwierdzenia, czy ciągi znaków są identyczne. Niestety póki co mam z tym problemy, na dobry początek chcę wysłać do Realterma konkretne znaki ("aaa"), ale dostaje zupełnie inne symbole, czy wiecie skąd się to bierze? Poniżej...
Wrzucam moją wersję programu do obsługi 4 serw. W ostatnim tygodniu zakupiłem swoje pierwsze dwa serwa, więc mogłem się pobawić problemem ich sterowania. Z powodu, że mam tylko dwa, jedynie dwa kanały są sterowane z przetworników ADC. Pozostałe są obsługiwane przez przerwania, ale nie ustawiane. Wartości dla serw wpisuje się w tablicy serwa_val[]. Doświadczalnie...
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...
Nigdy nie był mi potrzebny USART a tu wyszło że potrzebny i to jeszcze w przerwaniu. Siedzę już kawałek czasu nad tymi wypocinami i nic mi do głowy nie przychodzi. Proszę o pomoc - co jest nie tak. #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> void Led_RED(unsigned char value) { if (value)...
Witam Próbuję napisać obsługę pilota, który używa kodowania [url=http://www.ustr.net/infrared/nec.sh... Następnie chcę przesłać kod na okno terminala za pomocą USART. Próbuję to realizować bez użycia funkcji typu delay_ms(), zamiast tego chcę użyć przerwań. Idea jest taka, że po pojawieniu się pierwszego zbocza od odbiornika podczerwieni, wywoływane...
witam, mam problem z przyciskami na porcie c, program nie reaguje na nie, na innych portach działa bez problemów, testowałem na 4 atmegach i na każdej jest to samo. Program jest bardzo łatwy po wciśnięciu przycisku wysyła odpowiednią liczbę na port TXD. AVCC jest podpięte do VCC, wszystko jest na płytce prototypowej. Co może przyczyną takiego zachowania...
resistor value ranga value value pivot
wtórnik katodowy ecc83 otwarcie drzwi uzbraja elektryczna tylna klapa
vestel 17mb185 lodówka sterowanie
Termet Silver Pro: Optymalizacja parametru P03 Ustawienie parametru P03 w Termet Silver Pro bez czujnika pogodowego