No jasne, że tak, zafiksowałem się na pobieranie wartości z portów i chciałem pisać własne I2S na przerwaniach.. cytując "klasyka" "szkoda strzępić ryj". Dzięki wielkie.
Patrz założenia autora wątku: - włączone - krótkie światła bądź ostatni tryb pracy, tutaj działa to tak, że po prostu, jak były długie, to włączy stroboskop; - wyłącz i włącz - długie światła; - wyłącz i włącz - stroboskopy; - wyłącz i włącz - krótkie; - wyłącz i włącz - długie; Takie działanie możesz zrealizować na rejestrze przesuwającym na przekaźnikach....
Wielkie dzięki za szybką odpowiedź !
Dziękuję, byłem przez pewien czas niespokojny - również dziękuję za szybką odpowiedź.
Witajcie moi drodzy Zapraszam na kolejną część mojego tutoriala PIC18F2550 i kompilatora SDCC . W tej części zademonstruję jak używać wyświetlacza 7-segmentowego z PIC18F2550 . Kod obsługi wyświetlacza będzie oczywiście napisany w oparciu o przerwania i timery . Cały proces powstawania układu na płytce stykowej oraz programu na PICa przedstawię krok...
Możesz zrobić jeszcze inaczej. Wyzwalaj przerwanie timera dwa razy częściej i licz je. W przerwaniach parzystych startuj konwersję a w nieparzystych odczytuj jej wynik. Wszystko zadziała pod warunkiem, że czas pomiędzy przerwaniami będzie dłuższy niż czas konwersji, ale to nie powinien być problem. Możesz od biedy użyć tego while w obsłudze przerwania....
Moim zdaniem nie do końca tak jest że działa tylko interpreter poleceń, A obsługa dysków (kiedyś dyskietek)? Operacji we/wy do dysku nie możesz ani przewidzieć (chyba że nie używasz napędu) ani przerwać. To będzie Twój największy problem z systemem czasu rzeczywistego pod DOSem. Nie próbowałem tego sam, ale z grafiką pewnie jest podobnie. W trybie tekstowym...
jeśli chodzi o porty to mikrokontroler AVR potrafi wysłac/pobrac 32 dane z szybkością zegara, czyli np. 16MHz chyba nie 32, tylko 8, bo porty w AVR są 8bitowe. Porty w STM32 są 16-bitowe. Swoją drogą - DMA może obsługiwać transfery z pamięci do pamięci. Jeśli jako źródło dasz rejestr wejściowy portu, a jako cel jakiś obszar pamięci (z postinkrementacją),...
Witam, chciał bym prosić o rade szanownych kolegów mianowicie nie mogę uruchomić nadawania modułem nrf24l01 z pełną szybkością z użyciem przerwań od pinu "IRQ" już wyjaśniam, w trybie polingu nadawanie pakietu 32 Bajtów trwa 156us i wszystko ładnie śmiga odbieranie udało mi się uruchomić z wykorzystaniem przerwań oraz DMA, lecz gdy próbuje wysyłać za...
Nie za bardzo rozumiem o jakich przerwaniach piszesz. Slave SPI (abstrahując od przerwan błędów itd) ma przerwanie wtedy kiedy rejestr wysyłki jest pusty albo kiedy coś otrzymał (pominę kwestię fifo). Jeżeli jest to przerwanie od pustego rejestru TX to może tam wpisać dane, która zostanie wysłana przy następnej transmisji mastera. Jeżeli jest to od...
tak z ciekawosci po co digitilWrite() bawi sie przerwaniami? moge zrozumiec ze "zabezpiecza sie" przed wywolaniem przerwania ale to sa 2 instrukcje (przynajmniej w PICu). Tak jak pisał kol. (at)_lazor_ ze względu na sposób zmiany stanu pinu, powinna blokować przerwania. To samo w sobie nie powoduje zmiany czasu wykonywania sekwencji, ale wspomniane...
Akurat waitms żadnej nie było. Co prawda w tym czasie i tak nic nie robił, ale przynajmniej lalał w kółko. Jednym słowem skoro z wykorzystania przerwań w tym przypadku nici, trzbea będzie obsługę "ściemniacza" zrealizować w normalnej częsci kodu naprzemian z resztą funkcji. Zapewne można wykorzystać np. 16 bitowy Timer1 jako wskaźnik stabilnego szybkozmieniającego...
Czesc, Jak Dexter juz zauwazyl, zazwyczaj core procesora ma jedno albo kilka wejsc przerwan i bardzo czesto sa tylko dwa - maskowalne i niemaskowalne, a dopiero do tych dwoch sie podlacza kontroler przerwan. Wiekszosc firm produkujacych uklady robi swoj kontroler przerwan i podlacza do niego swoje peryferale i wystawia cos dla uzytkownika. Sciagnij...
Witam ! Po przyjęciu obsługi przerwania, przerwania zostają automatycznie zablokowane (wyłączone) po to aby nie robić przerwania w przerwaniu. Ostatnimi rozkazami w procedurze obsługi przerwania powinno być : ....... Ei Reti Rozkazy informujące o powrocie z obsługi przerwania i włączenie przerwań. Być może brakuje tych rozkazów i dochodzi do przepełnienia...
DEX - no cóż dlatego, bo taki układ już jest i nic nie da się teraz zrobić. Kolumny i wiersze są podpięte bezpośredni pod wymienione porty.. Więc bezpośrednie wykorzystanie zewnętrznego przerwania nie wchodzi w rachubę. mariuszlorenc - no wlasnie może o to mi chodzi, ale jak to się robi, bo to moje naprawdę pierwsze doświadczenie z Timerami, flagami...
Nie masz za dużo w funkcji obsługi przerwania. Dużo Waitms i jeszcze obsługa LCD. Może przerwania tak szybko nadchodzą, że nie zdąża czasu na wyjście z niego. Funkcja przerwania powinna być krótka
transmisja z kompem jest na przerwaniach, szybkość 9600 bodów, temperaturę odczytuje co sekundę ds..y nie są na przerwaniach.
Nie jest tak, że w wszystkie przerwania mają ten sam priorytet? Nie jest to tak. Generalna zasada jest taka, że w pierwszej kolejności zostaje wykonana procedura obsługi przerwania, które pojawiło się prędzej. Jeśli w czasie wykonywania tej procedury nie włączymy flagi globalnej I a pojawi się nowe przerwanie, będzie musiało czekać na zakończenie obecnej...
Dziękuję za szybką odpowiedź :). Czyli Freddie Chopin napisał że się mylę a to dokładnie tyle samo znaczą te linie w przypadku dokładnie tego procka na który ja piszę. Przez to że nie dałem mu do tego powodu rozumiem, że nie powinien zgłaszać przerwania ponieważ zmieżone wartości napięć nigdy nie przekroczyły ustawionych wartości progowych na 5 V i...
Dzięki za szybką odpowiedź, oczywiście masz racje błąd wynika z dość później pory :P Czytałem o przerwaniach, mam nawet w tej chwili książkę Mirka przed sobą, ale chciałbym jednak zrobić to w sposób jak powyżej. No chyba, że kompletnie się to nie nadaje to przysiądę nad przerwaniami. Pytanie moje, jest więc wciąż aktualne - co zrobić by to działało?...
Mam mały problem z DMA podczas pracy z DCMI. nowydamian-a . Zwiększa wskaźnik na bufor i ponownie włącza DMA. Różnica jest w tym że resetowanie wskaźnika mam w przerwaniu od DCMI. Dzięki temu każda kolejna ramka obrazu powinna zaczynać się od pozycji zerowej bufora (obraz zawsze powinien być w tym samym miejscu, nawet jak po drodze któraś rama straci...
Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka z Arduino. Temat oczywiście nie zastąpi w pełni czytania noty...
Jeżeli może to być wykonane z "lekkim" opóźnieniem to np. tak: semafor=1; while (semafor) { ....... //ciag bardzo wielu instrukcji w tym delaye w postasi petli for itp ....... } a w przerwaniu w stosownym miejscu ustawiasz: if (P1.0==0) {semafor=0} Jeśli reakcja ma być szybka to w krytycznych miejscach (głównie deley-e w postaci petli for) w pętli trzeba...
Moj uklad wyglada tak ze 'normalnym' stanem dla fototranzystora jest oswietlenie a wiec przewodzenie (w zalozeniu jedynki na przerwanie), gdy fototranzystor sie zaciemnia, zbocze opada i dalej wykonywana jest obsluga przerwania. Pytanie dotyczylo tego czy te 2mA moglo utrzymac jedynke na porcie na ktorym pozniej pojawilo by sie 0 z zaciemnionego fototranzystora....
Niestety , muszę Cię zmartwić :( W samej pętli głównej tracisz ~5 s na instrukcje WAIT i WAITMS , a do tego dochodzi czas wykonania funkcji i podprogramów.W tak zbudowanym programie , masz marne szanse na prawidłowy(w miarę szybki) odczyt klawiszy.Myślę , że należy skorzystać z timera i jego przerwania , co jest równoznaczne z poważną przebudową programu...
Pytanie jak szybko kręci się koło. Jeżeli nawet będzie to 3000 obr/min, to jeden obrót zajmie 20 ms. Przerwanie od timera możesz uruchomić co 5 ms, a przy krótkim programie to nawet znacznie częściej. Czyli w najgorszym przypadku będziesz miał cztery odczyty licznika na jeden obrót koła. To będzie jeszcze mało? Z obrotami nie bedzie az takiego problemu...
Witam Dla prędkości 19200 wysłanie 1 bajtu trwa około 520us czyli 10 razy mniej niż częstotliwość wysyłania. Nie ma problemu chyba, że będziesz zbierał przez pół dnia a następnie po otrzymaniu polecenia z komputera wysyłał je. W tym wypadku eż nie ma problemu ponieważ wysyłaniem danych przez RS-a odbywa się sprzętowo a nie softwarowo. Oznacza to, że...
Proponuję w przerwaniu ustawić wkaźnik, że nastąpiło przerwanie oraz wyłaczyć to przerwanie. Później w pętli głownej while sprawdzić ten wskaźnik i podjąć odpowiednią reakcję. Jeżeli funkcja reagująca na przerwanie zakończy swoje działanie ponownie włączyć przerwanie. Lepiej nie umieszczać za dużo kodu w obsłudze przerwania i szybko "z niego wyskakiwać"....
To jest stronka dla początkujących może więcej informacji od tych co sie znają, nie jakieś tam ściągnij sobie tylko może na początek cały link. - stronka NXP, szukam , szukam i nic nie ma tego code.bundle.lpc213x.lpc214x.uvision.zip search podaje NIC nie znaleziono. Jesli ma być tylko taka pomoc to się przenoszę dla zaawansowanych. albo taki tekst -...
Witam. Natrafiłem dziś na problem z przerwaniem. Mianowicie mam DS18B20, LCD, UART i timery. Program wygląda tak, że temperatura z DSa jest wyświetlana na LCD, wszystko gra. Mam też przerwanie, w którym co sekundę wysyłane jest 6 bajtów do kompa (przez UART). Przerwanie jest od Timera co 1 sekundę. Wszystko gra do czasu. W pewnym momencie program sie...
A jesteś pewny, ze świeci ciągle, czy miga bardzo szybko ? A może miga baaardzooo powoli, np raz na 10 min. ?
Krauser dał dobra podpowiedź. Wybudzenie to nic innego jak wejście do przerwania. Ale jeśli już jesteś w przerwaniu to to przerwanie nie może wykonac się znowu do czasu aż nie nastąpi z niego wyjście. Przenieś powerdown poza przerwanie. Np tak: if sw=1 then uspij=1 i gdzieś w pętli głównej programu: if uspij=1 then uspij=0 enable int0 powerdown end...
Nienawidzę czytać datasheetów... Ooojo joj ... to będzie bolesna droga przez mękę ta nauka programowania :( W książce mam napisane że do TCCR1B jest przypisany OCR1B, ale jak widać niezbyt to działa... No to hmmm książek też nienawidzisz czytać ? tak by wynikało skoro piszesz, że ktoś tak napisał w książce. Coś chyba mało uważnie czytałeś. Nikt tak...
Witam! Ostatnio koledzy pojechali po moim programie do mulitpleksowania wyświetlaczy bez użycia timera to postanowiłem go poprawić bo faktycznie dostrzegłem zalety. Nowy program działa, ma w pętli zwiększać o jeden wartość zmiennej "wartosc" i ją wyświetlać. W głównej pętli programu wpisane jest tylko polecenie incr teoretycznie powinien być szybki...
Witajcie Napotkałem następujący problem - Mam układ komunikujący się szeregowo z procesorem w sposób następujący: 1. Układ wywołuje przerwanie 2. Odbieram dane statusu od układu 3. Wychodzę z przerwania i to działa. Problem zaczyna się jeżeli odebrane dane statusu wymuszają w procesorze kolejne operacje z użyciem układu. Ponieważ idzie to tak: 1.Układ...
Co to znaczy nie tak szybko. Zastanów się nad logiką programu. Pewnie cos Ci opóżnia pętlę i zanim dojdziesz do czytania portu analogowego mija jakiś czas (np wysyłanie po serialu albo inne opracje). Pamiętaj tez że kowersja ADC w atmegach też jest dość wolna.
reaguje na oba zbocza, przerwanie wykonuje się kilka razy Może jednak sygnał z tego czujnika, a ściśle napięcie na pinie nie jest czyste jak sobie zakładasz, szczególnie jeśli idzie jakimś dłuższym kablem. Możliwe są odbicia, oscylacje itp. . 411 jest przecież bardzo szybki i już jakieś oscylacje z okresem ułamków mikrosekundy mogą grać rolę. Impedancyjnie...
To co piszą Koledzy Twoim kodzie to sensowne konkrety. Podzielam ich zdanie na temat potrzeby zmiany koncepcji obsługi przerwania. Do Twojego przykładu idealnie pasują główne założenia "programowania przerwań" a szczególnie ta, że powinno być możliwie krótkie czasowo. Wg mnie, po obejrzeniu kodu, tkwisz mocno głęboko w programowaniu całkowicie liniowym...
Witam Czy jest taki przekaźnik - przelącznik ktory pozwoli mi na: Przerwanie (rozwieranie) obwodu nr 1 spowodowanane dostarczeniem pradu z dolu jako chwilowy impuls = ok 0,5sekundy i powrot do dalszej pracy na obwodzie nr1 = zamkniecia obowodu i ponowne otwarcie i zmakniecie, mniejwiecej z szybkoscia kierunkowskazu = cyklicznie i z dosc duza sprawnoscia...
Program ma odczytywać dane z impulsatora i wysyłać je poprzez RS232 do komputera. Dane mają być wysyłana co: 0,5ms lub 1ms lub 2ms lub 4ms(domyślnie mam przerwanie co 250us a czas po którym wysyłam dane to 4ms). A po 5 sekunach pomiar ma zostać zakończony. Wszystko działa jak należy jednak są jakieś problemy z Timerem. Przypuszczam że instrukcja Print...
Zgadzam się w 100% z Light-I. Po co uruchamiasz przerwanie od timerka skoro czekasz na znak z portu szeregowego? - i tak w pętli głównej programu nic z nim nie zrobisz. Załóż cykliczny bufor na odbierane znaki i w procedurze obsługi przerwania USART_RXC przepisuj znak do bufora, ustaw sobie jakąś flagę i obrabiaj informację w pętli głównej. Pamiętaj,...
Witam! Od kilku dni siedze i nie mogę nic wymyśleć :( Bez ogrudek - podaje źródło: $regfile = "m16def.dat" $crystal = 8000000 'definiowanie zmiennych i stałych Dim T As Integer Dim Licznik_przerwan As Byte Dim Dioda As Bit 'konfigurowanie interfejsu 1Wire Config 1wire = Portd.1 'konfiguracja wyświetlacza Config Lcdpin = Pin , Db4 = Portc.6...
Moim zdadniem najlepiej jest w przerwaniach ustawiać flagi zezwalające na wykonanie danej czynności, np. odświerzenie ekranu, a samą czynność wykonywać w programie głównym. Jest z tego taki zysk, że przerwania, które jednak blokują wykonywanie się kodu, wykonują się szybko. Program główny, który może być przerywany wykonuje się w chwilach wolnych. Oczywiście,...
Witam, Mam IBM T22 i problem z zasilaczem, Przepraszam za jakość zdjęć - robione komórką na szybko. Tam gdzie pokazuje strzałka jest jakieś przerwanie w kablu bo przedtem jak się kręciło w tym miejscu to działało a teraz już w ogóle. Nowy zasilacz już będę zamawiał, ale przez te kilka dni chciałbym na nim popracować a bateria mi już się wyczerpała....
Pierwsza z pierwszych rzeczy jakich musisz się nauczyć to pisać programy do obsługi przerwań. Bez tego będziesz miał ciągle podobne albo i gorsze problemy. Podstawowa zasada jest taka, że kod obdługi przerwania MUSI się wykonywać maksymalnie szybko. Nie można tam wstawiać żadnych długo trwających procedur typu Wait, Wiatms czy np obsługi LCD wiem wiem,...
Najbardziej newralgicznym czasowo punktem jest obsługa INT0- i od tego trzeba zacząć. Odczyt temperatury trwa 3.3ms a wysłanie żądania odczytu 2.5ms. Oczekiwanie na przetworzenie 750ms- ale nic nie stoi na przeszkodzie żeby odczytywać co np. 5s- temperatura nie zmienia się tak szybko. Obsługa wyświetlacza też jest wolna- spróbuj z biblioteką: $lib "Lcd4busy.lib"...
szelus przeczytaj dokładnie o co chodzi układ działa ale czasy się nie zgadzają :/ opisałem dokładnie wadliwe czasy pracy optymalizacja jest wyłączona a ta pętla wytłumia drgania związane z przyciskiem, w przerwaniach nie mogę stosować makra _delay_ms(), a po za tym jedna iteracja wykonuje się w 4us jak dobrze pamiętam wiec spokojnie tak szybko nie...
Nie wiem czy dobrze kobinuję, przy takiej konfiguracji bardzo szybko odświerza mi LCD prawie nic nie widać. Nie wiem też jak ugryść wyświetlanie poszczególnych podprogramów jednym przyciskiem. Zastosowałem skoki opisywane [url=]Tutaj [syntax=vb]$regfile = "m16def.dat" 'informuje kompilator o pliku $crystal = 8000000 'informuje kompilator o częstotliwości...
Tak na szybko to powinieneś mieć plik prawdopodobnie o nazwie startup, w którym umieszcza się wektory obsłygi przerwań wyglądający jakoś tak: [syntax=c] //Interrupt vector table __attribute__ ((section(".isr_vector"))) void (* const exceptions_vectors[])(void) = { &_estack, // The initial stack pointer reset_handler, // The reset handler unused_vector,...
Jedyny taki przenośny programator układów AVR. Pomoże wszędzie tam, gdzie trzeba zaktualizować oprogramowanie, a układ docelowy znajduje się w trudno dostępnym miejscu i nie mamy możliwości (lub chęci) ciągać ze sobą laptopa i mnóstwa przewodów. Banalnie łatwa obsługa, niski koszt wykonania, super mały, super szybki, obsługuje karty SD... Cechy: -supermały...
Uruchomiony TIM5, zresztą TIM4 podobnie. Wszystko działa ok, tylko że zauważyłem błąd i nie powinno tak działać. TIM5 ma generować przerwanie co 150ms (i tak generuje) tylko dlaczego? [syntax=c] void timinit(void) { RCC->APB1ENR |= RCC_APB1ENR_TIM4EN; //TIM4RCC enable RCC->APB1ENR |= RCC_APB1ENR_TIM5EN; //TIM4RCC enable TIM4->PSC = 7199; //prescaler...
Dokładnie tak jak pisze Fredy. Z pewnością po zastosowaniu jego rad twój problem zostanie zlikwidowany. Nie mniej jednak ogólna strategia programowania mikrokontrolerów (mikroprocesorów) mówi, że program obsługi przerwania powinien wykonać się maksymalnie szybko. Jeżeli twój program nie robi wiele więcej Twoje rozwiązanie z poprawkami zaproponowanymi...
temp powinno być volatile. Inaczej się optymalizuje w pętli głównej, spójrz na wygenerowany kod asemblerowy. Dodano po 1 Zarówno "temp" jak i "i" powinny być volatile. i nie musi. Jest wykorzystywane tylko w przerwaniu. Za to powinno być zadeklarowane jako static w funkcji obsługi przerwania. Dzięki za szybką odpowiedź, ale to chyba nie jest problemem......
Dzięki za szybką odpowiedź. Czy mega może być popędzana kwarcem 16.384 MHz jeśli maksymalna częstotliwość pracy to 16 Mhz? Kwarce są na tyle dokładne (nawet te 20 ppm) że nie zauważę na analizatorze stanów odchyłek w przeciągu np. 5 minut? Czyli to kwestia użycia kwarcu o "nieokrągłej" wartości i dobranie preskalera wg Ciebie tak? Od początku myślałem...
Witam, jak w temacie nie mogę uruchomić przerwania na pinach PCINT ( PCINT3,PCINT4,PCINT5 - tylko tych potrzebuję ). poniżej trochę kodu - nie mam już pomysłu co może być nie tak. sei() - na pewno jest przed pętlą while, w up włączona jest dodatkowo obsługa kontrolera lcd ( zwykły lcd ciekłokrystaliczny siedmiosegmentowy ). po main: [syntax=c] PCMSK0|=(1<<PCINT3)|(1<<PCIN...
Witam Przerabiam pewne urządzenie, w którym są zastosowane 2 transoptory po obu końcach szyny na której jeździ sobie lustro, a dokładniej jest to interferometr Michelsona do pomiaru długości fali lasera. Główny problem leży w tym, że jak wózek z lustrem dojedzie do jednego z końców to transoptor zostaje zasłonięty i na jego wyjściu pojawia się "1"....
Chciałbym zaprezentować konstrukcję jednogodzinnej ładowarki przystosowanej do ładowania akumulatorków NiMH oraz NiCd 1,2V o rozmiarach HR6/AA i HR03/AAA. Ładowarka posiada dwa oddzielne kanały, dzięki którym możemy ładować jednocześnie dwa różne akumulatorki lub po niewielkich przeróbkach cztery parami w szeregu. Dla każdego kanału można niezależnie...
ok nie wiem czy dobrze zrozumiałem. może być np tak? tablica: db 00001001b, 00010010b, 01001001b ;przykładowo MOV DPTR, #tablica MOV A, #2h ; numerowanie od 0 jak w C ??? MOVC A,(at)A+DPTR MOV P1,A taki kod ustawi mi na P1 01001001b? Z modulo już sobie przypomniałem ;) Dodano po 3 ogólnie chyba już sobie poradziłem $include(REG51.inc) org 000h ljmp...
"and the master at SCLK rates up to 10MHz (internal clock mode, mode 2)" To chyba dotyczy szybkości magistrali SPI. "(SCLK Period: MIN 100µs, MAX 83µs)". Trzeba przyjąć bardziej pesymistyczną wersję. Czyli max. szybkość magistrali 10Mhz. Co by się zgadzało "Przy kwarcu 12MHz...dla częstotliwości zegara SPI 6" A dla 12 już nie. I chyba nie...
main() { /inicjacja flag = 0; sp= ram_end main_funck() } main_funck() { do { if(flag = 0) { //a } b c flag = 0; while(); } int() { set flag //c sp = ram_end main_func(); } pisane na szybko. Pomiędzy instrukcjami a - b musisz znajdować się na poziomie...
A w czym to przeszkadza, jeśli reszta programu nie ma prawie nic do roboty ? W porównaniu z tempem pracy reszty to super szybko. I powtarzam jeszcze raz, to funkcjonuje. Do tego to przerwanie jest wywoływne tylko w razie potrzeby, np. 20 razy dziennie.
Pisane z głowy i na szybko. [syntax=cpp] volatile int8_t stan; ISR (INT0_vect) { if (stan == 1) stan = 0; else stan = 1; } int main(void) { DDRD=0xff; PORTD=0x00; DDRC=0xff; stan = 0; MCUCR |= (1<<ISC01);//poczytaj o tym GICR |= (1<<INT0);/// i o tym sei(); uruchamia mozliwos uruchamiania przerwan while(1) { if (stan == 0) { while(1) { cośtam...
Witam! Zostawiłem zeszłej laptopa na noc, by sprawdził mi dysk C, a mianowicie: "Skanuj dysk i spróbuj odzyskać uszkodzone sektory" Znalazł mi na tym dysku blisko 500 uszkodzonych klastrów. Uruchomiłem z linii komend chkdsk, według instrukcji jakie znalazłem na google: chkdsk /r C: I zrestartowałem komputer. Pierwsze 3 etapy przeszły dość szybko. Laptop...
Dobra, z diodami już sobie poradziłem, ale takie nijakie to moje rozwiązanie, bo po prostu zamiast tych pętli for dałem switch i diody działją, ale teraz PWM nie działa przestawia się co każde przejście pętli. Jeden z if'ów; W każdym obiegu pętli głównej ustawiasz OCR1A, ale oprócz tego w różnych instrukcjach warukowych zmieniasz tę wartość. Zmieniasz...
Witam Składam małymi kroczkami ploter/mini frezarkę CNC. Będzie ona sterowania poprzez port LPT, ale będzie też możliwość ręcznego serowania bez podłączania do komputera. Zaczynając dzisiaj pisać program do sterownika natknąłem się na pewien dylemat. Jaki wpływ na ciągłe przetwarzanie informacji mają przerwania? Sterownikiem sterować będę poprzez klawiaturę...
Szukaj po przewodzie gdzie jest przerwany przewód lub podaj nowy przewód z zasilaniem po stacyjce na wtyczkę czujnika.
Mam zamiar złączyć ze sabą przerwany kabel telefoniczny i chcę w jak najprostszy sposób to zrobić. Zdecydowałem się na szybkozłączki żelowe ale nie jestem zorientowany (mam wątpliwości co do działania połączonych ze sobą kabli za pomocą szybkozłączek) ponieważ oglądałem na yt poradniki ale nie widziałem czy zdejmują izolację również z żył a w innego...
Początkowo myślałem, że partycja zaczynała się w sektorze 63 a zaczynała się w sektorze 2048, brakuje chyba 15 rekordów $MFT w tym najważniejszego rekordu 0. Nie wiem czemu data utworzenia pliku $Volume to 2014 r, skoro formatowałeś dziś. Podesłanie to już nie pomoże, tylko dostęp zdalny ewentualnie, a i tak zdalnie to może zając kilka dni (szczególnie,...
Witam, otóż mam problem, a mianowicie chciałbym obsłużyć przerwanie z pinu ALRT z przetwornika ADS1115 w celu wyeliminowania opóźnienia które teraz stosuje przy odczycie każdego z kanału (delay(20)) dokumentacja: z góry dziękuję za pomoc mój dotychczasowy kod: [syntax=c] /* Includes ----------------------------------------...
Tak. To mikroprzełącznik CWU. Jak go wyjąłem i ręcznie wcisnąłem, że niby woda leci to odpala piec idealnie. Sprawdziłem też "tłoczek" zaworu poboru wody. Wysuwa się elegancko jak odkręcę kran. Teraz muszę tylko znaleźć sklep, co mi to wyśle w miarę szybko. Czy macie jakichś sprawdzonych dostawców? Muszę kupić w internecie, bo za daleko mam do dużego...
Właśnie że nie. Czy są zwarte czy rozwarte to migają szybko. Jedynie jak podłącze żarówkę do tej wtyczki tak jakby była wpięta przyczepka to migają normalnie. Może gdzieś kabel przerwany który powinien informować że przyczepki niema. Nie wiem właśnie gdzie powinny iść te kable. Idą razem z wiązka prawej tylnej lampy.
Ciągłe jak ciągłe. Masz np. regulację fazową na tyrystorze/triaku - i zakłócenia 100x na sekundę, co 10ms, przez ułamek milisekundy. Coś podobnego daje także układ prostowniczy dużej mocy z kondensatorami. Może algorytm powinien uwzględniać te 100 Hz? Od tego są akurat specjalne typu przetworników ADC. Stosowane w multiumetrach. Ogólnie nazywane "całkującymi"...
Problem jest w tym ze wiekszosc plyt ma ustawione na stałe dzielnik czestotliwości jesli w instrukcji pisze tak jak podałeś raczej na pewno tak jest raczej czepiałbym się sandry albo wogoole windy jesli chodzi o wieszanie kopna to najcześciej wystepuje własnie przy przetaktowaniu PCI z mojego dośawiadczenia komp działa jeszce stabilnie przy PCI 36Mhz...
Jak dziala przerwanie od ukladu szergowego na 8051?. Napisalem cos takiego: void main(void) { SCON=0x52; //(01010010) tryb SIO 1 asynchroniczny, liczba bitow 8 (8 dane; N bez parzsytosci; 1 stop) TMOD=0x20; //szybkosc transmisji ustalana przez TIMER1 w trybie 2 TR1=1; //TR1=1 start ukladu TIMER1 TH1=-6; //TH1= -fosc/(12*32*Baud_rate), -6: dla 11.0592,...
drodzy panowie, może panie :-) Sprawa jest taka, mam układ nad którym już od kilku tygodni ślęczę, coś w rodzaju komputera pokładowego do pojazdu jednoścladowego hehe. Generalnie wszystko jest ok z wyjątkiem... Zastopowałem się przy liczniku kilometrów. przerwanie INT0 zlicza ilosc obrotów koła (jedna linia programu) przerwanie INT1 jest przerwanie...
Napisałem program zliczający impulsy na wejściach przerwań INT0 i INT1. Jednocześnie przesyła informacje przez UART-a. Wszysto dzieje się dość szybko, impulsy 10us, UART na 256kb/s Program początkowo przygotowałem na ATmege128 z zegarem 16MHz. Wszystko działa poprawnie. Następnie przeniosłem program na ATmege8 z tym samym zegarem 16MHz i takimi samymi...
Witam męczę się już od dawna z przerwaniem od timera 0. Wymyśliłem sobie że po przepełnieniu licznika 0 ma nastąpić przerwanie. Licznik 0 liczy od 0-255 chciałem miec kontrolę na częstotliwością wywoływania przerwania więc gdy przerwanie jest wykonywane wpisuję od razu do licznika konkretną liczbę tak by miał on mniej do zliczania. Problem polega na...
dlaczego SDBus wolniejszy? Bo SDbus jest 4bitowy i bez wsparcia sprzętowego będzie ciężko to szybko obsłużyć. 500kB/sec to jest jakieś 4Mbit/sec ,gdy podkręcisz SPI do 20MHz to masz teoretycznie (60MHz/20MHz * 8 )*(20/4) taktów zegara "luzu w czasie wysyłania" czyli jakieś 120 (jak wysyłasz 16bitów to 240 )....nie ma szans żebyś wykonał jakieś poważniejsze...
No najpierw trzeba wyeliminować błędy sprzętowe- czyli ma być ten sam zegar. A potem sprawdzać program. No a procesor to nie jest model idealny- pewne operacje robi szybko- ale- jednak jakiś czas na to poświęca. P.S. Atom- to nie jest takie oczywiste. Po prostu wierzysz w wyniki pomiaru. Ale tylko dlatego że dotychczas się sprawdzały. No- trochę filozofii....
Witam mam takie pytanko, bo walczę teraz z uruchomieniem przerwania od UARTA na odbiorze. Bo zasadniczo FreeRTOS ma swoje przerwanie ten SysTickTimer i ono jest u mnie na timerze 3, co jest w ustawione w VIC0 na priorytecie 5. Z tego co zrozumiałem to semafory we Freertosie slużą do tego, żeby zsychronizować przerwania z systemem operacyjnym. Jako,...
Z tym równoległym to warto się zastanowić. Niektóre kontrolery LCD mają stosunkowo wolne interfejsy równoległe, a megaszybkie szeregowe, w efekcie równoległy jest oczywiście ciągle szybszy, ale nie aż tak bardzo w stosunku do szeregowego. SPI jest proste i wygodne, na XMEGA wyciągniesz 16 MHz na tym interfejsie, na ATMega 10 MHz, to daje ci odpowiednio...
Witam, chciałbym mieć przerwanie zewnętrzne na PE0 a cały czas cokolwike bym nie zrobił, przełączył, zmienił itd jest na PA0, moglby ktos rzucic okiem na kod i powiedziec co jest zle... wydaje mi sie ze w tym syscfg jest cos zrabane, albo nie chce sie ustawic etc... swoje wnioski opieram na tym ze PA0..2 normalnie smiga tylko nie mogeprzejsc jakby na...
Nie wiem czy to lenistwo czy co... Przykład pierwszy z brzegu Próbowałeś na to kliknąć? Przeglądarka zgłasza błąd - "The URL is not valid and cannot be loaded." - trzeba pisać " żadnej wzmianki o precyzyjnym określaniu czasu, co jest całkiem zrozumiałe - tą metodą precyzyjnego czasu się nie uzyskuje, co sprawdziłem, zanim napisałem tu cokolwiek na...
a mam jeszcze jedno pytanko, jak to zrobić, żeby zmieniać szybkość wyświetlania tej zmiennej z wyświetlacza, chcę robić coś ala zegarek, wiem że powinienem użyć RTC, ale dla sprawdzenia siebie chciałem zrobić to na przerwaniu i timerze. i tu też pojawił się problem, bo jak zmieniam zawartość T0MRO, to się zmienia, zmienia się szybkość wyświetlania,...
Wystarczy zerknąć do DS i sprawdzić jak poustawiać rejestry. To jest kilka linijek kodu - uruchomienie timera w tryb input capture + przerwanie overflow od niego - uruchomienie innego timera w trybie ctc liczącego np 20ms. - obsługa przerwania w którym ustawiamy flagę (tego z ctc), że trzeba obliczyć szybkość - w przerwaniu overflow inkrementujemy jakąś...
Witam Kamera z myszy optycznej, ma bardzo małą rozdzielczość. Nie nadaje się do monitoringu. Poczytaj Pozdrawiam Dzieki za info - o tym wlasnie myslalem rownież - szkoda, przeliczylem sie ;d Ogolnie idea tego projektu (zakladajac temat byłem przekonany, ze jest to możliwe - w oparciu o to założenie zamarzylo mi sie zrobic monitoring malej rozdzielczości...
I teraz się zastanawiam czy takie podejście nie jest złe . Bo dane wysłane z niską ustawioną szybkością są dłużej odbierane czy też o tym pomyśleli a transmisja 300 a 250 000 to duża różnica? Jeśli przesiadasz się z Arduino, to przejrzyjnajpierw notę procesora, a szczególnie część opisującą układy peryferyjne. Bez tego dalej nie ruszysz, a nawet pobieżne...
Co ile masz przerwanie od timera bo jak się domyślam stan klawiatury odczytujesz kilkadziesiąt razy na sekundę?? Napisze to po raz kolejny: Wywal odczyt po IIC klawiatury z obsługi przerwania!!! I rób to tak samo jak odczyt czasu w programie głównym na podstawie flagi. Po drugie po co odczytujesz za każdym razem czas z PCF'a??? Skoro masz przerwanie...
Problem rozwiązany! :-) Dziękuję wszystkim, którzy wzięli udział w dyskusji- zaszczepiła mnie ona twórczo. Próba użycia zegara "na wprost", to znaczy sprawdzania stanu licznika z niewiadomych przyczyn w dalszym ciągu u mnie nie działa. Wygląda to tak, jakby nie było dostępu do stanu licznika ani przez zmienną COUNTER0 ani przez TIMER0 (wg instrukcji...
ZUMEK wielkie dzięki. Doszedłem co było nie tak poprostu podczas wywoływania procedury od przetwornika analogowo - cyfrowego wyłączałem przerwanie od licznika 2. Przyznaję się do błędu. A przy okazji dla wszystkich co korzystają z winavr, jak będziecie się bawić optymalizacją kodu w make filu to z doświadczenia mojego wynika iż optymalizacja między...
OK. Chętnie odpowiem jutro, bo dzis dzień się kończy. Rano do pracy na 7.00. pozdrufka :arrow: WojtasJD Nie rozumiem co z opcjami 'ACPI Aware O/S' oraz 'Plug and Play Aware O/S' - najpierw napisałeś że są na YES a teraz że na NO (?) - mi chodzi jak miałeś ustawione _pierwotnie_ (jak zmieniłeś ten pierwszy to Win2000 się podniósł ?) 1. Nie pamiętam jak...
No to zaczynamy po raz kolejny. Coś takiego jak stworzyłeś to niestety za szybko nie będzie działać. Mega z kwarcem rs 14 z groszami działa naprawdę szybko i można zrobić bardzo dużo w jedna sekundę. Do odbierania i wysyłania danych można sobie napisać własną procedurę - nawet w bascomie i jest ona sporo szybsza i działa rewelacyjnie. Deklarujemy przerwania...
Witam, testuje układ, który umożliwia ustawianie zaworu kulowego poprzez silnik krokowy i natknąłem się na coś dość nietypowego. Ustawianie zaworu odbywa się poprzez potencjometr podłączony do portu A, pin 0, przy czym pot podłączony jest dość standardowo, dwa skrajne piny do 5V/GND, środkowy pin do portu PICa. Układ umożliwia tryb, w którym odbywa...
To przerwanie nie działa mi jak należy :| Albo ja znowu robię coś źle. Jak zrobię bez przerwań np tak: overflowT3 = 0; // czas = 0 (zero przekręceń licznika) //ETIMSK |= _BV(TOIE3); // zezwolenie na przerwania dla T3 TIMSK |= _BV(TOIE0); // zezwolenie na przerwania dla T0 TCNT0 = 240; // ustawienie wartości (max-16),...
Sprawdź. Masz dwa kwarce: 4Mhz i 8Mhz. Jeśli problem leży w szybkości procesora, to program dla przerwania 1ms powinien migać diodą dwa razy szybciej przy kwarcu 8Mhz niż przy kwarcu 4Mhz. Pozdrawiam Mariusz
Stosowanie PCF8574 ma tę wadę że przerwanie go nie obsłuży i trzeba użyć znacznika aby w pętli głownego programu go odczytać. Nie napisano nic i typie scalaka ale domyślam się że trzeba spowodować aby z 4 linii wejściowych na których występuje logiczne 0 wygenerować przerwanie i ew. odczytać stan tych linii w przerwaniu ? Jeśli tak to proponuję rejest...
Witajcie, mam problem który wykracza poza dotychczas posiadaną wiedzę i granice rozumowania mojego umysłu ;) Otóż uruchomiłem bibliotekę FatFS (przykład do obsługi kart SD przez UART) na procesorze ATMega32 na płytce testowej (dokładnie ZL3AVR jeśli to w czymkolwiek może pomóc), wszystko ładnie działało bez zarzutu - karty działały szybko i niezależnie...
Zamierzam zaimplementować kod z projektu [url=]multiwii (napisanego pod arduino) na którejś z atmeg. W projekcie zamierzam sterować 4 silnikami i ewentualnie dwoma serwami. W kodzie na arduino odbywa się to za pomocą funkcji analogwrite(). Jeśli wykorzystałbym atmegę8 (która ma 3 kanały PWM) musiałbym zastosować [url=]sterowanie serwami w przerwaniach....
AVE... Nie zrobisz tego programowo tak szybko. Chyba że na większym zegarze. Jeśli potrzebujesz tego do przetwornicy, to znajdź układ ze sprzętowym PWM do przetwornic. Albo użyj szybszego i specjalizowanego przy tym układu, na przykład [url=]dsPIC33FJ16GS502...
ARM jest ogólnie uznawany za szybszy od Thumb. Zresztą oficjalne stanowisko ARM'a jest by pisać krytyczne kawałki w kodzie ARM (bo szybszy) a co nie krytyczne w Thumb (bo mniejszy). Jeśli już zadaliśmy sobie sporo trudu by wykorzystać FIQ, bo zależy na na szybkości i krótkim czasie wykonania przerwania FIQ, to raczej należy napisać/skompilować tą procedurę...
W sumie dla pewności wystarczy wydzielić operację tx_buf_head++; z indeksu tx_buffer. Ja tak robię ;] w obu wypunktowanych przeze mnie fragmentach może nastąpić ten sam "efekt uboczny" - jeśli przerwanie nastąpi pomiędzy jedną i drugą operacją Zgodzę się w przypadku indeksów, ale nie zgodzę się w przypadku SFRa. Wyjaśniam: 1) load adresu SFRa do rejestru...
Myślę, że należy się podsumowanie. Ponieważ zauważyłem, że mam problem z jasnym formułowaniem myśli, posłużę się przykładem. Załóżmy, że mamy biblioteki Lib1, Lib2 i projekt używającego obu. Plik nagłówkowy biblioteki Lib1 wygląda następująco : [syntax=c]#ifndef LIB1_H_ #define LIB1_H_ void Lib1_init(); __attribute__ ((always_inline)) void Lib1_TIM0_OVF(void)...
Tak się zastanawiam... Dlaczego nikt nie stosuje przerwania zbiorczego do obsługi klawiatury i impulstatora? Podpinamy po Bożemu klawiaturę + impulsator na jeden port następnie z każdej nogi diodą sygnałową na przerwanie INT. Po wykryciu przerwania wartość portu jest zatrzaskiwana. Odpada problem drgania styków ponieważ czas okresu drgania styków jest...
BTW: ten LCD ma być uaktualniany z przerwą 30ms? Rozumiem, że to _delay_ms to tylko tymczasowo. Oczywiście, cały przedstawiony program jest tymczasowy i służy wyłącznie do testowania przerwań. ISR zamień na INTERRUPT albo do ISR dodaj atrybut ISR_NOBLOCK. Jakie czasy maja impulsy na wejściach INT? Dzięki za ciekawy trop, wieczorem przetestuję i dam...
Logo jest ograniczony i kolejne wysterowania wyjścia regulatora są co 500ms. Trzeba mieć na uwadze, że regulator PI analizuje szybkość zmian (nachylenie krzywej). Dzięki temu układ posiada dużą dynamikę i ma szanse uzyskać stabilną wartość - bez przesterowania. Bez opisania dokładnie tematu, nie jesteśmy w stanie Tobie pomóc. Na pewno musisz napisać...
Pyt 1: Tak. Jeśli nie ma innych wskazań żeby koniecznie korzystać z INT1 to w m328p można uaktywnić przerwanie PCINT na pinie Rx, wtedy nie potrzebaa żadnych dodatkowych połączeń między pinami. Pewna niedogodność jest taka, ze przerwania PCINT reagują na oba zbocza oraz wektor przerwań jest wspólny dla całego portu. Pyt 2: Tak. Nie. Można to sobie teoretycznie...
Wejścia GPIO w ESP32 nie mają na wejściu bramki Schmitta (jak AVR), więc jakiekolwiek fluktuacje napięcia na wejściu w obszarze pomiędzy stanem wysokim i niskim mogą powodować efekt, który opisałeś i przypadkowe generowanie przerwań. Doraźnie problem rozwiązałem softowo za pomocą takiego kodu: Napisałeś coś w rodzaju programowego przerzutnika Schmitta...
Bufor nadawczy jest o rozmiarze jednego wysyłanego znaku (tak na prawdę jest to rejestr przesuwny samego UARTu). To nie jest prawda. Nadajnik składa się z rejestru nadajnika (1 bajt) oraz w zależności od procesora 1-2 bajtów bufora. Dane zapisywane są do rejestru nadajnik jeśli jest on pusty i od razu nadawane, jeśli jest pełny to do bufora, skąd potem...
Witam, mam dziwny problem z moim programem na '51(w C). Bawiłem się w transmisję szregową i utknąłem. Programik jest prosty: bufor odbiorczy na przerwaniu - wpisuje mu coś z klawiatury (HyperTerminal) on odbiera i umieszcza to w buforze, potem wypisuje funkcją printf to co tam jest. Problem w tym, że jeśli użyje funkcji delay() to program sie wiesza...
Timery ustawiam na szybkosc transmisji 32150 , taka jest uzywana dla midi, bo na AT89c2051 zrobilem sobie maly kontrolerek midi ktory wysyla komunikaty midi do sekwencera na PC , Bo procesorek dodalem do starych organkow Casio i przerobilem je na wersje z midi... Zrodlowki ci teraz nie podam bo nie jestem teraz w domu. Ale program dzial na zasadzie...
A mógłbys zdradzić co wywołuje to przerwanie ?? przerwanie jest podpięte do lini zegarowej synchronicznej transmisji szeregowej pochodzącej z modułu chipcona (radiówka). Czyli występuje dość często, i służy do przetwarzania nadchodzących bitów i detekcji czy odebrano preambułę , znacznik synchronizacji , oraz obsługuje też wyższą warstwę protokołu...
Proponuję zacząć od mniejszych szybkości przetważania ADC. Ja to robię tak: // Procedury przetwornika ADC #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include "uart.h" #include "adc.h" volatile u08 Analog; void ADC_Init(void) { outp(BV(ADEN)|BV(ADSC)|BV(ADATE)|BV(ADIE...
Dzieki za szybka i konkretna odpowiedz :) Co do termometru - ma to byc projekt niskobudzetowy, wiec wszelkie dodatkowe elementy (poza jakimis tam opornikami itp) sa nie mile widziane :) Co do histerezy - obawiam sie ze nie mam juz zadnego wolnego pinu, wiec z tymi opornikami to tak srednio... zabralem sie wiec za pomiar co kilka sekund, a raczej opoznienie...
Witam Mam pewien problem Mam płytkę z Atmega128 i RTL8019AS. Ładuje taki program $regfile = "m128def.dat" $crystal = 16000000 $baud = 4800 Config Serialout = Buffered , Size = 20 Config Porta = Output If Porta.0 = 1 Then Porta.0 = 0 Waitms 100 Else Porta.0 = 1 Waitms 100 End If Enable Interrupts If Porta.0 = 1 Then Porta.0 = 0 Wait 3 Else...
Ja bym taki pewny za żarówkę nie był! Włókno wykonane jest z dosyć sztywnego drutu, po przerwaniu końcówki włókna potrafią być tak blisko siebie, że właśnie mogą raz łączyć, za chwilę już nie. Dlatego w takiej sytuacji najczęściej pomaga przysłowiowe "walnięcie" pięścią w lampę. Wyjmij żarówkę, daj jej dobrego "pstryczka" palcem, jak włókno jest przerwane...
Jeżeli kabel jest faktycznie przerwany, to możesz sprawdzić za pomocą omomierza, czy napięcie + woltomierz. Jeżeli kabel jest tylko naderwany, ale istnieje połaczenie elektryczne to będzie przewodził, ale dla sygnału w.cz wystąpią odbicia fali wewnątrz kabla, czyi straty. Wykryć można tak: 1) podłączyć na jednym końcu kabla sztuczne obciążenie, a na...
Napisz tak: Dim Zmienna As Byte Zmienna = 0 Config Intx = Low Level | Rising | Falling [ | Change ] 'Konfiguracja reakcji na sygnał przerwania 'za x podstaw nr przerwania wybierz jeden ze sposobów pobudzenia kocówki uC Enable Interrupts 'Uruchomienie przerwań globalnych Enable Intx 'Uruchomienie przerwania INTx On Intx Obsluga_przerwania 'wskazanie...
Witam Napisałem sobie programik do sterowaia diodami led poprzez PWM. wszystko super chodzi, ale chciałem sobie zrobic teraz bajer, aby dany kolor utrzymywał się przez okreslona ilosc sekund. Do tego chcialbym zaprzac przerwanie np od timera T0. Niestety mimo moich wielokrotnych prob przerwanie od timera T0 nie jest nigdy wywolywane :-( a oto fragment...
Czysto teoretycznie przy układzie XOR może wystąpić sytuacja w której jednoczesna zmiana dwóch wejść nie zostanie wykryta. Kiedyś w silnie uwarunkowanym czasowo układzie zastosowałem dodatkowy rejestr zatrzaskowy, sterowany z procesora, co pozwoliło mi odroczyć obsługę zbyt szybko następujących po sobie zmian na wejściach.
[To dopiero byłby bajzel :D Może nowy kolega najpierw pomyśli lub poczyta dokumentację , a potem "doradza" :?: ;) A dlaczego bajzel? Co się stanie w podanym programie gdy w czasie obsługi przerwania wystąpi następne przerwanie ? Nie wiem ile RAM-u w AVR można przeznaczyć na stos, ale w 8051 (bo tego znam) to szybko go zabraknie. Zgodzę się natomiast,...
proponuje trochę policzyć i nie panikować, przerwania ustawiają flagi, obsługiwane są jeżeli tylko znacznik "I" na to pozwala. jeśli obsługa 1-nego przerwania zwiększać będzie tylko pewien licznik, a nawet gdyby miało to zająć 100-cykli i tak wszystkie 3 przerwania to 8.000.000 (8MHz)/100/3=prawie 27kHz. wątpię aby tak szybko następował wtrysk i przychodziły...
Te opóźnienia są na moje oko za małe. Spróbuj tego: void Delayms(unsigned int _ms) { unsigned int delay, delay_ms; for(delay=0; delay<_ms; delay++) { for(delay_ms=0; delay_ms<2665; delay_ms++) { asm volatile ("WDR"::); } } } Jest skalibrowane dla ATmegi 16MHz, jak...
Jak uruchomisz pomiar, to nie da rady inaczej i trzeba zaczekać. Możesz conajwyżej próbować przewidzieć kiedy wystąpi kolejne przerwanie. Jeżeli występują regularnie, to można zmierzyć okres za pomocą timera i następnym razem uruchomić przetwornik odpowiednio wcześniej. Tylko jeszcze pytanie, Jak to jest szybko, 1us, 1ms, a może 0? Czy odrazu po wystąpieniu...
Dzięki za szybką odpowiedź. Dobry pomysł. Myślałem też nad takim podejściem, ale widocznie jeszcze nie obmyśliłem tego optymalnie. Teraz już wiem, że może zadziałać :). Będę miał normalny LCD h**p://www.artronic.pl/o_produkcie.php?i... i RAM 32kB. Widzę, że podpiąłeś sporo peryferialii pod tą magistralę :). No to 1 problem się rozwiązał :) Pozdr....
Wielkie dzięki pubus! Przerwania ruszyły. Przegryzłem się bardzo dokładnie przez dokumentację i Twój program jako przykład dał mi dobre wskazówki gdzie i czego szukać. Teraz chciałbym posunąć się krok naprzód. Aktualnie umiem ustawić i uruchomić TIMER0 i TIMER2 oraz obsłużyć przerwania pochodzące od przepełnienia tych timerów. Chciałbym pozostawić...
Mamy pomysły. Użyjesz sprzętu który ma oba interface sprzętowe. Zdeklarujesz sobie bufory do wysyłania/odbierania jako bajtowe o odpowiedniej pojemności. Do tego liczniki danych w buforze. Program ma działać samoczynnie - ma odebrać dane do bufora po rs i wysłać dane samoczynnie z bufora po i2c po wyzwoleniu oczywiście. I2C zaraz po pierwszym przerwaniu...
Witam Na AVRach można to zrobić sprzętowo. Na przykładzie ATMega8, wejście T1 ustawić na zbocze opadające, liczni 1 ustawić na PWM lub inny rodzaj pracy i wpisujemy wartość o 1 mniejszą niż przepełnienie. W momencie pojawienia się zbocza opadającego na wejściu T1, licznik przepełni się i zmieni stan wyjścia OC1A natychmiast i jednocześnie jest możliwość...
Witam Mam słuchawki creative hq-1700 i wczoraj siedzac przed komputerek raptem zanikł w lewej słuchawce dźwięk a często zdarzało mi się przejechać krzesłem po kablu,i zauważyłem ze jeden jest przerwany (ten od lewej słuchawki oczywiscie) izolacje zdjąłem lecz nie mam pojęcia czy da się wogule taki kabelek skręcić.. niechcę wyżucać słuchawek do kosza...
Oryginalnie był też ustawiony CKDIV8 - jeśli nadal jest zaprogramowany, to teraz procek będzie chodził tak, jak na zegarze 0.5MHz. ps. brakuje w kodzie przypisania szybkości zegara - bez tego kompilator bascoma obierze sobie domyślą wartość (chyba, że można podać prędkość zegara też w innym miejscu)
Czy jest ktoś w stanie wskazać w listingu ochronę SREG w obsłudze przerwania? Ja widzę "tylko" 32 rejestry robocze. :) "Czy jest ktoś w stanie wytłumaczyć" ;) ... taką serię zapisów do UDR :?: loop_s1_krancowka: ldi a, 1 // wyslanie sygnalu ze zadzialala krancowka out UDR, a // ldi a, 0x4B // out UDR, a // ldi a, 0x00 // out UDR, a // mov a, pom1...
Wyraziłem się nieprecyzyjnie. Oprócz tego, że uruchamia mi się przykład z USB i przerwaniami (link podałem w poprzednim poście), uruchomiłem również bez problemu framework MSD (chyba ze strony atmela). mariuszlorenc pisał, że miał problem z uruchomieniem czegokolwiek z atmela. Teraz coś nie mogę znaleźć linka do zip-a.. Jeśli komuś potrzebny - mogę...
Jak w temacie. U mnie w programie występuje dziwny błąd. Może najpierw fragment kodu, a właściwie cały mój plik główny: #define F_CPU 8000000UL #include <avr\delay.h> #include <stdlib.h> #include <avr/interrupt.h> #include <avr/signal.h> #include "HD44780.h" main() { sei(); TCCR0 = 1<<CS02 | 1<<CS00; // czyli clk/1204...
No wlasnie tego chcialem uniknac. Glupia sprawa bo niby procek szybki a nie ma tak prostej funkcji. Niestety mam jeszcze inne przerwanie ktore musi miec wiekszy priorytet i zawsze moge trafic na moment kiedy nie zdaze wejsc do tego od pin change bo akurat bede wykonywal to wazniejsze ktore nie moze byc przerwane.
hipotetyczna sytuacja o ktorej napisano w pierwszym poscie jest... hipotetyczna. [; najpierw wystarczy po prostu wyliczyc, a potem nakazac stworzonym przez siebie funkcjom wyslac te dwa bajty - problemu nie ma. jak musi byc super szybko, to przeciez uart przyjmuje tylko 1 bajt, wiec drugiego nie dostanie dopoki nie zostanie on obliczony, bo dopoki nie...
To dziala idealnie i wlasnie o to mi chodzilo. Dzis probowalem poskladac to w calosc i niestety znow mam problemy :| Mianowicie nie wiem gdzie umiescic odczyt zegara I2C i wyswietlanie na LCD. Myslalem, ze odpowiedni do tego bedzie Timer0 i oto wiekszy fragment kodu: #defineTIMER0_CLK 0x01// 1<<CS00 #defineTIMER0_CLK_8 0x02// 1<<CS01 #defineTIMER0_CLK_64...
z moich obserwacji 'na szybko' wynika, ze przerwania standardowo definiowane przez __attribute__ ((interrupt("FIQ"))) cos nie chca dzialac, wiec profilaktycznie spytam - czy w gcc w aktualnej wersji nadal jest blad w tworzeniu poprawnego prologu i epilogu dla tego typu przerwan? czy tez moze ja cos poknocilem i dlatego nie dzialalo (nie wchodzi w ogole...
Najprostsze rozwiązanie - w przerwaniu od czujki uruchom sprzętowy timer. Przerwanie od timera powoduje włączenie alarmu. Jeśli użytkownik wyłączy system przyciskiem, to w procedurze przerwania przycisku wyłączasz timer. Żeby wszystko działało jak trzeba, musisz zezwolić na zagnieżdżone przerwania (czyli żeby ISR od timera mógł się wykonać w momencie,...
Od dłuższego czasu funkcjonuje na forum temat o wpadkach. Ja proponuje pochwalić się imprezami które przerwała pogoda. w tym roku dwie. Dybuk Festiwal w Pyskowicach. Pierwszego dnia na Masaili Nas dobrze zlało ale deszcz jak deszcz. Drugiego - od rana świetna pogoda upał aż miło. Nagła zmiana ok 16.00. I mega Burza a jeszcze większym wiatrem. Świat...
Fakt, temat dziwaczny. Przykład - zliczanie zbocz w przerwaniu. Kod obsługi przerwania wygenerowany w C vs najprostsza obsługa asemblerowa. Policzyć cykle zegarowe w jednymi drugim przypadku i przeliczyć na dopuszczalną częstotliwość zmian na linii wejściowej przerwania.
To nie są problemy Bascoma, w bascomie można wiele rzeczy szybko zrobić, tylko jak ktoś go nie zna to najłatwiej i naszybciej jest na niego psioczyć i wylewać swe żale. ale ok, skoro ty (o ile dobrze zrozumiałem) w jakimś tam przerwaniu wysyłasz coś poleceniem PRINT przez łącze RS232 a następnie w tym samym przerwaniu czekasz na odbiór przez RS232 (waitkey)...
A nie lepiej po prostu wszystko na timerach i przerwaniu? Tak co mi na szybko przychodzi do glowy tolinie podpiac pod przerwanie, ustawic na detekcje zmiany zbocza. Zrobic jakas zmienna ktora mowi czy jest to przerwanie startujace czy konczace. Jesli startujace to zczytujesz czy jest to 0 czy 1 i start timera. Jesli przerwanie konczace to stop timer...
morswin89 -> naucz się sprawdzać po kolei co może nie działać. Bo teraz piszesz, że już nawet ci pętla główna nie działa - więc co? wszystko padło? najpierw sprawdź sobie czy działa ci przede wszystkim przerwanie komparatora (podłącz sobie diodę LED na wyjście, które przełączasz w przerwaniu i symulując ręcznie napięcie na wejściu - patrz co się z nią...
Zaczynam zabawe z mikrokontrolerami i chciałem napisac w bascomie na ATiny2313 stoper liczący z dokładnościa do 0,01 ale utknąlem na wyswietlaniu aktualnego czasu na lcd - to znaczy nie ma z tym problemu ale funkcja lcd jest strasznie wolna. Przerwanie zglaszane jest co 10 ms i mam wrażenie ze w tym czasie komenda lcd nie jest w stanie wyslac wszystkiego...
Powiedzcie mi tylko, wowczas pisze go normalnie jak kazdy inny, ale uzywajac atrybutow BOOTLOADER SECTION czy nie?. Bo jesli tak, to sprawa przerwania znowu pozostaje otwarta, jak przesunac adres przerwania do sekcji boot. Jesli jednak nie to jak przesunac calosc programu podczas kompilacji/linkowania do sekcji bootloadera? Jedyna różnica jaka się...
W przerwaniu możesz odrazu odrzucać te dwa znaki No i tak robię poprzez pierwszą pętlę do-while, odrzucam pierwsze "znaki specjalne", a poprzez pętle while odrzucam znaki końcowe. Dodano po 22 Wykombinowałem jeszcze coś takiego wg. waszych wskazówek Na razie tylko kod przerwania UART: { //LCD_WriteText("1"); UDR; if ((UDR!=0x0A)&&(U...
klops_mops ---> masz dwa wyjścia żeby ci nie mrugały te wyświetlacze w czasie PRINT'a ;) - innymi słowy mówiąc aby procedura wysyłania RS232 nie zakłócała procedury multipleksowania 1. prostszy sposób - zwiększ tą kocią prędkość RS232 na jakąś ludzką - chociaż 9600bps to już praktycznie nie powinno ci mrugać a jak dasz każdą większą to już będzie coraz...
do kwesoly tak w main mam sei() zaraz poz init uart kodu nie podawalem calego gdzy jest dosc dlugi i odpowiada glownie za klawiature 4x4 i operacje wykonywane na niej co do spowolnienia nie chodzi mi o to zeby to dzialalo szybko / to jest tylko test czy przerwanie dziala
moim zdaniem, to może nawet i się wywołuje to przerwanie, tylko że nie ma czasu się dokończyć. Nie powinno się raczej wywoływać procedur, a zwłaszcza kobylastych z procedur obsługi przerwań, tym bardziej, że to jakiś szybki baudrate (UBRRL==10) a printf nie wiadomo ile się wykonuje. Może masz taką sytuację, że zanim procesor skończy obsługe przerwania...
Hierarchię szybkości dobrze rozumiesz. C jest też językiem wysokiego poziomu- chociaż informatycy nazywają go makroasembler. Ale z Bascoma też da się sporo wycisnąć. Spróbuj opcji "nosave"- może Bascom nie korzysta w tym wypadku z tych rejestrów. Po za tym- szybkość zależy od zegara(kwarcu)- jak w komputerze.
Otóż zliczam czas na timerze 2 i co 1 sekundę generuje mi przerwanie obsługiwane w procedurze signal. Jednak gdy jestem w menu które wywoływane jest za pomocą przerwania: ISR_BLOCK, czas nie jest liczony. Jak zrobić by priorytet przerwania Timera2 był większy niż przerwania zewnętrznego. Nie mogę ustawić ISR_NOBLOCK bo zapcham szybko stos. Czy w AVR...