Przykładem może być układ TTL 74150 . Lub tak jak napisałem połączenie z diodami zmieniające działanie wyjść na zbliżoną do wyjść "OC" diody powodują że aktywnym stanem który będzie dominujący to stan niski na dowolnym ADM , jednak takie rozwiązanie ma wady jeśli nastąpi zwarcie wymuszające zero na jednym ADM reszta milknie ... Diody trzeba dać przy...
A z jakiego terminalu korzystasz? Bo na obrazkach masz ustawienia portu tylko. Kiedy korzystasz z usartu nie musisz ustawiać kierunkowości portu. Po włączeniu RXEN i TXEN piny te automatycznie są wykorzystywane przez usart i procek sam nimi steruje (przynajmniej w usart0). A dlaczego nie korzystasz z usart0? Wykorzystujesz go juz? uint8_t uart_getchar(void)...
Jeśli włączysz diodę to musisz ją też wyłączyć. /**************** Funkcja włączajaca port PD4 *****************/ void przycisk(uint8_t c) { if (c=='w') { PORTD |= 1<<4; } else { PORTD &= ~(1<<4); } }
Jest to zdefiniowane w io.h, tyle, ze ma inne nazwy rejestrow - zobacz plik iom128.h. Nazwy podane w DS nie zawsze pokrywaja sie z tymi z AVR-libc. ATMega128 ma 2 USARTy, wiec np. UCSRA dla USART0nazywa sie UCSR0A, a dla USART1 UCSR1A.
3) Generalnie na początku makra SIGNAL wyłączane są przerwania (funkcja cli), a na końcu są odblokowywane (sei), tak więc nie ma zagnieżdżenia przerwań, po prostu niektóre pomiary gubisz. 2) wg noty katalogowej do masy przez kondensator 1) jeśli ich nie używasz, to należy je ustawić jako WYJŚCIE, i można na nich ustawić stan 0. Nie powinny wisieć w...
Witam Chciałbym przez rs232 zapisywać zmienne z pliku txt do zewnętrznej pamięci eeprom np. 24Cxx z których będzie korzystał mikrokontroler atmega128. Od czego zacząć? Czy to będzie bardziej rozwiązanie polegające na programie w mikrokontrolerze zasysającym dane z txt i wczytującym je do eeproma czy zrezygnować z drogi mikrokontrolera i programować...
Witam! po pierwsze musisz upewnić się czy operacje zapisu i odczytu faktycznie działają. Z tego co zaobserwowałem, zaraz po uruchomieniu RTL8019AS wybrana jest strona 0 rejestrów. Jest tam taki rejestr zwany BNRY do którego można zapisywać wszystkie wartości z przedziału 0-255 i odczytywać na tej samej stronie. W związku z tym zrób taki test zaraz na...
Witam. Pojawil sie kolejny problem z atmega 128. Probuje za pomoca max232 wyslac sobie na rs dane. od strony komputera nasluchure RS232 czy nadaje atmega za pomoca bushound i cisza. Max 232 podlaczlem do PE0 i PE1. Myslalem aby to zrobic za pomoca usart. Zrobilem jakiegos byka w kodzie?? #include <avr/io.h> #include <avr/iom128.h> #include...
Dziękuję za zainteresowanie moim problemem. W ferworze walki poplątałem wiersze, ale było dobrze jak jest teraz i problem nadal istnieje. Program piszę w studio4, nazwy bitów były umieszczone w nawiasach i bez też nie pomogło. SP oto program: [syntax=text] .nolist .include"m128def.inc" .list .defAL = r24 .defAH = r25 ;akumulator .equ SYS_FREQ_HZ = 8000000...
...jak wiadomo aby wyliczyc predkosc usarta trzeba posluzyc sie wzorem: UBRR=(foscylatora / 16BAUD)-1 ...wiec np jezeli chce miec predkosc 115200 przy oscylatorze 14.7456MHz UBRR wyjdzie ladnie 7... ..a teraz zasadnicze pytanie czy z Atmegi128 wycisnie sie transfer 921600...(zaznaczam ze komunikacja pojdzie przez kostke FTDI, ktora jest w stanie...
Witam wszystkich Problem wygląda następująco, nie mogę odebrać żadnych danych za pomoca uarta1 atmegii 128 (poprawnie wysyła ale nic nie odbiera ;/ ) Prosiłbym o wszelką pomoc, poniżej wklejam programy inicjalizacji i odbioru: [code][syntax=c]void USART_Init( unsigned int ubrr, unsigned int port) { switch (port) { case 0: /* Set baud rate */ UBRR0H...
Myślimy że skoro Atmega128 ma wiecej niż jeden USART to problemu chyba nie widze.
Witam ponownie, sprawdziłem na ATmega128 i USART działa, co prawda nie przesyła wszystkich znaków- gdy każę mu wypisać wszystkie od 0 do 255, przeskakuje co jakiś czas o kilka znaków. Co tym razem? Pozdrawiam....
Witam. W trybie MULTIPROCESOR ATMega128 może współpracowac ze 128 innymi kontrolerami wykorzystując jeden USART ;) Pozdrawiam.
Chciałbym Ci przypomnieć że Atmega128 ma 2 uarty więc kod void wyslij(unsigned char data) { while((UCSR0A&(1<<... == 0); UDR0 = data; } jest błędny. Rejestr UCSR0A nie ma takiego pola jak UDRE ale UDRE0 (strona 189 datasheet). Jeśli to nie pomoże, zamieść schemat elektryczny, może tam jest błąd.
Różnica jest olbrzymia. Napisz program wysyłający dane i przeanalizuj go w sytuacji, gdy masz bufor i gdy go nie ma. Jaka jest z jego punktu widzenia? I tak może zapisać jeden bajt na raz, tak że obsługę dosyłania kolejnych musi napisać sam. A tak przy okazji czy atmega128 ma tryb usart spi mode? Bo datasheet o tym milczy (a bit 7 rejestru, kóry powinien...
no tak... jak zwykle macie racje... ;) zaczalem sie troche bawic dzis kodem i doszedlem do tych przerwan odczytu... ale utknalem... dalem sei(); ale to nic nie zmienialo. teraz wszystko wyglada tak: #include <avr/interrupt.h> #include <inttypes.h> #include <stdlib.h> #include <math.h> #include <avr/io.h> #define F_CPU 14745660...
Atmega128 i wyższe. Mniejsze mają tylko po 1.
Właśnie tu jest pies pogrzebany ;-) Na gotowej płytce mam już układ PDIUSBD11 . Nie mogę użyć FT232 lub CP2102 bo wszystkie USART'y w ATmega128 mam już zajęte. Teoretycznie mogłbym użyć jakiegoś multipleksera np. 74HC244 do przełączania portu USART lub na innych portach programowo zrobic USART, ale płytkę mam już gotową, elementy przylutowane i to,...
(at)osctest1 Nie wiem. Może ty odpowiesz na to pytanie? Tablica globalna char znak (at)Sareph Tak wiem że jest wolniejszy dostęp do tej pamięci.
Nie działa, tzn. co wysyła? Pierwszy przykład nie może poprawnie działać bo funkcja oczekuje typu bajtowego (0-255), a przekazujesz jej liczbę reprezentowaną przez int. Drugi przykład powinien działać o ile USART jest poprawnie skonfigurowany.
Z tego co mi wiadomo to w przerwaniu od odbiory poprzez USART w atmegach trzeba w ogole przeczytac rejestr UDR !! Na pierwszy rzut oka ponieważ flaga przewrwania nie jest czyszczona ( warunkiem jest odczytanie UDRn ) i zanim funkcja od LCD zdazy cokolwiek zrobić wywolywane jest kolejne przerwanie od odbioru.
Dodam, że sam program bootloadera reaguje na przycisk, zapala diodę a jak dodałem na chwilę programowe echo dla USART to również działało więc hardware jest RACZEJ ok. BOOTSZ mam ustawiony na największy rozmiar (nie pamiętam już jaki).
Witam ponownie, dzięki za pomoc, udało się program skompilować i nawet wszystko działa. Jednak jedynie na symulatorze, mam problem z przeniesieniem tego na procesor. Po uruchomieniu procesor przesyła jedynie powitanie: "FatFs R0.07d test monitor for AVR\n", natomiast na każdą próbę wysłania komendy odpowiada jedynie echem i nie wykonuje żadnych operacji....
Witam! Musze w dość krótkim czasie (około 1.5 miesiąca) nauczyć się programowania procesora ATmega128. W związku z tym pytanie: gdzie można znalezć przykładowe programy pod ten procesor np. inicjalizacja USART i transmisja w trybie asynchronicznym, obsługa przerwań zewnętrznych, obsługa magistrali I2C itd. Najlepiej żeby były w asemblerze i C :-D Dzieki....
Na każda diodę potrzebujesz wysłać 24 bity danych, czyli w sumie dla 600 diod, wychodzi 14.0625kb, musisz zrobić to 4x na sekundę, to prędkość transmisji wychodzi 56.25kbps. WS2812 najlepiej sterować przez USART. 56kbbs to nie jest duża prędkość dla USART Coś tu źle liczysz. Aby sterować WSami z USART potrzeba przepływności 2,4Mb/s a takiej, na AVR...
Witam. Próbuję przesłać i odebrać znak pomiędzy atmega128 a putty. ATmega taktowana kwarcem 14.7456MHz. Korzystam z przejściówki USB<->RS232 (z atmega32 działa). RXD/TXD skrosowane. KOD: uart.c : [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <stdlib.h> #include "uart.h" volatile char c_in; // odebrany znak...
USART w AVR działa z połową (max) prędkości procka... U mnie i2c(linia SCL) wyciągała 500kHz/8MHz USART w trybie synchronicznym może wyciągnąć nawet połowę szybkości CPU, w trybie asynchronicznym 1/16 lub 1/8 f_CPU więc spokojnie mozesz zapchać łączę w 100%.
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 serdecznie. Napisałem prosty program do pomiaru częstotliwości. Chcę wykorzystać TIMER3 do pomiaru częstotliwości. Na wejście podaję sygnał prostokątny z generatora. Nie jestem pewien czy na wejście T3, czy na ICP3 powinienem podawać badany sygnał, ale program nie działa w obu przypadkach. Poniżej prezentuję kod programu i proszę o pomoc, co robię...
mati1988k --> zapamiętaj, zawsze zajrzyj na ostatnią stronę rozdziału UART lub USART w nocie PDF . Masz tam tabelki i wszystko policzone na gotowo. Więc jak to może być że nie możesz znaleźć hmmmm??? KAŻDY procek AVR posiadający UART ma to samo w nocie.
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...
Kilka razy kolega Piotrus_999 wrzucał tutaj kod. Niestety nie wytrzymał on "elektrodowego review":) Oczekuję rewanżu, zwłaszcza od kolegi (at)Piotrus_999. Proponuję kolegom zażyć valium, znaleźć dziewczynę (chłopaka, coś innego w zależności od preferencji) , lub pojechać do sanatorium Post raportowany. Prosiłem i tłumaczyłem n-razy. Nie zostawia kolega...
Witam, Tak jak w poprzedniej odpowiedzi pisałem USART działa. Jednak pojawił się problem, że nie działają mi przerwania w USART. Za pomocą kodu: ;***************************************... USART0_Receive: ; Odbiór USART0 ; czekaj aż bufor odbiorczy będzie pełny sbis UCSR0A, RXC0 rjmp USART0_Receive ; załaduj dane z rejestru...
Jak sterować PWM na wewnętrznym timerze? konkretnie potrzebuje 3 rozne, umie trochę programować w c, ale nie mogę zrozumieć jak to ma działać, ustawienie preskalera i tych innych "zmiennych" - nie wiem jak je nazwać, nie programowałem wcześniej uC, przeczytałem ten temat z kilku książek "Mikrokontroleey AVR w praktyce" Doliński, i podobnych o programowaniu...
Witam wszystkich, mam do Was prosbe, zamiesiclem w zalacznikach zgodnie z ich nazwa pliki z WinAVR, a dokladnie obsluge uarta dla ATMegi128...czy ktos moglby mi powiedziec, czy rzeczywiscie ten kod wszysztko co robi to po podlaczniu do procka zasilania wysyla na port kolejna wartosc...tzn to co jest w petli w main'ie?? Pod spodem zamieszczam sam kod...
Witam! Przeszukałem chyba całe forum i nie znalazłem rozwiązania na mój problem. Próbuje uruchomić UART pomiędzy prockiem a komputerem. Działa mi wysyłania, nie działa mi odbiór. SIGNAL (SIG_UART0_RECV) // USART RX interrupt { while (UCSR0A & 0x80) c = UDR0; } void UART_Init( unsigned int ubrr) { UBRR0H =0;...
Witam, Usiłuję zmusić ATmegę128 do komunikacji z komputerem przez RS-232. Niestety mam z tym duży kłopot. Procesor chodzi z kwarcem na 16MHz, a transmisja do komputera ma się odbywać poprzez wbudowany w procesor USART z prędkością 115,2kbps. Transmisja ma być w zasadzie ciągła do póki są dane do wysłania (a będą cały czas) i jedynie procesor będzie...
Witam. Jestem mocno poczatkujacy i prosilbym o pomoc z ukladem MAX232IN. Zmontowalem prosty uklad Atmega128 i komunikacja z komputerem pc przez COM, i konwerter MAX232IN. Do MAX-a uzywam kondensatorow 1uF podlaczonych nastepujaco: Vs+ przez kondensator do masy, Vs- przez kondensator do masy (zgodnie z dokumentacja techniczna moze byc do masy lub VCC),...
Nie znam tego kompilatora ale skoro to działało na ATmega8 to tylko się w 128 zmieniły adresy rejestrów oraz wektorów przerwań. Sprawdź to a najlepiej zobacz w listingu czy jest właściwie umieszczony wektor przerwania.
Witam, problem wygląda następująco - próbuję skomunikować się z komputerem i po części wszystko działa jednak nie do końca. Otóż na najmłodszych 4 bitach dane są poprawne natomiast na czterech najstarszych zawsze jest stała wartość 1011. Poniżej zamieszczam zrzut z terminala podczas działania programy typu echo. http://obrazki.elektroda.net/0_124337521...
Witam, prosze o sprawdzenie mojego programu bo moim zdaniem jest OK a wciąż nie chce zadziałać. Używając hyper terminal-a wysyłam znak poprzez RS232 do układu na USART0, chcę żeby po odebraniu znaku zapaliła się dioda podłączona do portu E. Hyper terminal mam skonfigurowany następująco: 4800b/s, 8bitow danych, bit parzystosci, 2 bity stopu, kontrola...
Wszystko się da, wystarczy napisać odpowiedni algorytm do software usart i już;]
40 linii to tylko 5 portów a ATmega128 ma ich przeszło 6 czyli w zupełności Ci wystarczy. Niektóre porty mają możliwość generowania przerwania jak się zmieni ich stan ale przy tej rozdzielczości (5ms) wystarczy skanowanie wszystkich wejść a po wykryciu zmiany zapisać bieżący czas w buforze. Po zerwaniu się wszystkich przewodów cały bufor możesz wysłać...
Nie, nie mam. Dodano po 22 W kodzie na temat USART'a, trochę namieszałeś. ATmega128 ma 2 USART'y. W jednym miejscu konfigurujesz USART1 a w innym używasz USART0. Polecam datasheet'a do ATmegi128, są tam też przykładowe kody dot. USART'a.
Witam, tak jak w temacie - chciałbym wysłać zmienną typu double przez USART. Niejako podobny temat zlokalizowałem pod tym linkiem: [url=http://www.elektroda.pl/rtvforum/to... lecz nie udało się mi wywnioskować jak to zrealizować. Mój tok rozumowania: 1. zmienna typu float/double zajmuje w pamięci odpowiednio 2 i 4 bajty w pamięci. Usart...
Podobne tematy: http://www.elektroda.pl/rtvforum/topic18... http://www.elektroda.pl/rtvforum/topic15...
1. Jakie prędkości masz po obu stronach? 2. Nie możesz tego zrobić sprzętowo? 3. Programowo robisz odbiór i nadawanie na przerwaniach i przepisujesz z jednego bufora dane do drugiego... 4. Jakie funkcje ma pełnić Atmega? Czy ma to być tylko monitor połączenia czy co?
void SERIAL_Init() { UCSR0A=0x02; UCSR0B=0xD8; UCSR0C=0x06; UBRR0H = (_BYTE)(DEBUG_BAUD_RATE >> 8); UBRR0L = (_BYTE)(DEBUG_BAUD_RATE)... } Inicjalizacja UART0, z 1 jest tak samo. Odczyt while (UCSR0A & 0x80) buff[i++] = UDR0; return i; Wyslanie UDR0 = data; while( (UCSR0A...
To jak powinienem podać wartość do tej funkcji: USART_Init() ?
usart atmega128 atmega128 usart bufor esp8266 usart
sagem kodem oporność głośnik czujnik ciśnienia oleju peugeot
Wymiana łożysk w wentylatorze podłogowym Aqlation Volkswagen Polo Classic 1.4 60 KM 1999 - Nie wchodzi na obroty