atom1477 napisał: No właśnie. A BASCOMowi są one obce I właśnie z tego powodu sam optymalizuje sobie kod programu. Wiem, gdzie, co i jak. jacynka84 , zamiast : Wciąż nie wiem jak działa bascom...;] Jeśli nadal Będziesz bazował na Bitwait itp. to w dalszym ciągu się nie dowiesz jak działa. I ja się bałem zapisywać bezpośrednio do rejestrów (adresów)...
Xmega nie zawsze musi być Masterem wtedy inny Master poprzez SS ją wybiera jako Slave. Cała nota Xmegi może się wydawać opasła. Są osobne noty na temat wybranych peryferii. Dla SPI nota AVR1309 gdzie możesz przeczytać: 3.2 The SS pin In master mode the SS pin is fully configurable from software, and typically used as one of these three options: •...
Zmienne globalne zajmują...... Pewnie ram dla led jest rezerwowany w chwili uruchomienia biblioteki przez memalloc. Gdybyś sam pisał obsługę led to użyłbyś tablicy o określonym rozmiarze dzięki czemu wiedziałbyś ile ram zajmuje program. Poszukaj jak wyświetlić ilość wolnej pamięci ram w czasie działania programu. Jakiś freemem jest. Trochę oszuka ale...
Coś mi się obiło o uszy, że E5 w odróżnieniu od innych nie kasuje flagi sprzętowo i musisz flagę skasować swoim programem. Przyznam się, że nie chce mi się teraz zaglądać do noty ale.. :D Each interrupt has an interrupt flag associated with it. When the interrupt condition is present, the interrupt flag will be set, even if the corresponding interrupt...
Cześć wszystkim :) Pracuję nad przeniesieniem kodu pewnej biblioteki do nrf24l01 z atmegi na xmegę (atmega32 -> xmega 128a3). Czytając bibliotekę wybrałem fragmenty z elementami charakterystycznymi dla danego typu procesora, czyli pozmieniałem części kodu związane z rejestrami i przerwaniami. "Zakomentarzowałem" nietknięty oryginał. To, co wstawiłem...
To mój pierwszy post na tym forum dlatego witam wszystkich serdecznie. Piszę trochę w assemblerze na 8051 i AVR-y a ostatnio zainteresowałem się rodziną Xmega. Więc dochodzę do meritum i tu moje pytanie: Czy da się programowo ustawić kilka portów wejściowych na jeden kanał zdarzeń? Tak aby po wystąpieniu zadanego poziomu/zbocza na którymkolwiek ze kilku...
JarekC - to jest to! Dziękuję. Adres urządzenia to 0x68, więc mamy do komunikacji D0 i D1 Chyba jesteśmy blisko - mam już pierwszy odczyt z DS3231 ! Przy kolejnym odczycie staje tam gdzie zawsze... Dodano po 29 Mam teraz taką sytuację: (inicjalizacja) PIERWSZY PRZEBIEG: status: 00000001 (Bus state = IDLE) uint8_t address = RTC_SLAVE_ADDRESS; address...
Siema. Otóż mam taki problem, podczas gdy kod ładowania i zerowania data DACx działa, np DACB1 = 0 waitus 500 DACB1 = 4095 (full zakresu) waitus 500 daje jakieś 2Khz pisku w słuchawkach co jest oznaką działania , to gdy ładuję próbki muzyki wav z karty na zasadzie DACxx = pwm nic się nie dzieje. Tu całt kod xmega: [syntax=basic4gl] '=======================================...
Rozumiem, w takim razie, że zawsze warto używać _update, zamiast _write? To zależy co chcesz zrobić. Jak zainicjować EEPROM domyślnymi wartościami to obowiązkowo write. Jak zapisać blok danych uprzednio odczytanych z eeprom to zdecydowanie update. Zawsze można dać _update. Jedyna różnica pomiędzy _write i _update polega na tym, że _update sprawdza,...
Witam. Mam problem z obsłużeniem bibliotek Atmela do magistrali TWI dla mikrokontrolerów z rodziny Xmega. Próbuje odebrać dane z Mastera. Master to Atmega, która jest na pewno skonfigurowana poprawnie, gdyż dane odbierałem na innej atmedze. Problem pojawia się gdy chcę je odebrać na Xmedze, ze względu na moje początki z tym mikrokontrolerem. Może ktoś...
Witam, Mam problem z obsługą SPI pod Xmega. Chcę tym sterować układ MCP4922. Program zatrzymuje mi się na oczekiwaniu na zwolnienie flagi. Taki mam kod: [syntax=c] uint8_t d; int main(void) { SPIE.CTRL |= SPI_ENABLE_bm | SPI_MASTER_bm | SPI_MODE_0_gc | SPI_PRESCALER_DIV128_gc ; SPIE.INTCTRL = 0x03; PMIC.CTRL = 0x04; sei(); while(1) { d++; if(d>4095)...
Wielki dzięki, to działa, dziwnie skonstruowana jest ta funkcja załatwiająca jednocześnie odczyt i zapis. To że działa wiem z tylko obserwacji przebiegów na analizatorze. http://obrazki.elektroda.pl/8308418200_1... Faktycznie od komórki 0x0C zaczynają się wartości AD AE AF B0 B1, ręcznie wbite przeze mnie na progamatorze. Ale przystopowało...
Pewnie jakby zastosować powiększany wskaźnik zamiast indeksowania, to by jeszcze można coś uszczknąć. dekrementację i warunek można dać jako jedno (zmienić na pre-dekrementację). Być może dałoby się też zaoszczędzić używając lokalnych zmiennych do S_Bits i zapisywać je do RAM dopiero na koniec. [syntax=c]ISR(TCC0_OVF_vect) // tutaj rzeczywista obsługa...
WItam, Mam problem z przetwornikiem ADC w procesorze XMEGA. Wiem, że pojawiły sie na forum krytyczne uwagi dotyczące tego przetwornika w tych procesorach, ale nie wierzę że jest aż tak źle jak u mnie. Musi to być mój bład , nie wierzę że ATMEL mógł coś takiego wypuścić na rynek. Mój procesor to ATXMEGA32E5. Na wejście PA7 ( wejście ADC nr 15) - doprowadzam...
Witam. Zwracam się do Was z dziwnym problemem, który spędza mi sen z powiek. Pacjent to Xmega 128A3U, którą próbuje zmusić do do uruchomienia przetwornika ADC. Postaram się ogólnie nakreślić w czym problem, a następnie przedstawie kod źródłowy obsługi przetwornika. Korzystam z dwóch przetworników ADC , tj ADC A oraz ADC B. Wszystkie kanały w obu przetwornikach...
Zmiana procesora, raczej nie możliwa. Jeśli już to zmieniłbym na Xmega co ma sprzetową obsługę encodera. Ale na razie bede probował na ATMEGA2560. Jeśli chodzi o przerwania to wyglądają one tak (kompilator Codevision): 1) Procedura odczytu encodera (przerwanie na obu zboczach): [syntax=c] #define kanal_A (PINE & (1<<4)) #define kanal_B (PINA...
Witam. Tworzę projekt urządzenia wskazującego opartego na żyroskopie Bosch BMG160 i XMega32a4u. Wykorzystuję interfejs I2C do komunikacji. Odebrane dane z żyroskopu są przekształcane na ruchy kursora. Komunikacja z PC za pomocą sprzętowego USB. Cały projekt tworzę korzystając z frameworku Atmela ASF w Atmel Studio 6.2. Mam taki problem, że przy próbie...
No tak.... Zasugerowałem się pierwszym postem piotrva i nawet nie patrzyłem na program. Co robisz w programie po ustawieniu zegara i włączeniu SPI? Nic nie wysyłasz, odczytujesz status SPI i migasz diodą. A czy gdziekolwiek kasujesz flagę w rejestrze statusowym? Nie. Flagę możesz skasować na 2 sposoby: albo zezwalając na przerwanie w momencie rozpoczęcia...
Witam serdecznie Aktualnie wykorzystuję DMA w następujący sposób INTFLAGS Bit 3:0 , który sprawdza błąd transakcji dla kanału 0 do 3. Ale błąd transakcji, a błąd wysłanego bajta to dwie różne rzeczy. Jest też rejestr TEMPH i TEMPL . Czy przy pomocy w\w rejestrów można sprawdzić poprawność wysłanego każdego bajta ? Oczywiście jest to jedynie przykład...
Witam. Proszę o podpowiedź, gdzie szukać problemu. Na Atmega32 pracującej jako Slave I2C mam wyświetlacz GLCD. Fragment kodu : [syntax=c] if(BUF_status.st_ready) { switch(Buf[0]) { case 'c': GLCD_ClearScreen(); break; case 'l': GLCD_DrawLine(Buf[1],Buf[2] , Buf[3], Buf[4], Cz); break; case 'g':GLCD_GotoXY(Buf[1], Buf[2]); break; case 't':GLCD_Puts(&Buf[1]);...
Jeżeli możesz je dowolnie programować, to korzystając z erraty dość szybko rozróżnisz układy. Xmega128A1U: 1. Register ANAINIT in MCUR will always read as zero. 2. RTC clock output option is non-functional. Xmega128A1: 1. ADC Event on compare match non-functional. 2. Low level interrupt triggered when pin input is disabled. Jeżeli w ten sposób nie możesz...
Witam, Dzisiaj zacząłem przesiadkę na Xmegę. Wgrany [url=http://mikrokontrolery.blogspot.com... programik, wszystko działa. Na jego podstawie próbowałem uruchomić DAC, aby wysyłał stałe napięcie, takie jak ustawię za pomocą terminala (zmienna char "napiecie"). Korzystam z 8-bit, wyrównane...
http://obrazki.elektroda.pl/7758360200_1... Energooszczędny błyskacz LED ze średnim poborem prądu poniżej 5uA? Tak, z XMEGA32E5 udało mi się tego dokonać. 5 lat błyskania LEDem na zasilaniu z 2 paluszków alkalicznych? Czas pokaże. Ponad 10 lat przy baterii litowej CR123A? Z pewnością możliwe, gdyby nie drobne przeszkody techniczne....
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...
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....
A jakby tak zapytać google? https://www.google.pl/#q=interrupt+contr...
Wygrzebałem mój moduł X3 od leon instruments. Do pinu A1, którego przerwanie będę sprawdzał, podpiąłem przewód, z drugiej strony sobie" wisi". Nie jest podpięty do niczego. http://obrazki.elektroda.pl/7657341400_1... Zrobiłem prosty program: http://obrazki.elektroda.pl/8271471100_1... Wszystko jest ustawione tak, jak...
Witam Próbuję wykonać ćwiczenie z kursu Leona http://www.leon-instruments.pl/2014/01/k... Uruchamiałem ten kod pod eclipse Luna z najnowszym toolchainem. Ww właściwościach projektu dla AVR hardware podałem właściwą sygnaturę procka i jego częsttliwość 62000000 Hz , kompilator wykrzykuje ostrzeżenie jak mam definicję zegra...
W działaniu procesor ma zmieniać stan portu PD0 i tego nie robi. Sprawdzałem na żywym organiźmie, na symulatorze podobnie (AVR Studio 4.18, WinAVR-20100110). Timer w trybie pracy "frequency generation mode". Chodzi mi o to, by po przepełnieniu licznika nie trzeba było wywoływać przerwania, a stan danego portu zmieniał się bez dodatkowych ingerencji....
Witam Mam problem z uruchomieniem timera w Atmel Studio 7, program przeznaczony jest dla procesora xmega128a3u Mam załadowane następujące biblioteki: [syntax=c]#define F_CPU 2000000UL #iinclude <util/delay.h> #include nclude <avr/io.h> #<avr/interrupt.h> uint8_t licznik = 0; [/syntax] i poniżej definiuje ustawienia timera [syntax=c]TCC0.PER...
Witam Mam kolejny problem, nie chodzi mi timer, siódmy, pozostałe 6 działa i nie mogę znaleść przyczyny, symulator nic nie pokazuje, rejestry nieustawione mają jakieś przypadkowe wartości, zrobiłem osobny programi na sam timer i nic, timer ma mi uruchomić przerwanie co 50mS tutaj teraz akurat tak nie będzie bo zegar jest 2M wew dlatego zmieniłem dzielnik...
Na podstawie tego, co poleciłeś napisałem coś takiego: [syntax=c] #include "twi_master_driver.c" #include "twi_master_driver.h" #include "avr_compiler.h" // general definitions /*! Number of bytes to send in test example. */ #define NUM_BYTES 3 /*! Defining an example slave address. */ #define SLAVE_ADDRESS 0x80 /*! CPU speed 2MHz, BAUDRATE 100kHz and...
Witam. Mam problem z jednoczesnym używaniem portów. Do komunikacji z komputerem chce użyć emulacji portu szeregowego, na USB. Bazując na artykule ze strony [url=http://mikrokontrolery.blogspot.com... uruchomiłem komunikację z komputerem. Wszystko jest ok. Połączenie...
Cześć :) Sprawdzam różne rzeczy podczas nauki uarta dla xmega128a3u. Korzystam z biblioteki Atmela, uart w trybie z przerwaniami, software'owy cykliczny bufor odbiorczy i nadawczy. Mam tablicę z danymi w formie znaków ASCII. Oglądam sobie wszystko przy pomocy realterma, do PC podłączone za pomocą przejściówki rs485-usb. Chciałem na początek obliczyć...
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...
Dodałem PER żeby zliczał np do 30000 i wgmode-normal - dalej nie działa. Cały czas mam na wyjściu 34kHz jaka cholera ? [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> int main(void) { PORTD.DIR=PIN0_bm; TCC4.CTRLB=TC45_WGMODE_NORMAL_gc; TCC4.CTRLA=TC45_CLKSEL_DIV8_gc; TCC4.INTCTRLA = TC45_OVFINTLVL_LO_gc;...
Witam znawców tematu! podjąłem się jak dla mnie poważnego wyzwania uruchomienia wyświetlacza LCD S95160 na sterowniku SSD1289Z w połączeniu z Xmegą64A3. Niestety utknąłem i dlatego piszę ten post... jest to dla mnie początek z wyświetlaczami LCD więc nie jestem w tym temacie zbyt obeznany, mam za sobą parę dni czytania datasheeta tego sterownika ale...
Coś się urodziło w końcu. Oto kod, z którego odpaliłem ADC i uzyskałem prawidłowe wyniki: [syntax=c] #include <avr/io.h> //#include <stdbool.h> //#include <util/delay.h> //#include <stdlib.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <stddef.h> #include "SPI.h" #include "nRF24L01.h" #include...
Cześć wszystkim :) Zdaję sobie sprawę, że temat trochę już oklepany, ale zauważyłem, że każdy ma inny problem z tym PIDem :) Otóż muszę (do jutra wieczór) zaimplementować regulację prędkości obrotowej regulatorem PID dwóch silników DC (Dagu DG01D). Każdy z silników jest wyposażony w enkoder w postaci hallotronu. Na wale silnika osadzony jest magnes...
Witam. Mam program do obsługi wyświetlacza tft z dotykiem. Program nie mój, działa prawidłowo ale jest problem z szybkością wyświetlacza i chciałbym przejść na Xmega128A3. Problem w tym że Xmegi nigdy nie miałem "w rękach" i mam problemy z przeróbką programu. Chciałbym też wiedzieć na pewno że ten program będzie działał na Xmega zanim wpakuję się w...
Witam, Mam taki problem. Próbuje odpalić LCD z kontrolerem ST565 na Xmega32E5. Do tej pory korzystałem z dobrze opisanego większego kolegi (Xmega128A3U). Problem który opisze poniżej nie występuje na na Xmega128A3U używając identycznego kodu. Kod na potrzeby testów wygląda tak: [syntax=c] #include <avr/io.h> #include <util/delay.h> #include...
Problemem jest tutaj fakt ze licznik zlicza impulsy. A ty każdemu krokowi enkodera chcesz przypisać pewna wartość (regulacja zgrubna/precyzyjna) a tego licznik nie robi (bo każdy impuls jest traktowany z taka sama waga). Jednym z możliwych rozwiązań jest zliczanie ilości impulsów i mnożenie ich przez wagę (w zależności od wybranej dokładności). [syntax=c]...
Czy da się to zrobić jakoś bez rekurencji, tzn. wykonywać działania co wybudzenie a potem usypiać ponownie? Może jest jakieś oczywiste rozwiązanie, [syntax=c]typedef enum { RUN_STATE, SLEEP_STATE } DeviceState; DeviceState deviceState; int main() { //initializations for(;;) { //main loop switch(deviceState) { case RUN_STATE: //do some stuff if(any_specific_condiditon)...
Panowie wydaje mi się, że właśnie w takim przypadku użycie volatile jest KONICZNE i to zdecydowanie, ponieważ to właśnie tylko w funkcjach a w zasadzie TYLKO w funkcjach zawierających pętle nieskończone bez możliwości ich przerwania dochodzi do buforowania zmiennych Nie jest to prawdą: Natomiast co ciekawe jeśli używamy zmiennej w przerwaniu to jej...
Pojawił mi się problem taki, że nie mogę odpalić przerwań. Mam 2 programy: 1- test przerwań poprzez zmianę stanu na pinie D0 i generowaniu dźwięku przez PIEZO - działa super. 2- wstęp do wariometru, też działa super, wykresy generują się bardzo realnie. Próba uruchomienia przerwań w programie 2 nie działa. Timer się kręci elegancko bo wartości licznika...
Udało mi się włączyć przerwania w sekcji bootloader. Na początku funkcji main wstawiłem oto kod: [syntax=c] /* Set interrupt vector location to boot section of flash */ uint8_t temp = PMIC.CTRL | PMIC_IVSEL_bm; CCP = CCP_IOREG_gc; PMIC.CTRL = temp; [/syntax]
Witam. Mam problem z XMegą, konkretnie 32D4, choć sprawdzałem też na 64A3 i wyniki podobne. Chodzi o pobór prądu: http://obrazki.elektroda.pl/8605027100_1... Zgodnie z danymi podanymi w datasheet, pobór przez układ zasilany z 3.3V w trybie IDLE z zegarem wew 2MHz powinien wynosić około 270uA. Tak wygląda kod testowej aplikacji : [syntax=c]...
Mój cały kod: [syntax=cpp] #include <avr/io.h> #include <avr/interrupt.h> ISR (ADCA_CH0_vect) { PORTD.OUTSET = PIN3_bm; } int main(void) { PORTD.DIRSET = PIN3_bm; // ustawienia dla ADC ADCA_CH0_MUXCTRL |= _BV(6);// ADC_CH_MUXINT3_bm; // wejscie na ADC8 - PBO ADCA_CH0_INTCTRL |= _BV(0);//ADC_CH_INTLVL0_bm; //włączenie przerwania ADCA_CH0_INTCTRL...
Witam, Od dłuższego czasu zastanawiam się jak rozwiązać pewien problem. Otóż, gdy próbuję ustawić DMA wyzwalane przepełnieniem timera, to nie działa jak powinno. DMA startuje przy pierwszym przepełnieniu TC, a później odczytuje dane z portu w swoim tempie, nie zważając na przerwania timera. Kod wydląda tak: TCC0.CTRLA = 0x01; // Prescaler: clk/1...
Dzięki wielkie ;) chyba nigdy bym się tego nie domyślił ;) teraz wszystko działa ok. Dodano po 1 Witam, napotkałem jeszcze jeden problem z ustawieniem PWM, na serii A wszystko działało dobrze. Przejrzałem całą dokumentacje ale nic nie znalazłem. Dodano po 12 problem chyba rozwiązany okazało się że chyba porty PD0-3 są zamienione z PD4-7...
interrupt usart xmega freertos interrupt interrupt event
pompa miele bęben suszarka wiatrak silnik krokowy
piszczenie przetwornicy samsung piszczenie przetwornicy samsung
Skoda Fabia 2008 - Czy posiada immobiliser? TUZ do Yanmar KE-4 – gdzie kupić, jakie parametry, sprawdzone sklepy i montaż