Dziękuję za odpowiedz. Co do uwag - tak mam podpięte rezystory, a rozkaz _VB(INT0|INT1); rzeczywiście nie będzie działać poprawnie. Jeśli chodzi o drgania styków - zwykle je eliminowałem, ale w tym wypadku widziałem testując układ, że ich nie ma - chociaż w rzeczywistości były eliminowane przez długość przerwania. Moją ideą było uśpienie uC, i wybudzenie...
Witam!! Chce zbadać długość przerwy pomiędzy bitami na INT0. Napisałem coś takiego, ale nie wiem czy ma prawo działać?? Jak to zmodyfikować? Kod: ISR(INT0_vect) { int start_DCF=0; int licznik_50ms=0; int czas_przerwy; while(start_DCF==0) { TCCR0 |= ((1 << CS00)); // Ustawienie timera T0 TCNT0 = 0; //zerowanie...
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...
Każda aplikacja osadzona na ogół zawiera w sobie zestaw funkcji. I nawet najprostsza, na przykład do regulowania temperatury, obejmuje szereg zadań, takich jak odczytywanie danych wejściowych od użytkownika lub z czujnika temperatury/wejścia ADC, wyświetlanie zasobów na wyświetlaczu LCD i sterowanie wyjściem zarządzającym pracą wentylatora/grzałki itp....
Witam Piszę program, który ma mierzyć długość impulsu podawanego z zew. źródła jakim jest odbiornik RC, częstotliwość impulsów to 50Hz, a ich długość mieści sie w przedziale 1ms-2ms. To mój pierwszy program na AVR w którym obsługuje przerwania zew. i mam pewien problem, program już napisałem, sprawdziłem go na symulatorze i wydaje się działać poprawnie,...
Witam. Jeszcze raz ponieważ nie mogę tutaj czegoś pojąć... W związku z tym, że do uC mam doprowadzony kwarc 11.0592MHZ, Timer jest 16-sto bitowy, najdłuższy możliwy do odmierzenia czas to jest: 12*65536/11.0592MHz co nam daje około 0,071 sekudny. Teraz wyliczam częstotliwość: 11.0592MHz/12 daje nam 921600. Żeby móc precyzyjnie odmierzyć czas zrobiłem...
Witam. Tworzę mały projekcik i natrafiłem na pewną zagwózdkę. Na początku wprowadzenie co układ ma robić i jak działać. Układ składa się z części analogowej, tzn. dwóch detektorów tonu (LM567) odpowiedzialnych za detekcję "bitów" łącza fizycznego. Chodzi o to, że rozpoznają "swoją" częstotliwość i gdy stwierdzą zgodność z obwodem czasowym, na swoim...
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...
Witam. Potrzebuję pomocy odnośnie tego podprogramu obsługi przerwania. Kod pochodzi z przykładowego pliku programu dołączonego do książki: //podprogram przerwania ----------------------------------------... void T0_int(void) interrupt 1 using 1 { static BYTE count=0; TH0 = TH0RELOAD; // reload Timer0 registers TL0 = TL0RELOAD; Buzzer=1;...
Specjalna struktura w pamięci EEPROM (w wewnętrznej pełen rok się raczej nie zmieści) lub FLASH o stałym rozmiarze dla każdego wpisu, wyszukiwanie binarne i zestaw czterech warunków. Jeśli tablica będzie posortowana według klucza z datą to wyszukiwanie binarne będzie szybkie (max. 8 iteracji). Stąd będziesz miał już właściwy indeks (offset). Potem sprawdzanie...
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...
Witam Czy moze mi ktoś powiedzieć jak w poniższym programie do pamieci eeprom wew do komórki o adresie 1 jest wpisywana długość (adres ostatniej danej data)? Ściślej skąd pod adresem 1 bieże sie ilość danych data? Readeeprom Dlugosc , 1 'odczytuje adres końca napisu Pozdrawiam Pawli 'C019d 'Wyświetlanie biegnącego napisu z pomieci EEPROM 'teraz długość...
Drodzy koledzy, Programując uC ATTINY13 natknąłem się na pewien problem związany z obsługą przerwania od czasomierza. Poniżej krótko co program mniej więcej ma robić. Do jednego z wejść mikrokontrolera doprowadzony jest sygnał. Pojawiają się tam impulsy o różnej długości i na dodatek w różnych odstepach czasu. Zadaniem programu ma być wygenerowanie...
Witam Poniższy program mierzy długość trwania impulsu / stanu niskiego podanego na INT1. Pomiar jest wyzwalany przerwaniem, zboczem opadającym, następnie następuje włączenie timera i przestawienie przerwania na zbocze narastające. Gdy ono nastąpi jest wyzwalane kolejne przerwanie, które zeruje zatrzymuje timer. Odczyt timera (rejestr TCNT1) następuje...
Generalnie, W Bascomie obsługa RC5 pozostawia wiele do życzenia dlatego też Mark w najnowszej wersji ma wprowadzić obsługę RC5 na przerwaniu ICP ("prawdziwie" w tle) według poniższego kodu, który udostępniam i polecam: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer1 = Timer , Capture Edge = Falling , Prescale = 8 '1 tick= 1...
Witam Chciałem oprócz standardowego pakietu dla wszystkich slave'ów wysyłać od czasu do czasu krótszy pakiet W masterze wysyłam tak: tylko dwa razy na dobę Przerwanie pętli For..Next - bajt 7 i 22 ( warunkowo, gdy pakiet krótszy ) zawierają wartość 255, która pełni role informacji o końcu pakietu Przez wprowadzenie i wykorzystanie informacji o długości...
Moj blad, po kazdym Sleep'ie jest taka funkcje Read_Comm(hCommDev, &Buffer_I Możesz w pętli testować długość odbieranego pakietu albo sprawdzać ilość znaków w buforze odbiornika, a jeśli nie znasz jego długości, przed następnym połączeniem opróżniać bufor odbiornika. Jeśli chcesz, żeby w czasie czekania na dane program był aktywny, wystarczy komunikację...
Odizolować głowicę frezującą. Podłączyć ją pod pin uC (tu przydałyby się jakieś zabezpieczenia np. transoptor). Sterować w końcowej fazie powoli (po jednym kroku) silnikiem krokowym opuszczając głowicę frezującą z narzędziem. W momencie dotknięcia stołu nastąpi zwarcie narzędzia z masą co powinno wywołać zmianę stanu końcówki uC. Później podnosić na...
Prawie że na kolanie napisane: #include <avr/io.h> #include <avr/interrupt.h> #define USART_BAUDRATE 57600 #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) // maksymalna liczba znaków polecenia #define UART_MAXBUFF 16 // bufor znaków polecenia (UART_MAXBUFF znaków + jeden pod znak zero)...
Tak właśnie myślałem że używanie przerwań i poleceń wait nie jest dobrym rozwiązaniem. Dzięki za odpowiedź. To nie ma nic wspólnego. Po to są przerwania żeby w ten sposób z nich korzystać. Natomiast twój problem bierze się z całkowicie czegoś innego. Po prostu tak napisałeś przerwanie i tak często je wykonujesz, że u ciebie w tym konkretnym przypadku...
Bytematch nie używa żadnego specjalnego przerwania że boisz się iż ci ich zabraknie ;) .... jakby było takie uzyte to zostałbyś poinformowany o tym w Helpie. Za to przykład, który wyczytałeś z forów internetowych rzeczywiście mógłby działać kiepsko i doszedłbyś szybko do wniosku, że coś do kitu działa ten mechanizm. Zawartość tej procedury powinna być...
Kod aktualnie jest taki: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> int on_time=0; int potA=0; int freq=0; int potB=1023; void timer_on(){ TCCR1A|=(1<<COM1B1) |(1<<WGM11) |(1<<WGM10); TCCR1B|=(1<<WGM13) |(1<<WGM12) |(1<<CS11); } void timer_off(){ TCCR1A&= (0<<COM1B1); } void init_adc(){...
Witam Szukam Osoby która przygotuje mi do przerywania zasilania. napiecie 3v maksymalna moc 3W. z możliwością zmiany długości czasu otwarcia od 15ms do 50s długość całej fazy stała 6s, urządzenie będzie pracować w 10m cyklach raz na dobę, Przeskok może być skokowy Całe urządzenie generator impulsów elektrycznych o długość impulsu 15ms do 40ms, napięcie...
- Nigdzie nie upewniasz się, że odebrane zbocze jest faktycznie początkiem bitu start a nie środkiem transmisji (tzn. że od poprzedniego zbocza minęło wystarczająco dużo czasu). Czasy pomiędzy ponownymi strzałami z pilota to kilka ms ARAIR. Jakbym mógł się więc wstrzelić w środek transmisji? - Jeżeli chcesz faktycznie robić uproszczony odbiór a'la...
W poprzednich odcinkach wiel;e osób zwracało ci uwagę, że tłumaczysz starocie, w dodatku starocie, w któych jest masa błędów i merytorycznych i implementacyjnych. Proszę nie brać tych uwag do siebie - krytyka dotyczy autora artykułu, co wynika zapewne z faktu, że od jego napisania upłynęły 2-3 dekady! Niemniej biorąc pod uwagę także krytykę wcześniejszych...
Czy proces 1 może byc przerwany przez kolejną transmisję i co wtedy ma się dziać z niezakończonym procesem 1 ?? proces-1 - jest automatem satnów zależnym od zmiennej stanu "IOSTATE", odpowiedzialnym za odpowiednie zachowanie się układu na odbierane pakiety, inicjuje pakiety do wysłania, oraz podejmuje decyzje co zrobić z odebranym pakietem, (czyli...
Do tego sluzy "Input Caputre Unit" ktory jest w wielu AVRach. Podlaczasz badany sygnal do "Input Capture Pin", odpowiednio ustawiasz Timer i AVR przy zmianie stanu na pinie zatrzasnie aktualna wartosc licznika w "Input Caputure Register", ktora mozesz sobie odczytac np. w obsludze przerwania. Jesli chcesz wiecej szczegolow to poczytaj dokumentacje ;)...
Witam wszystkich. Parę razy już mi pomogliście, to może i tym razem pomożecie. Do nauki programowania uC w C wykorzystuję płytkę AVT3505, i o ile umiem pisać proste programy na niej, to z przerwaniami nie miałem do czynienia. A od pewnego czasu chodzi mi po głowie pomysł zbudowania komputerka do samochodu. Wszystkie projekty jakie znalazłem były pisanie...
Wydaje mi się, że od razu warto pobawić się przerwaniami. To rozwiązanie jest eleganckie i dużo się nauczysz ;)
Witam, Mam problem z przerwaniem. Chcę zrobić coś takiego, że po naciśnięciu przycisku zeruje się odliczanie. On Int0 Przerwanie Enable Int0 Config Int0 = Falling Enable Interrupts Dim I As Integer I = 0 Do Cls Lcd I Waitms 500 Incr I Loop Przerwanie: I = 0 Return W tym momencie działa to tak. Int0 (z procka) podpinam do GND . Gdy przerwę obwód...
erfro : no i w czym problem? Przeniesienie wektorów przerwań do sekcji bootloadera masz w trzecim poście aktualnego tematu, załączenie przerwań przez sei(). Robisz jeden bufor FIFO o długości 1KB (można mniej) w oparciu o tablicę i dwa kursory, w przerwaniu od usartu zapisujesz bajt do buforu FIFO a w pętli głównej sprawdzasz, jeśli w buforze jest...
No, coś mi się wydaje, że jednak może nie do końca rozumiesz właśnie to wszystko i stąd takie podajęcie. Co to w ogóle dla ciebie znaczy, że: Bo niby po czym innym program ma poznać czy odczytane dane pasują w tym określonym miejscu ? .... toż twoja próba obsługi tego przerwania - pokazuje, że w 1000% mógłbyś wykorzystać mechanizm z Bytematch Ustawiłbys...
Niezbyt to mądre pytanie. Bo co to ma niby znaczyć "w programie głównym będziemy używać przerwań"? Ale odpowiedz sama się nasuwa. Może nastąpić przepełnienie stosu. PIC-e nie mają normalnego stosu tylko specjalny stos sprzętowy umieszczony nie w głównym RAMie lecz w osobnych rejestrach. I każdy tym PICa ma określoną długość (głębokość) tego stosu. Za...
Dlaczego w przerwaniach zewnętrznych zezwalasz/blokujesz obsługę przerwania od Timer0- bo nie od timerów ale tylko od TIMER0. Zezwolenie ma obsługę przerwania od przepełnienia TIMER0 powinno być w main. Podobnie ustawienie bitów CS00- CS02. Ustawienie ich na 0,0,0 powoduje zatrzymanie licznika. To może być czasem potrzebne- ale nie w Twoim programie....
Witam 1.Czy używając semaforów lub kolejek w przerwaniach, minimalny czas odebrania takiego semafora, lub kolejki wynosi Tick, czyli 1 ms? Czyli w teorii max 1000 razy na sekundę..? 2. Jakie niebezpieczeństwo niesie za sobą obsługa całego przerwania w przerwaniu np od USB, nie używając semaforów lub kolejek. No bo działać to działa. 3. Co jeśli: -obsłużę...
Tylko dodam, że w pewnych okolicznościach nawet dla zmiennych długości 1 bajta operację trzeba zamknąć w atomic_block, np: if(x) x--; nawet dla x będącego zmienną bajtową, jeśli to samo x będzie modyfikowane w przerwaniu to całość musi zostać wykonana atomowo, inaczej będzie problem. Np. w przerwaniu też mamy if(x) x--; Teraz jeśli x wyniesie 0, i pomiędzy...
Dziękuję za podpowiedzi:) Wstawiłem konda 100nF, próbowałem wyzwalać przerwanie na niski stan jak i na zbocze opadające i dalej to samo.. Czy jeśli napiszę taki kod: ISR(INT1_vect) { _delay_ms(100); while(bit_is_clear(PIND,PD3)... LCD_Clear(); LCD_WriteText("Co tam!"); _delay_ms(1500);...
Czy twoja konfiguracja jest prawidłowa? [syntax=C] void rfStartup2(void) { GPIOA->BRR=0x800; delay(1000000); RFCS0; delay(DELAY); spi(0x7|WR); spi(3); //xton=1,pllon=1 spi(0x03); //rxmpk=0<-- TU ZMIANA, bylo 0x10(rxmpk=1) delay(DELAY); RFCS1; delay(DELAY); //RESET FIFUW RFCS0; delay(DELAY); spi(0x8|WR); spi(0x0); delay(DELAY); RFCS1; delay(DELAY);...
Cześć. To mój pierwszy post na forum dlatego witam wszystkich. Post można podzielić na dwie części: to działa i to co nie działa. Zacznę od tego co działa. Do pinu PD0 przypisałem przerwanie. W procedurze obsługi tego przerwania zwiększam zmienną o 1 i wyświetlam na LCD. Kabelkiem połączeniowym połączyłem pin od przycisku tj. PB7 do PD0. Przerwanie...
Witam wszystkich bardzo serdecznie. Chcę zaprogramować uC ATmega8 w taki sposób aby mierzył mi długości sygnałów podawanych na wejście. Oczywiście przy użyciu przerwań. Nie wiem dlaczego program nie reaguje przerwaniem na zboczu opadającym sygnału. Poniżej zamieszczam kod programu. Jeśli mógłbyś zobaczyć i podpowiedzieć w czym tkwi problem byłbym dozgonnie...
Podczas obsługi przerwań podczas zliczania impulsów nie dzieje się nic innego poza inkrementowaniem tych dwóch zmiennych. Wkleiłem je tu w całości tak jak są. Poniżej zamieszczam przebiegi czasowe zarejestrowane oscyloskopem. Na potrzeby sprawdzenia długości trwania obsługi przerwań dodałem do nich instrukcje ustawiające wyprowadzenie jednego z portów...
Ja bym to zrobił tak. Jeśli czasy będą w sekundach. Ustawić CTC na 1 sekundę. W pętli głównej, lub przerwaniu ADC w zależności od wartości ADC ustawiamy zmienną x. Jeśli x > 0 to led świeci. A w przerwaniu od CTC deinkrementujemy x, x--;
Masz rację. Mam właśnie taką i działa w odległości 6km od miast. Może w weekend rzeczywiście przyjrzę się tej oryginalnej antenie i jej okablowaniu. 6km od miasta to mam na 5 cm żyły wewnętrznej wystającej z ekranu kabla antenowego (kabel i wtyczka z dawnych czasów, więc bez lipy) na Pioneerze. Jak fabryczna na wzmacniacz, to częste źródło problemów....
:arrow: robię mały projekt: jeden słupek potrójnej sygnalizacji świetlnej, z przyciskiem, który będzie służył do zmiany długości cyklu świateł (jeden z pięciu predefiniowanych). :arrow: na chwilę obecną mam działające światełka, dodałem przerwanie przycisku (będąc świadomym jego prymitywności/braku poprawności działania), teraz chciałem dodać timer...
1. Podrzucę Ci pomysł, pomocny lub nie. Zrobiłem PWN Atmega8 (czyli straszny dziad) generator miłego dla ucha sinusoidalnego dźwięku (w oparciu o przerwanie timera). Czystość uzyskałem, gdy na samym początku przerwania ustawiałem wartość ze zmiennej do PWM, a potem mogłem ją sobie opracowywać "na nastepny raz" do woli, nieczuły że obliczenia (mnożenia,...
Freddie Chopin wyczerpał temat :) dzięki! Dodano po 2 pukico napisał: (at)Freddie Chopin IMO implementacje SPI na przerwaniach w przypadku SPI mają zerowy sens (jedynie jeżeli mamy problem z ilością RAM i liczymy każdy bajt ale wtedy można - a raczej trzeba się pogodzić z dużymi dziurami między paczkami). DMA w przypadku SPI jest dość łatwe do implementacji...
Tak. Po pierwszym przerwaniu. Chodzi o to, że odczytując MB20 dwukrotnie w kodzie OB1 możesz otrzymać dwie różne wartości. To samo w sobie nie jest nic złego, ale łatwo popełnić błąd w programie zapominając o tym fakcie. Teraz zrozumiałem po co używać przerwań gdy pętla programu jest długa, a brak HSC i zostaje nam zwykły licznik. Możemy troszkę przyśpieszyć...
1. setjmp / longjmp na pierwszy rzut oka by było miłym zestawem. Ale jak pomyśleć głębiej longjmp by musiał być wołany z przerwania, wywołaniu by pasowało zrobić to dla bezpieczeństwa jak każdą ambitniejszą funkcję przy odłączonych przerwaniach, i kto flagę wycofa? W moim umyśle handler/funkcja przerwania MUSI się kończyć w swój normalny sposób. Hmmm,...
Witam, Zwracam się z prośba o pomoc w rozwiązaniu problemu. Mianowicie mam dwa przewody o długości 50m każdy. Przekrój 0.5mm^2. Zależy mi na tym aby wykrywać zwarcie tych dwóch przewodów (nie zależnie na jakiej odległości) oraz przerwanie jednego lub drugiego. Do tej pory stosowałem dzielnik napięcia, na jeden przewód podawałem 5V 1A a na drugi 3.3V...
Kabel usb wychodzący z klawiatury został przerwany. Po rozkręceniu wyciągnąłem jego resztki i jest to kabel 5-cio żyłowy a kolory to po kolei: czarny (gruby), czarny (cienki), zielony, biały, czerwony. Kabelek był zakończony 5-cio pinową wtyczką więc pewnie znajdzie się jakiś zamiennik. Zależy mi na względnie dobrej jakości kabla, długość nie gra dużej...
Wydaje mi sie , że ... Twój projekt ma chyba coś wspólnego z samochodem hmmm...:?: Do rzeczy: Czy możesz zdradzić w jaki sposób można to zrobić? Czy mam sprawdzać przy każdym przerwaniu timera, czy na którymś z wejść nie pojawił się impuls? Gdybyś zliczał impulsy kierując się stanem pinu , wyszły by Ci herezje. Trzeba programowo zliczać zmianę stanu...
chciałeś przerwanie a wcale go nie używasz (prawie wcale). to Samo można zrobić w programie głównym poprostu sprawdzając stan scon.0 a tak zajmie mniej miejsca. Radze zmienić koncepcje. Rozumiem że chcesz żeby ci wypisywało jakieś cyfry czy znaki na lcd. No to zrób zmienna zliczajacą znaki, potem jakąś zmienna typu bufor (o długości taką jak ilość znaków...
Tiny12 ma stos sprzetowy 3-poziomowy czyli w jednym momencie możesz mieć wpisane tylko 3 adresy powrotu. Jezeli masz jeden użyty bo jesteś w przerwaniu to innych odwołań np. przy rcall może być co najwyżej 2 poziomy. Jak jest więcej to musisz przerobić program, czasem kosztem długości kodu. Popatrz jak były pisane programy na 1200. Pozdr. N.
Jeśli piszesz w ASM to wszystkie zależności czasowe sa przejrzyste. Kod o długości 2tys linii nie jest mocno uwikłany w zależności czasowe i ta metoda się sprawdza dobrze, ale chyle czoła przed Twoją, postaram sie następnym razem ją zaimplementować, mimo, że staram się unikać przerwań. Może to się zmieni... ;) Pozdrawiam
Witam, pewnego razu podczas oglądania filmu przesyłanego w czasie rzeczywistym za pomocą NFS(Network File System) komputer zawiesił mi się, zrestartowałem i puściłem film dalej. Jednak po kilku minutach komputer znów się zawiesił. Postanowiłem więc go zrestartować i wejść via ssh, wszystko wyglądało OK. Zapuściłem fsck, który kazał mi zrobić --rebuild-tree....
Witam Pod koniec wakacji kupiłem sobie zestaw radio plus antena do samochodu osobowego. Poszukałem opinii na temat radii i anten i wybrałem Presidenta Walkera i Lemma AT1200. Zestaw zakupiłem na allegro. Okazało się, że muszę przedłużyć kabel, więc pojechałem do sklepu aby go zakupić. Po krótkiej rozmowie sprzedawca stwierdził, że do takiego radia ta...
Dobrze, że jakikolwiek printf działa w tym kodzie... Te printf'y to w kodzie przykładowym były więc to nie ja dopisywałem. A z tymi fragmentami kodów będę próbował. Co do długości kodu w przerwaniu - wiem o tym i poprawię to, jak będę miał pewność, że przerwanie się wykonuje. Dodano: Witam ponownie Dopisałem do obsługi przerwania kod, który będzie...
Radyjko Rondo przestało mi grać na falach długich a na średnich gra. Dopatrzyłem się że uzwojenie na pewnej cewce jest przerwane czy to będzie ta przyczyna ? Cewka na zdjęciu. Wymiary : długość rdzenia 33mm średnica rdzenia 7mm średnica cewki po uzwojeniach 14mm Cewka (ta z cienkiego drutu) po prostu się porwała może czymś zaczepiłem jak odbiornik uruchamiałem,...
Czy przez to, że tak wyładowałem to przerwanie może być problem z odbieraniem danych na czas? No nie masz tutaj strasznie czasochłonnych działań więc raczej nie w długości kodu obsługi przerwania problem leży. Co najwyżej możesz pominąć oryginalne biblioteki i dostać się do rejestrów bezpośrednio. Co do wysyłania to po co to jest? while (BufStruct.MultinetOutBufferPtr[...
Nie jestem za biegły w timerach i się ciut pogubiłem. Proszę zatem o podpowiedzi. Próbuję ustalić ile czasu będzie trwał impuls podawany na INT procesora a jednocześnie zmierzyć czas od początku tego impulsu do początku następnego. Jednym uP podaję impulsy na drugi uP. Do Portc.7 = 0 'stan wysoki Waitms 1 Portc.7 = 1 'stan niski Wait 5 Loop Drugim uP...
Witam, nie do końca wiem jak sobie poradzić z takim problemem. Mam dość długą magistralę z podłączonymi do niej urządzeniami, każde z tych urządzeń może na wspólnym przewodzie zgłosić do ATmegi32 przerwanie INTx. I teraz jak się za to zabrać myślałem nad układem poniżej ale nie jestem pewien jak dobrać elementy i czy coś takiego ma w ogóle szanse działać...
Tak robiłem w poprzednim przypadku, kiedy impulsy były powyżej 1us, przerwania nie były potrzebne. Tylko że traciłem kilkadziesiąt porcji danych, kiedy musiałem przeliczyć z danych wynik. Teraz chciałbym system polepszyć, tzn zbierać długość impulsów poprzez przerwanie. Ponieważ urządzenie będzie rozwinięciem poprzedniego projektu, nie mam możliwości...
Wiec po przeczytaniu i przejrzeniu sporej ilości stron w internecie i na elektrodzie, posiłkując się kilkoma podobnymi tematami stworzyłem taki kod [syntax=c]#include<avr/io.h> #include<avr/interrupt.h> #define UART_MAXBUFF 8 void UartInit(void); // bufor znaków polecenia (UART_MAXBUFF znaków) char uart_rx_buffer[UART_MAXBUFF]; // flaga...
Witaj, Za co jest odpowiedzialny Timer0? Za określenie częstotliwości granicznej? Czy masz wolny Timer 1? Jeżeli tak, to moim zdaniem strasznie sobie to komplikujesz. W końcu Twoim zadaniem jest zmierzenie okresu przebiegu o częstotliwości, którą podajesz z generatora, a od tego jest tryb Capture, czyli pomiar długości impulsu. strona 83: Input Capture...
A tak mamy: Dwa przewody oddalone od siebie ok.2mm, długość przewodów ok. 60mm. W jednym z nich popłynął prąd rozładowania kondensatora 100nF przez mikroprzełącznik. A to jest napięcie w drugim. Mało- tylko 0.6V. Ale warunki mało optymalne- płytka stykowa więc trzeba dodać rezystancje styków i nieoptymalne prowadzenie masy. Jak będe miał chwilę to zlutuję...
Witam Posiadam kabel ziemny LAN T-2 3x2x0,75 (linka). Jest on przerwany w połowie docelowej długości, używany jest do transmisji MODBUS RTU. Jak taki kabel najlepiej połączyć? Znacie może jakieś sposoby, które nadają się do wykorzystania w ziemi jak i takie które nie sprawią jakiś odbić i problemów w trakcie komunikacji. ps. nie wiem czy dobry dział...
Okrojona itoa daje rade, krru twoja rada poprawiła nieco działanie - zamiast 125 pomiarów zapisuje aż 112, wcześniej różnica była większa i randomowo się zmieniała. Zastanawia mnie fakt taki: winą obarczałem prędkość zapisu na kartę ale jak zamiast 6 wysyłam 4 znaki to błąd jest taki sam. Bo długość nie ma znaczenia - i tak trzeba odczytać, zmodyfikować...
Czyli Twój pseudokod to jest taka jakby kolejka FIFO? No niezupełnie. To co przedstawiłem buffer_is_empty() zwracająca prawdę lub fałsz) należy sobie dopisać. Sprawa jest dosyć prosta np. w przypadku USART. Wystarczy dodać bajt do bufora, później - jeśli bufor nie jest pusty - pobrać bajt i wysłać. W przypadku I2C sprawa jest o tyle skomplikowana,...
Witam, Mam taką funkcję w C++ z jakiejś biblioteki do odbierania danych z RS232: [syntax=cpp] int ReadUart(unsigned char *buf, int len) { BOOL ret; unsigned long retlen; ret = ReadFile(hPort, buf, len,&retlen, NULL); if (retlen > 0) //If we have data return (int)retlen; //return the length else return 0; //else no data has been read } [/syntax] Niestety...
W jaki sposób można ustawić priorytetowość przerwań? Mam taki problem: Za pomocą przerwań zewnętrznych mierzę długość impulsów na 2 wejściach.Wszystko gra do póki nie podłącze do atmegi USART który wypytuje co jakiś czas o te dane. Kiedy leci pytanie i Atmega ma przerwanie od USART co jakiś czas są przekłamania odnoście czasu trwania długości impulsu....
Na razie chciałbym sprobować zrobić bez przerwań. Wysyłam z programu. [syntax=c] #define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> #define BAUDRATE 9600 #define BAUD_PRESCALLER (((F_CPU / (BAUDRATE * 16UL))) - 1) //Declaration of our functions void USART_init(void); unsigned char USART_receive(void); void USART_send( unsigned...
Checkdisk działa z automatu i potencjalnie jest niebezpieczny dla dysku i danych. Robi się go na uszkodzonych dyskach tylko jeśli nie ma innego zastępczego a istotne dane zostały zabezpieczone. Jeśli koleżanka ma bardzo ważne dane to proponuję przerwać i rozpocząć od diagnostyki, kopii itp. w sposób bardziej profesjonalny. Długość pracy wynika z dwóch...
W moim projekcie sterownika do kotłowni mam problem z odczytem temperatur. Mam 9 czujników, problemu nie było, gdy były podłączone testowo na krótkich przewodach (3 przewody na czujnik). Czujniki DS18B20 są na przewodach o długościach od 2m do 10 m (najdłuższy 10m). Do momentu, gdy podłączonych jest 7 czujników wszystko działa poprawnie, problem pojawia...
Witam, Napisałem program dobierający dane poprzez UART4 z wykorzystaniem DMA, komunikacja ma docelowo odbywać się z giroskopem. Pierwsza ramka danych ma jednak inną długość niż pozostałe. Czy można zmienić długość bufora DMA po odebraniu pierwszej ramki? Próbuję to zrobić w ten sposób, że przy injcalizacji DMA podaję adres i długość bufora początkowego,...
Właśnie o to mi chodziło aby ktoś napisał jak mam dokładnie to zrealizować. W tym kodzie, który napisałem wyżej to w przerwaniu zrobiłem opóźnienie aby wyeliminować drganie styków. Długość opóźnienia dobierałem metodą prób i błędów. Wszystko działa i nie ma losowego wybierania 'programów'. Zmieniłem jeszcze aby po wciśnięciu przycisku program nie wykonywał...
Znaczy problem jest inny.... Przewód leci od pompki około 40 cm, potem jest przerwany na długości ok 16 cm i dalej leci do dachu. Muszę połączyć te dwa kawałki przewodów. Są jakieś gotowe zestawy?
Witam! Chciałbym napisać program na PLC firmy Siemens 1200 obsługujący niżej przedstawioną myjnią samochodową. Zasada działania myjni w pigułce: 1. Kierowca podjeżdża samochodem pod panel i wybiera jeden z trzech możliwych programów mycia. 2. Samochód wjeżdża pod taśmę transportową. Gdy czujnik nr. 1 wykryje obecność samochodu załącza się taśma. 3....
Obróbkę danych GPS jak najbardziej zostaw w przerwaniu, ale dorzuć zabezpieczenia przed przekroczeniem długości. Nie przesadzaj z tymi buforami "kołowymi", o ile masz gwarancję, że zdążysz przed następną porcją danych. Kod, który wkleiłeś, obejrzę nieco później,
Witam:) Od kilku dni próbuję uporać się z CAN. Po początkowych próbach z inicjalizacją funkcjami bibliotecznymi odpuściłem je sobie na rzecz inicjalizacji za pomocą rejestrami. Nie podobało mi się, gdy odkryłem, że funkcje ustawiały bit 16 w rejestrze CAN_MCR Odpowiednie zegary, GPIO (Rx-PD0, Tx-> PD1 oraz remap), kontroler NVIC ustawiłem wcześniej...
Inny problem tzn? Masz na myśli kiepską sztukę procesora? Filtracje zasilania? Prototypuję na ZL2AVR jeśli chodzi o te kwestie. Oscyloskop cyfrowy również będzie wprowadzał do wyniku swój błąd pomiarowy ze względu na to, że jego częstotliwość próbkowania też występuje jeśli się nie mylę, a analogowy? Czyżby jedynym rozwiązaniem aby sprawdzić dokładność...
A poprawił Kolega :D, A kolega to napisał takiego slave w 3 dni? Nie mam potrzeby pisania slave-a, a w poprzednim wątku atrakcyjnej oferty nie dostałem A jaka byłaby atrakcyjna? No i ofertę to skład się zamawiającemu a nie zamawiający. Zawsze tak było jest i pewnie będzie. Czxy to w sklepie, czy na przetargu czy też na aukcji, no chyba, że kolega zmieni...
Samochód to Alfa 147. Podstawa anteny FM zawiera wzmacniacz, zasilany osobnym kablem. Został uszkodzony bat, oplot jest przerwany w kilku miejscach po ugryzieniu kuny i dostaniu się wody pod izolację. Szukam odpowiedniego bata. Długość oryginalnej anteny wynosi 37,5cm. Czy mogę zastosować dłuższy bat 40cm, czy sztywno trzymać się 37,5cm? Przy niektórych...
w pętli nieskończonej sprawdzana jest flaga. Gdy f==1 wykonywane jest wyświetlenie danych i wykonywane jest czyszczenie flagi f=0; To właśnie miałem na myśli. Tak dopowiem tu tylko, że w tym podejściu warto całe wyświetlanie podzielić na uruchamiane j/w osobnymi flagami części np. osobno każda liczba dotycząca czego innego (np. czas, temperatura status...
cześć, odpowiadam na swój post ponieważ już rozwiązałem problem, a piszę to ku przestrodze innym, ponieważ studnia o nazwie głupota nie ma dna ;) Otóż wystarczyło spojrzeć na malutką (pare mm) śrubeczkę obok właściwej (zdjęcie) i odkręcić ją- była ona zaciskowa, szczęśiem w nieszczęsciu gwint obrobił się ale nie dużo... Dalej powierzchownie opiszę co...
Jakiś czas temu stanąłem przed problemem znalezienia miejsca przerwania jednej z żył w przewodzie wielożyłowym (przewód o długości ok 2 m). Rozwiązanie jest proste - miernik pojemności na zakresie pojedynczych pF (np multimetr) i wystarczy zbadać pojemność między dwoma żyłami nieuszkodzonymi oraz jedną uszkodzoną i nieuszkodzoną - pojemność jest proporcjonalna...
Mierzysz jeden kanał, czy więcej? Jeśli jeden, to nie używaj DMA, wyzwalaj konwersję w przerwaniu timera kilka razy na sekundę, wcześniej odczytując i przetwarzając wynik poprzedniego pomiaru. Zamiast średniej użyj filtra dolnoprzepustowego - było parę razy o tym - jedna linijka kodu. Jeśli masz mierzyć więcej kanałów ADC, zacznij od określenia potrzebnej...
Witam, pisze program w którym wykorzystuję 16 bitowy Timer1 z Atmegi 328. Najpierw konfiguruję go tak: [syntax=vbnet]Config Timer1 = Timer , Prescale = 64 'Kwarc 18.43MHz, 1/18430000 * 64 = 3.473us Enable Timer1 On Timer1 Impulsuj 'ISR[/syntax] a potem mam procedurę przerwania której zadaniem testowym jest wygenerować przebieg prostokątny: [syntax=vbnet]'---------------------ISR....
Witam, Potrzebuję opinii doświadczonych kolegów co do możliwość zespolenie uszkodzonej ścieżki. Kontakt z elektronikiem będę miał dopiero w poniedziałek, ale może doradźcie czy jest w ogóle sens. kiepsko widać na Twoich fotkach, więc sobie powiększyłem: to jest akurat bardzo łatwy przypadek do naprawy, ale jak nigdy tego dotąd nie robiłeś to najpierw...
Witam, Potrzebuję profesjonalnego lokalizatora przerwanego kabla. Muszę wykryć przerwę w kablu grzewczym w żelbecie. Dobrze by było jeśli to urządzenie miałoby możliwość pomiaru długości kabla, dodam, że urządzenia za 500-800 zł są bardzo mało skuteczne. Pozdrawiam
To kod z pierwszego postu, tylko konfiguracja przerwania jest: No to jeszcze zmień zamiast: [syntax=vbnet] Enable Interrupts Enable Timer2 Stop Timer2[/syntax] na: [syntax=vbnet]Enable Interrupts Enable Oc2 albo 'Enable Compare2 'robi to samo co linia wyzej [/syntax] ‘Stop Timer2 – nie jest potrzebny bo później potrzebujesz go ponownie...
Witam, posiadam elektronicznego pastucha- pracującego na zasilaczu 12V 1000mA. Do centrali podłączony jest przewód głośnikowy o długości około 150m zakopany w ziemi na głębokości około 7cm. Pytanie - jak zlokalizować miejsce przerwania powyższego przewodu? Dodam, że centrala wykrywa przerwanie przewodu. Nielogicznym jest odkopywanie 150m przewodu. Proszę...
Myślę, że pierwsze podejście jest jak najbardziej poprawne. Chodzi o to by po pierwszym przerwaniu wystąpił jakiś czas nieczułości na kolejne przerwanie zewnętrzne. Może on być nawet znacznie dłuższy- nie sądzę by ktoś chciał klikać przycisk do wyświetlania kilka razy na sekundę. Wybudzanie mikrokontrolera cyklicznie co 400ms z pewnością nie poprawi...
A co będzie, jak takie przerwanie zmieni wartość data w trakcie pętli while? Jest to oczywiście bardzo hipotetyczne rozważanie, ale może mieć miejsce w praktyce. Nic nie będzie, data będzie się różnić od local_data, a więc nastąpi kolejne przypisanie i kolejne sprawdzenie warunku. Dodano po 20 Tak przy okazji, jeszcze drobna uwaga do zapisu: [syntax=c]Data...
Zainstalowałem w ogrodzie, robota koszącego Cramer RM 2000. Robot wyświetla informacje o utracie sygnału pętli. Nadawanie nowego kodu, nic nie daje. Pętla ma ok 400m długości i nigdzie nie jest przerwana ani łączona. Czy ktoś z Was ma jakiś pomysł? Czy ktoś ma podobny problem z tymi robotami? Dzięki.
Warunki przemysłowe stanowią nie lada wyzwanie dla projektantów. Wszelkiego rodzaju zakłócenia przenoszone po zasilaniu, pojemnościami, indykcyjnościami itd. Rada. Ekranowanie, odsprzęganie. Zamiast linii sygnałowych o dużych długościach należy zastosować np. transoptory. Wskazane ekranowanie kwarcu (ostrożne i szybkie przylutowanie jego obudowy do...
Witam Rozwiązaniem problemu jest wykorzystanie możliwości bramkowania zliczania timera Tx stanem na wejściu INTx. Bramkowanie włącza się poprzez ustawienie bitu GATE dla odpowiedniego timera w rejestrze TMOD. Bit zezwolenia na pracę timera TRx ustawiony na stałe. Przerwanie zewnętrzne INTx wyzwalane zboczem opadającym. W procedurze obsługi tego przerwania...
da się, jest taki klej przewodzący tylko nie pamiętam jak sie nazywa - rozprowadzasz go na całej długości jak ścieżka biegnie i będzie działać, tylko uważaj żeby nie rozlać na inne ścieżki bo będą się stykać
Ustalasz długość odbieranych danych np. 2 bajty, wstawiasz licznik odliczający do 2 :) i łapiesz jeden bajt, potem drugi, Kasujesz licznik i od nowa :) wysyłasz następne 2 bajty itd. ...
Zawsze można wykonać sobie nowy kabel, ponieważ te montowane seryjnie sa raczej słabej jakości. No chyba, że masz słuchawki powyżej 200zł. Poza tym istnieje wówczas możliwość dopasowania długości. Lecz odnośnie naprawy prawdopodobnie jest jak mówił kolega Przewody zapewne pokryte są emalią i dlatego nie działa, musisz pozbyć sie tej emalii, polutować...
Mam jeszcze jedno pytanko :D Mam zmienną np. x=23,25482365 (nie wiadomo jaka długość) i chcę wyświetlić na wyświetlaczu z dwoma miejscami po przecinku. Nie mam pojęcia jak to zrobić w C.