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...
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ć...
Jeszce jedno: czy rejestr UCSRA jest rejestrem w którym znajduje się odebrany znak? Jeśli się mylę poprawcie mnie. Nie.... i....D O K U M E N T A C J A :))) (w sumie masz to już napisane przez co się odbiera... pomyśl trochę..)... Te funkcje są do solidnego przerobienia:) Weź jak już umiesz coś wysłać i odebrać, spróbuj to zrobić w przerwaniu i zrób...
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...
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...
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...
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...
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...
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>...
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...
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...
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 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...
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...
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...
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...
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.
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.
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...
"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))...
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ć...
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...
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...
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...
Teraz udczyt masz jak zwykle dwie możliwość pulling i przerwania - pulling jest prościutki unsigned char USART_Receive( void ) { /* Testujesz flagę RXC w rejestrze UCSRA */ while ( !(UCSRA & (1<<RXC)) ) ; /* I czytasz z UDR jak w SBUF w 51*/ return UDR; } a teraz z przerwaniami :) Tutaj podobnie jak...
Mój problem polega na tym, że atmega ma otrzymać polecenie w trakcie wykonywania pętli, wysyłam więc 100 razy jedną liczbę w każdym cyklu pętli sprawdzając stan linii RX. Mógłbyś wyjaśnić w jakim celu wysyłasz 100 razy to samo. Gdy program wychwyci zmiany na RX robi goto do funkcji odczytującej jedną ze 100 wysłanych identycznych liczb Nie bardzo rozumiem...
uszkodzony rejestr rejestr przesuwny rejestr cd4094
antena zewnętrzna radia oporność głośnik tranzystor polowy duży
magazyn energii magazyn energii
Szuflada nie otwiera się w wieży Samsung MM-MP3 Płyta główna Foxconn RS740M03-8EKRS2H - specyfikacja i zastosowanie