Jak pojawiaja sie krzaczki to jest problem z predkoscia. W jakim programie piszesz? Jaki masz kwarc? Dodano po 11 Zobacz czy dziala Ci to: // Sterownie diodą LED podłączoną do dowolnej linii mikrokontrolera // za pomocą dowolnego znaku odebranego z portu szeregowego // mikrokontrolera i wysyłanie jej stanu na port szeregowy #include <avr/io.h>...
(...) if(odb_flaga) {at_komenda_sprawdz();}... } } Kod robi takie błędy --> Na początku sam wykonuje case 0, po nim mogę wprowadzić case 0 jeszcze raz po czym pętla się kończy a chciałem mieć możliwość nieskończonego wybierania klawiszy . Case 1 nie chce działać Na podstawie podanego fragmentu kodu trudno dokładnie...
Co do wysyłania to myślę użyć tej funkcji: void wyslij (char c) { while(!( UCSRA & _BV(UDRE) )) ; UDR = c; } którą wywołałbym tak: wyslij(zmienna); gdzie zmienna to jakis tam odebrany wczzesniej znak. Teraz zastanawiam się jak przerobić funkcję odbierajaca znaki: char odbierz (void) { loop_until_bit_is_set(USR,RXC);....
Witam ! Czy ktoś mógłby podsunąć mi pomysł jak wykryć odłączenie urządzenia (telefonu) od portu szeregowego RS232 ? Próbuję sposobu: wysłać do tel. jakąś komendę, poczekać chwile i sprawdzić flage RXC z rejestru UCSRA - taki sygnał że rejestr UDR nie odebrał żadnego nowego bajtu, czyli że telefon jest odłączony.. Niestety nie do końca chce to działać...
Witam Bardziej profesjonalnie jest wszystkie układy potraktować jako slave . Każdy słucha i czeka na przerwanie z uarta , jak je otrzymuje odbiera zawartość z udr porównuje i albo odbiera dalej albo ignoruje i czeka na kolejny adres . Atmel wyposażył układy w tryb multimaster ,który się do tego świetnie nadaje i warto o nim przeczytać w dokumentacji...
Obydwa gniazda mam podłączone do w max232, gdzie R1OUT i T1IN są podłączone do RXD0 i TXD0 a R2OUT i T2OUT NA RXD1 i TXD1. Deklarując się w programie na rejestr UCSR i UDR na 0 lub 1 oznacza to ze będzie działać tylko jedno z gniazdek ??
Witam, Ostatnio również ja, skuszony możliwościami układów rfm12, postanowiłem zakupić dwa moduły tego typu (433 MHz). Śledząc ten wątek natknąłem się na kod użytkownika avatar , postanowiłem wykorzystać go więc w mojej aplikacji. Niestety, po podłączeniu modułów do procesorów nie zachodzi żadna transmisja. Po pewnym czasie nierównej walki z w/w nasunęło...
Witam! Bardzo rzadko wysyłam posta z pytaniem na elektrodę, zazwyczaj sam znajduję odpowiedź, lecz tym razem stanęłem w miejscu. Próbuję zaprogramować uC ATmega 8 żeby poprzez rs232 komunikował się z komputerem, za pomocą USART. Podłączyłem maxa232 zgodnie z datasheetem, program wygląda następująco: .INCLUDE "m8def.inc" ;czesc systemowa 1MHz...
Witam Mam problem z ultradźwiękowym miernikiem odległości na atmedze8. Generacja częstotliwości przebiega prawidłowo, na odbiorniku za torem wzmacniaczy otrzymuję widoczny syglał odbity od przeszkody. Błędy pojawiają się przy komparacji sygnału z napięciem referencyjnym. Wynik jest bardzo niedokładny, ponadto od drugiego bądź trzeciego pomiaru procesor...
Mam taki kod jak niżej. Chcę odczytać ekspander po SPI i wysłać jego wartość na PC przez uart. No i jak nic nie jest podłączone do Atmegi, atmega wysyła albo wartość 0xFF albo 0xf8 rejestru SPDR. Dlaczego? Czy czasem rejestr SPDR nie powinien być pusty (wartość 0x00) przy odbiorze danej z niepodłączonego pinu MISO, MOSI, SCK czy CS? Czy podłącze MCP...
Proponuję uprościć kod do minimum, i skupić się na zegarze. Można albo użyć zewn. sygnału, ale wymaga to tyle samo pracy co przylutowanie kwarcu na pająka, a jest o tyle ryzykowne, że jak nie coś nie zadziała, to nie przeprogramujesz już układu. Z jakiego napięcia zasilasz układ? Wewn. oscylator jest kalibrowany pod 5V, jeżeli masz mniej, to zamiast...
A mógłbyś mi jeszcze pomó w takim czyms? ; Mam problem. Pisze program do komunikacji przez port UART, żeby móc wysyłać tekst i odbierac. Niestety coś mi to nie dziala. Kopiluje sie z jednym warningiem. Kod wygląda tak : #include <avr/io.h> // dostęp do rejestrów #include <avr/pgmspace.h> #include "uart.h" // Zmieniając poniższe definicje...
Witam, czy moglby ktos sprawdzic mi czy taki program powinien zadziałac i co robie zle ze nie działa #include <avr/io.h> #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) #define FOSC 8000000ul // // Clock Speed #define BAUD...
Ponieważ jest to mój pierwszy post chciałbym wszystkich serdecznie powitać :). Mój problem polega na tym, że nie mogę ustawić połączenia uC <-> PC z Atmegą 128. Przy AT16 wszystko jest w porządku, a ze 128 wyświetla mi nieprawidłowe znaki w Terminalu. Przy transmisji dioda się świeci i i wszystko poza tym działa jak powinno. #include <avr/io.h>...
jestem amatorem(poczatkujacym), prosze o wyrozumialosc musze zmodyfikowac program aby uzyskac -obsługę przycisków w ten sposób, aby w oknie terminala ukazywał się komunikat z numerem wciśniętego przycisku -efekty świetlne polegające na sekwencjach migania diod LED (disco ;-)), przy czym wybór sekwencji odbywałby się poprzez wysłanie z terminala numeru...
Witajcie mam następujący problem, mam prosty program do wysyłania 1 oraz 0 w odstępie co sekundę. Jednak zamiast tego są jakieś krzaki. Moje pytanie w czym może leżeć problem, załączam kod, oraz wygląd na terminalu, kolejne pytanie to czy muszę programować fuse bity do odpowiedniego działania UARTA czy to właśnie przez to jest problem, oraz co się mogło...
Piszę dla tych którzy się męczą z tym tematem. Układ testowy zmontowany na "piechotę". https://obrazki.elektroda.pl/8653043800_... https://obrazki.elektroda.pl/5199083900_... [syntax=c] /* * Mini radio na układzie RDA5807M * * Created : 2018-12-25 * Author : dasej * * Atmega644p 18.432MHz power 3.3V */ #define RDA5807M...
Witam. Mam problem z połączeniem się z ATmegą 2561. Wcześniej wszystko chodziło dobrze do czasu aż wgrałem poprzez avr studio program do obsługi USART0. Użyłem do tego programatora USBisp z wgranym STK500v2. Nie ustawiałem żadnych Fusebitów (domyślne AVR Studio). Teraz nie mogę się połączyć z nim w żaden sposób. Próbowałem również przez ISPProg i STK200....
Witam! Mam taki oto problem. Gdy chcę za pomocą uC skomunikować się z c45, to nie zawsze przyjmie on komendę AT, ponadto nigdy mi nie odpowiada:( dla przykładu: na komendę UART_sendstring("ATD+48886160558\n\r"); telefon odpowiada, próbuje zestawić połączenie, ale tego nie robi, bo nie jest to tryb voice. na komendę UART_sendstring("ATD+48886160558;\n\r")....
Prosze o pomoc Jak zmienić ten kod programu by po naciśnięciu konkretnego klawisza klawiatury np. klawisz 'a' ma zaświecić diodę, klawisz 'b' ma zgasić diode. Po naciśnięciu innych klawiszy dioda ma niereagować #include <avr/io.h> // dostęp do rejestrów // Zmieniając poniższe definicje można dostosować program do potrzeb #define F_CPU 16000000ul...
Witam Na wstępie powiem że nie jestem ekspertem w C. Pisze programik działający na Atmedze16. Mam dwa dwa układy Ram i RTC i muszę się z nimi dogadać przez SPI. I się nie dogaduje. Zeby zapisać cos i odczytać z Ramu muszę zapisać (dla zapisu) kod rozkazu - 8 bitów, adres komórki zapisywanej - 24 bity i dane - 8 bitów. Przy odczycie analogicznie rozkaz,...
Dzisiaj miałem okazje popracować na oscyloskopie z analizatorem stanów logicznych. Po paru przeróbkach kodu udało mi się ustawić wszystkie wejścia (CS, DI, SCLK) tak jak jest w dokumentacji żyroskopu. Jedyną niepokojącą sprawą jest mały odstęp czasowy (około dwa bity) między przesyłem pierwszego i drugiego bajtu na wyjściach SCLK i DI. Nie wiem czy...
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, męczę się z tym programem już kilka godzin i nie mogę nic innego wymyślić. Mianowicie, rejestr UDR wg symulatora AVR Studio jest zerowany, ale na wg podłaczonego wyświetlacza siedmio-segmentowego bez względu na to co faktycznie jest nadawane, zawsze odbierane jest 12 w rejestrze UDR. Dlaczego tak się dzieje? .nolist .include "m16def.inc"...
Moim problemem jest brak stabilności kodu dla tego mikrokontrolera. Kod skompilowałem w AVR Studio 4 z WinAVR w aktualnej wersji (2010). Kłopoty objawiają się poprzez skok do początku programu. Nie jest to reset - np. zakłócenia na linii RESET. Analizowałem rejestr statusu MCUSR. Początkowo przyjmuje on wartość 0x01, co znaczyłoby reset od POR. Jest...
Witam. Mam taki problem, gdyż chciałbym ogarnąć komunikację poprzez UART między dwoma mikro. Mam dwa uC: Atmegę 16, która działa jako master oraz Atmegę 88 jako Slave (na której będzie termometr, z którego będę odczytywał dane). Programy, definicje wyglądają następująco: plik RS485.h #indef RS_INT_H #define RS_INT_H //rozmiar buforów nadawania i odbierania...
co oznacz U2X = 0 , U2X = 1 ?? To też jest w pdf'ie. U2X to bit w rejestrze UCSRA. Bit odpowiedzialny za dwukrotne zwiększenie prędkości komunikacji.
No to ja tu widzę jeszcze taki dinks: W kodzie masz napisane, że prędkość transmisji to 9600. Zakładam, że mimo wszystko zostałeś przy zegarze procka 1MHz. Z tego zaś wynika, że jeśli do UBRRL wstawiasz 12, to twoja prędkość to nie 9600 a 4800. Drugą opcją jest to, że musisz załączyć bit U2X w rejestrze UCSRA (wtedy będzie 9600).
... ale wtedy musisz mieć pewność, że obsłużysz to przed pojawieniem się kolejnej sytuacji ustawienia flagi przerwania. Oczywiście TIFR to tylko przykład, bo flagi są także w innych rejestrach, np. TXC w UCSRA.
Rezystory muszą mieć wypadkową rezystancję około 120 Ω. Co daje 390Ω dla każdego rezystora. Nie jest konieczna masa, zegar RC procesora też może być. Należy zwracać uwagę na odczyt błędu ramki (rejestr UCSRA) przed odczytem z UDR. Oczywiście kod CRC jest niezbędny. Topologia gwiazdy, którą przedstawiłeś, raczej nie jest poprawna. Na początek...
zmieniło się to wtedy gdy we wtczyce odpiąłeś mase, a dałeś zamiast baterii zasilanie tak ? i w urządzeniu wykorzystujesz ten drugi program co podałeś tak ? a cóz to jest? 'Ubrr = 207 '4800 bps przy U2X=0 'Ubrr = 51 '19200 bps przy U2X=0 'Ucsra = &B00100000 'rejestr UCSRA 'Ucsrb = &B10011000 'Ucsrc = &B10000110 Czy ten drugi program korzysta ze sprzętowego...
Przerwanie od odbiornika jest wywoływane w momencie kiedy dana jest gotowa w rejestrze, więc ta pętla do while jest niepotrzebna (zresztą ona jest wręcz nie wskazana bo wydłuża obsługę przerwania o nie wiadomo ile czasu). Poza tym proponuję jeszcze w M8 sprawdzac rejestr UCSRA, w nim są zgłoszone ewentualne błędy (szczegóły w manualu). Poniżej działająca...
Proponowałbym sprawdzać bit UDRE w rejestrze UCSRA, tak jak zaleca DataSheet na stronie 122
Procedura "USART_Transmit" wykorzystuje sprzętowego USARTa ATmegi8. Działa ona w ten sposób, że najpierw sprawdza czy bufor w którym przechowywane są dane do transmisji jest pusty. Jeżeli nie jest pusty to czeka na jego wyczyszczenie, gdy stwierdza, że jest już pusty to wpisuje dana którą przekazujesz jako parametr do rejestru UDR, i transmisja odbywa...
A czym ustawiasz rejestr UCSRA = ? . W nim jest bit odpowiedzialny za podwojenie prędkości usarta.
Z tego co się tym bawiłem, to nie dostrzegłem, żeby w AVRach można było jakoś odczytać wartość bitu parzystości. Można odczytać z rejestru UCSRA bit PE, który mówi o błędzie parzystości przy transmisji. To tyle, co ja wiem.
Nic, po prostu koledzy mają problemy z interpretacją kodu. Zapewne dla nich loop_until_bit_is_set(UCSRA,UDRE)... to ustawienie bitu UDRE w rejestrze UCSRA, a nie czekanie dopóki w/w bit jest ustawiony. Oczywiście UDR=ch; nie powoduje wysłania żadnych danych przez UART.
Przesyłaj ciąg aż do napotkania znaku o kodzie 0x00 czyli końca ciągu: void send_txt(char *text) { while(*text != 0) { UDR = *text; _delay_ms(100); text++; } } A wysłanie znaku lepiej sprawdzić poprzez flage UDRE (USART Data Register Empty) z rejestru UCSRA. Jeżeli jest ustawiona to można do rejestru UDR wpisywać...
Chciałem obserwować stan bitu TXC w rejestrze UCSRA, ponieważ program zatrzymywał mi się na: loop_until_bit_is_set(UCSRA,TXC)... ale właśnie do mnie dotarło, że ten warunek powinien być sprawdzany po wysłaniu, a nie przed. Chociaż i tak dobrze było by móc sprawdzić stan dowolnego bitu w dowolnym rejestrze i wyświetlić go na LCD.
Wrzuciłem te procedury do watomierz.c i wyskoczyły błędy Usuwam procedury i wszystko OK Bo te procedury są przeznaczone dla innego typu procesora. AT90S2313 nie ma takich rejestrów jak UCSRA czy UBRRL.
Aby przyspieszyć komunikację po uarcie: - włącz bit u2x w rejestrze ucsra - przesyłaj dane w formacie Hex a nie bin. Zmniejszysz ilość przesyłanych znaków. Aby przyspieszyć działanie programu: - przenieś konwersję adc na przerwania. W momencie oczekiwania na koniec konwersji będziesz wysyłać dane po uarcie. Mam nadzieję że pomogłem.
Problem rozwiązałem, choć nie do końca rozumiem. Ustawiłem bit URSEL w rejestrze UCSRC. Teraz działa jak należy, tzn. przy prędkości 9600bps wysyła kilkaset liczb na sekundę. Doczytałem, że ten bit służy do wyboru rejestru UCSRA lub UBRRH. Czy ktoś mógłby mi wyjaśnić na chłopski rozum, do czego służy ten bit?? Bo w tym momencie program działa, ale sam...
Dawno nie zajmowałem się AVRami, ale z tego co pamiętam, przed każdą operacją transmisji znaku poprzez USART należy skasować bit TXC z rejestru UCSRA. W przypadku, gdy używasz przerwań bit ten jest kasowany automatycznie w trakcie wywoływania obsługi przerwania od zakończonej transmisji. W Twoim przypadku, aby manualnie wykasować ten bit, należy ustawić...
"Usart Transmit Complete" w rejestrze UCSRA i może w pętli while oczekiwać na jej ustawienie i dopiero przełączać kierunek. int USART_Transmit( unsigned char data ) { PORTB|=_BV(2); waitms(1); //dla pewności, że max485 się przełączy while ( !( UCSRA & (1<<UDRE)) ); UDR = data; while (bit_is_clear(UCSRA,TXC))...
mega 16 juz działa sprawnie:) natomiast z tiny2313 mam klopot bo rejestry mam ustawione identycznie chodz nie ma on najstarszych bitow z UCRSC oraz UBRRH ale wgranie do nich czegokolwiek raczej nie zaszkodzi bo maja atrybut only read moje rejestry UCSRB = 0x1c; UCSRA = 0x00; UBRRH = 0x00; UBRRL = 0x03; UCSRC = 0x86; UDR odczytuje mi jako 0xff a wysyłam...
Najpierw spróbuj może dodać: ...ale jak ustawię ręcznie bit UDRE w UCSRA który oznacza że bufor jest pusty, także nic się nie wysyła. To nie jest argument. Flag przerwań w AVR generalnie nie da się ustawiać programowo, niektóre można tylko wyzerować. Akurat UDRE można wyzerować tylko poprzez wpisanie bajtu danych do rejestru UDR, flaga ustawiana jest...
Pokaż schemat połączeń tego układu, bo rozpisanie w dziedzinie czasu tego co wysyłasz i tego co odbierasz pokazuje, że chyba masz odwrotną polaryzację sygnału i nieznacznie rozjechaną prędkość. Od strony programowej widzę tylko brak inicjacji wartości rejestru UCSRA i kilka drobnych błędów, które nie powinny wpływać na pracę. Np. ubrr_value>>16 jest...
Witam, Mam problem z procesorem ATMega8 oraz transmisja uart. Skopiowałem z datasheet'a kod pozwalający wysyłać dane za pomocą rs232. Kłopot jest w tym, że nie jest ustawiana flaga UDRE, oznaczająca wolny bufor nadawania przez co wchodzi w nieskończoną pętlę. Pytanie: DLACZEGO?? Testowałem na dwóch komputerach w GCC i ASM i zawsze to samo. Jakieś sugestie...
Mam ciekawy problem. Chciałem aby przerwania od UARTA były INTERRUPT. Nie można jednak tego zrobić, bo flaga przerwania jest kasowana po operacji na UDR a nie powejściu w IRQ tak jak np w przypadku timerów.Gdy zadeklaruje sie więc przerwanie INTERRUPT to natąpi przepełnienie stosu. W konsekwencji trzeba użyć przerwania SIGNAL, w nim wykonać operację...
Witam, Napisałem program do obsługi USART-a, ale nie chce on poprawnie wysyłać znaków. Atmega8A, 8MHz-kwarc, 19200. W kodzie pokazałem problemy: [syntax=c] #include <string.h> #include <avr/io.h> #include <stdlib.h> void uart_puts(char *s); int main(void) { // zapis rejestrów USART UCSRA= 0; UCSRB=0x18; UCSRC=0x86; UBRRH=0; UBRRL=25;...
rejestr modbus chrome rejestr rejestr assembler
schemat chassis 11ak36 wymiana grzałki silnik napędu bramy hormann
interfejs multidiag interfejs multidiag
ZCD 7106 6925 Android 10 firmware download location, APK 3, update.zip, safe flashing tips Bosch wiertarka – montaż blaszki sprężynki pod przyciskiem lock, szkic ułożenia