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...
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...
Wybierz prescaler większy bądź równy 128 i wartość porównywania na '8000000/prescaler' Kolega chyba zapomniał , że TIMER2 jest tylko 8-bitowy :( Ja natomiast zaproponuje F_CPU/256/250 czyli ,F_CPU=8000000 , preskaler=256,OCR2=249 i co 125 przerwanie , mamy sekundę.Timer 2 w trybie CTC.Cały zegarek , łącznie z tymi 10 porównaniami czasu , można spokojnie...
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...
Timer 8-bitowy przepełnia się po zliczeniu do 256 a preskaler dzieli maksymalnie przez 1024 więc z prostego mnożenia wynika, że częstotliwość zegara, która spowoduje przepełnienie timera po 1 sekundzie to 1024x256=262144 Hz. Jeśli taktujesz mikrokontroler wyższą częstotliwością to na tym timerze nie zrobisz przerwania co 1 sekundę. Oczywiście timer...
Mam do zrobienia program o następującym działaniu: przerwaniem zewnętrznym (INT0) uruchamiam całą machinę - czas zaczyna być mierzony, kolejnym przerwaniem zewnętrznym (INT1) robię STOP, i w tym momencie wynik powinien być wyświetlony na wyświetlaczu LCD. Niestety jak chce odpalić program już na płytce to się nic kompletnie nie dzieje. Zapewne coś jest...
Witam, ostatnio podłączyłem do Atmegi wyświetlacz od nokii 3310 i postanowiłem pouczyć się trochę timerów i przerwań. Chciałem napisać prosty programik liczący impulsy i wyświetlać je na LCD. W przerwaniu od INT0 zliczam impulsy, a w drugim przerwaniu co sekundę przepisuje ilość impulsów do zmiennej i kasuję liczbę impulsów. Problem pojawia się gdy...
Odległość napisałem, w pierwszym poście max 40 cm. czasami może bym potrzebował parę cm więcej ale to nie problem nawet przy odległości metra. Jak szybko ma to zadziałać najlepiej od razu czyli tryb multiplexingu nie wiem czy by zadziałał w moim przypadku. 10mm to za dużo, max 5mm - 6mm jeszcze bym przyjął. Ale w zasadzie to nie problem bym zrobił to...
Część nie związaną z tematem, usunąłem. ________________________________________... Jakby ktoś miał z tym problem, to zamieszczam działający kod: Timer TC0 generuje 100 przerwań na sekundę, dzięki czemu mam 100Hz wyświetlacz. Funkcja obslugi przerwania (plik main.c): __ramfunc void przerwanie (void) { odswiez ();...
Czy RTC (zegar czasu rzeczywistego) używający Timera 2 w trybie asunchronicznym , działa nawet wtedy gdy wyłączone sa przerwania globalne ? ... kwarc, preskaler oraz Timer2 nie potrzebuje przerwań ale to nie wystarcza do zrobienia całego RTC to wystarcza do zrobienia przerwania co 1 sekundę a reszta zegara musisz zrobić programowo i to właśnie na przerwaniu...
Problemik z PWM i Przerwaniem Timera. Czy możliwe jest żeby PWM sobie działał, a Timer generował normalne przerwanie? Z tego za zauważyłem to nie bardzo. TCCR1A = (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0); //8bit PWM, phase correct TCCR1B = (1<<CS12) | (1<<WGM12); TCNT1H = 0x57; TCNT1L...
Witam, chcę zbudować zegarko-termometr i napotkałem na problem: niemogę sobie poradzić z przerwaniami co 1 sekunde :( chcę aby temperatura była odczytywana co sekunde ale nie mogę jej odczytać :( chciałbym aby ktoś pokazał mi jak ma wyglądać obsługa przerwań :) wyjście INT z PCF8583(32,768MHz) mam podłączone do atmegi pod INT0
netsecurite.pl - czytaj uważnie . Nie napisałem , że nie korzystam z timer'ów , ale jaki jest sans obsługi przerwania przez 2 sekundy (WAIT 2) gdy timer wywołuje przerwanie co np. 2milisekundy ?
Witam Tak wygląda mój kod; [syntax=vb] '############# Petla_glowna ############# Do Gosub Sprawdzenie_klawiszy If Flaga_ok = 1 Then Flaga_ok = 0 Gosub Menu End If Loop End[/syntax] [syntax=vb] '############# Przerwanie ############# Przerwanie: Incr Licznik_p If Licznik_p = 1 Then Gosub Odczyt_temp_1 End If If Licznik_p = 2 Then Gosub Odczyt_temp_2...
Witam Oglądam sobie dokumentację do PCF8563 i brakuje mi w nim generowania przerwań (na pinie INT) co sekundę jak robi to PCF8583. Wolałbym nie używać pinu CLKOUT skonfigurowanego do pracy przy 1 Hz. Kiedy używam PCF8583 ATMEGA w przerwaniu zewnętrznym generowanym przez PCF odczytuje sekundy, a jak trzeba to minuty i ... tak dalej. W PCF8563 widzę teoretycznie,...
Witam. Słabo znam angielski i w związku z tym bardzo proszę o pomoc, bo nie wiem, czy mogę zastosować preskaler 128. W helpie Bascoma takowy nie widnieje. Pozdrawiam Moderatora również pozdrawiam :)
Dziękuję:) czyli chodzi o coś takiego? Dodano po 6 Amógłbyś jeszcze napisać czy istnieje w xmega coś jak tryb przerwania CTC w atmega? Potrzebuję przerwanie co 1 sekundę i za bardzo nie wiem jak to zrobić a strasznie mało informacji w sieci:/ Czy CTC to jest CCA w xmega?
Męczę się od kilku godzin nad uruchomieniem timera1, ma on za zadanie migać diodą led (0.5Hz). Arduino jest zamontowane na płytce stykowej, zasilane i programowane z USBasp, do pinu 9 jest podłączona dioda led i rezystor. [syntax=c]void setup() { pinMode(9, OUTPUT); noInterrupts(); TCCR1B |= (1 << WGM12) | (1 << CS12) | (1 << CS10);...
Tak też robię :) Wszystko się zgadza oprócz tego, że nie sprawdzam przerwania po I2C. Kwestia jest taka, że ten zegar generuje przerwanie jednokrotnie, więc w obsłudze przerwania w procesorze trzeba ponownie ustawić pewne flagi by zegar wygenerował kolejne przerwanie za sekundę i tak w kółko. Problem w tym, że nie wiem czemu po pewnym nieustalonym czasie...
Chodzi o to że chcę sobie napisać układ czasowy w oparciu o instrukcję sterująca switch w, której warunkami przejścia do kolejnego stanu będzie odliczony czas tylko nie wiem jak to zrobić może ktoś robił podobny program proszę o pomoc. Poniżej przedstawiam przykładowy kod jakby to miało wyglądać. [syntax=c]int stan=1, tim=5; while(1){ switch(stan){...
Witajcie. Od piątku mam pewien problem z internetem. Zauważyłem problem grając w grę Battlefield 3, co kilkanaście sekund miałem ścinke na 1-2 sekundy. Początkowo myślałem, że to wina komputera, powymieniałem pasty, zrobiłem system. Niestety nic to nie dało, więc sprawdziłem na drugim komputerze i okazało się, że występuje ten sam problem. Wykluczam...
Dzień dobry Koledzy. Piszę kod w C#.NETMF dla STM32F429I-DISC1. Próbuję zrealizować takie działanie w którym wykorzystuję metody klasy UIElement. Jedna z metod obsługuje zdarzenie dotknięcia panelu dotykowego. Druga z metod ("Invalidate();") pozwala aktualizować treść wyświetlacza. Do tego mam timer który co sekundę generuje przerwanie inkrementujące...
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...
Witam. Piszę sobie sterownik temperatury w Bascom '51 i mam problem z przerwaniem. Otóż serce układu to AT89C52 do niego jest podłączony RTC DS1678. Ustawiłem RTC, aby na wyjściu INT generował co sekundę impuls. Podaję ten impuls na wejście INT0 procesora. W obsłudze przerwań dałem ustawienie zmiennej Bit na 1, na podstawie jego inicjuję w pętli głównej...
symulator bascoma jest bardzo dokładny i liczy co do taktu. jeżeli program opiera sie na przerwaniach timera to należy włączyć okienko "Slim Timers" , wtedy symulacja trwa trochę dłużej ale bierze pod uwagę przerwania timera. co do compare1a to jest to rejestr poruwnawczy timera1. co takt zegara jest on poruwnywany z zawartościa timera (czyli licznika)...
Tak wiec plik glowny wyglada to nastepujaco #include <at89c5131.h> #include "zmienne.h" #include "funkcje_lib.h" extern GET_KEY(); BYTE Tablica[10]; //Tablica[0] sekundy //Tablica[1] minuty //Tablica[2] godziny //Tablica[3] dni void RTC_INIT() { RCAP2H =(0-10000)>>8; // licznik zlicza impulsy RCAP2L = (0-10000); // opoznienie 10ms - sprawdzone...
Od razu mówię że kasowanie bitu nr 6 w rejestrze GICR nic nie daje, bo jedynie ukrywa przerwanie przed procesorem do czasu włączenia przerwania. Bit ten jedynie ukrywa przed procesorem ustawienie flagi. Flaga jednak i tak zostanie ustawiona przy zmianie stanu pinu PortD.2, nawet jeżeli wyłączy się przerwanie. I jeżeli włączy się przerwanie to procesor...
Pozwól niech się "samo" zmierzy i wydaje mi się że nazwy są zakrutkie(A to przecież akumulator - daj dłuższe np. przerwanie0) do cls lcd "dlugosc:";impulsy waitms 100 loop przerwanie0: disable int0 enable int1 stop timer0 impulsy=counter0 return przerwanie1: disable int1 enable int0 counter0=0 start timer0 return i musi się coś...
Co do reszty programu to nie będę marudny bo to Twoje początki. Natomiast z pewnością zmień podejście do flagi. Flagę w przerwaniu powinieneś tylko ustawiać. Natomiast w pętli głównej sprawdzasz czy flaga jest ustawiona. Jeżeli tak to wykonujesz przypisany jej kod i ją kasujesz. W tej chwili co sekundę (zakładam, że timer skonfigurowany poprawnie)...
Chciałbym napisać przerwanie do mojego programu zegara. Chcialbym aby przerwanie bylo wywolywane zmiana jednego pinu tzn zmiana PINA4 z 1 na 0. Gdy zmienie ten przycisk chcialbym aby wykonalo sie przerwanie. oto moj KOD: int main(void) { char B1; DDRA=0x00; DDRD |= (1 << PD1); LCD_Initialize(); TWI_Init();...
Witajcie ! Wiem, że temat był wielokrotnie sygnalizowany na forum, przejrzałem wszystkie tematy z tym problemem związane i niestety nie uzyskałem satysfakcjonującego rezultatu. Cała idea jest w tym, żeby całą obsługę odczytu temperatur z 4rech DSów, połączonych na oddzielnych liniach, wcisnąć w obsługę przerwań. Krótko mówiąc, chodzi o to, aby odczyt...
Twój 100% działający i pewny kod też jest do kitu. Przerwanie blokuje wszystkie inne akcje procesora na 2 s. Po co siedzisz w przerwaniu 2 sekundy, skoro masz tylko mrugnąć diodą ? Teraz być może to jeszcze dla Ciebie nie problem. Ale jak program rozbudujesz - kilka przerwań, coś konkretnego w programie głównym - zrozumiesz. PRZERWANIA MAJĄ BYĆ KRÓTKIE...
[syntax=basic4gl]Config Timer0 = Timer , Prescale = 1024 Enable Timer0 : On Timer0 Przerwanie0 Dim Tmp As Word Tmp = 0 Dim Ptimer1 As Word Ptimer1 = 0 Do If Klawisz = 0 Then If Ptimer1 = 0 Then Ptimer1 = 100 End If If Ptimer1 < 95 And Klawisz = 0 Then Tmp = 1 End If End If If Tmp = 1 And Ptimer1 < 85 And Ptimer1 > 70 Then If Klawisz = 1 Then...
szczywronek : Tu mój błąd, nie doczytałem, ze potencjometry są elementami nastawczymi, wiec całe moje zdanie niema sensu. Bartosz36 : Ad 1. Zgadzam się z Tobą, prawie napewno masz rację; chyba, że przerwanie trwa 12 sekund a wywoływane jest co 10 sekund. Ad 2. Niema tu żadnych haczyków, chodzi mi o czas - co który wywoływane jest przerwanie (najlepiej...
Witam Napisałem poniższy prosty program który po 6 zmianach stanu na nóżce int0 (PB2) wykonuje przerwanie. include "tn15def.inc" .def acc = r16 ;nadanie rejestrowi r16 nazwy symbolicznej .def licz1 = r20 .def licz2 = r21 .def licz3 = r22 .org 0x00 rjmp pocz .org 0x06 rjmp timer0 .org 0x0B ; -- POCZĄTKOWE USTAWIENIA SPRZĘTOWE -- pocz: ldi...
Witam mam dość dziwny problem z przerwaniami w tym procesorze. Jestem jeszcze zielony jeśli chodzi o przerwania i dlatego będę wdzięczny za każdą pomoc. otóż problem pojawia się z takim kodem: #include "lpc213x.h" #include "clcddisp.h" #include "armint.h" CLcdDisp cout;//utworzenie obiektu klasy do wyswietlania void IrqTimerHandler(void)...
Witam Jestem początkujący jeśli chodzi o mikrokontrolery. Jakiś czas temu zaczął mnie nurtować jeden problem. Robię projekt, który robi za termometr i zegarek oraz ma klawiaturkę 4 przyciskową do obsługi interfejsu. Później ma być jeszcze dodany czytnik kart microSD. Czujnik temperatury/wilgoci ma obsługę w postaci 1wire i wykonuje pomiar co 10sek jak...
Pewne funkcje są wykonywane zarówno w przerwaniu jak i w programie głównym, konkretnie komunikacja po SPI. Aby między sobą się nie gryzły (te w głównym i te w przerwaniu) i aby w programie głównym nie używać ATOMIC_BLOCK, dzięki czemu działają inne przerwania, chciałem wykonywać pewne operacje w sztucznym przerwaniu. Mogę oczywiście blokować w programie...
Witam. Mam problem z moją 6600. Nie chce od razu do salonu lecieć zeby naprawili bo na gwarancji fonik jest ale jak ktos do mnie dzowni i ja odbiore to po kilku sekundach fonik sam rozłącza romowe i pisze "rozmowa przerwana" co ja mam zrobić pomocy?
Witam mam problem ze wzmakiem mac audio.Myślałem że przerwał się kabel REM idący od radia ale dziś zmostkowałem przy wzmaku z + i zielona dioda zapala się na chwile i po ok.3 sekundach gaśnie.Bezpiecznik na wzmaku oraz ten przy aku są dobre,a czerwona dioda nie świeci.Co się stało?. Dziękuję i pozdrawiam.
Witam, mam problem z uzyskaniem przerwania od licznika. Program w ogólności ma co mniej więcej sekundę na przemian zapalać i gasić diode. Licznik jest w trybie porównania do wartości 156. Częstotliwość oscylatora to 4 MHz, przeskalowana przez 256. Program niestety nie chce wejść w przerwanie. Może któryś z bardziej doświadczonych forumowiczów jest w...
To co piszesz jest słuszne i mądre, widzisz, jest tylko jeden problem - soft jest skomplikowany bardziej niż by się wydawało, atmega8 ma tylko 8kb flash a wszystkie przerwania Atmega8 są zajęte (w tym timer1 do zliczania pojedynczych sekund, int1 i timer2 wykorzystywany przez getrc5). Oczywiście zawsze można skonfigurować bufor wejściowy, np. gdy spodziewamy...
Witam, Laptop HP po włączeniu odpala na dwie sekundy (zapali lampki, odpali wentylator) i gaśnie. Nie daje sygnałów dźwiękowych a przeważnie w takich sytuacjach sam coś potrafił komunikować dźwiękiem itd. Czasem wyjęcie i włożenie baterii pomagało. Próbowałem odpalić bez baterii, na baterii samej itd. wyjmowałem i wkładałem ram i dalej problem. Gdyby...
Witam. Kolego Andrzeju, proszę dokładnie napisać w którym miejscu mam przerwać ścieżkę bo w dalszym ciągu nic nie rozumiem. Jedno cięcie po dwuch elementach? Pozdrawiam.
Napisał, że program nie działa tak jak chce, ale nie napisał czy w jakikolwiek sposób sprawdził czy układ wykonuje obsługę przerwania. Choćby przez zapalenie LEDa. W podanym przykładzie zmiana częstotliwości nastąpi dopiero po 15 sekundach. Czy autor czeka tyle? A może fusa ma ustawionego na 1Mhz i zmiana nastąpi za 120 sekund? JarekC
Pierwszy raz używam debugera. Program leci po kolei i zapętla się w while. Program według mnie powinien co sekundę,naprzemiennie zaświecać i gasić diodę led. Dioda działa,program nie chce mi wejść w przerwanie.
C - jak wyżej z tym że może przybierać podane tam wartości - odpowiada za poziom naładowania baterii Nie "odpowiada za poziom naładowania" a sygnalizuje temperaturę baterii. Przy ładowaniu wzrost temperatury ponad graniczną powoduje ograniczenie lub przerwanie ładowania. Przy rozładowaniu co robi - nie wiadomo, ale może wyłączać telefon przy przegrzaqniu...
Po resecie biosu złożyłem laptopa, włożyłem baterie podłączyłem, zasilanie i laptop sam się uruchomił. Więc wgrałem mu najnowszy Bios 1.28. Bios się zainstalował . Komputer się zresetował uruchomił się z nowym Biosem i gładko uruchomił się Windows. Radość przerwała niebieska dioda Power która zaczęła równo, wolno, mrugać. Komputer normalnie pracował...
Na szczęście już załatwione. Zdążyłem się trochę dokształcić z obsługi przerwań pod freertosem :) Rozwiązaniem okazało się wrzucenie obsługi przerwania do osobnych plików, skompilowanie ich w trybie ARM, wrapper (czyli save i restore context) i __attribute__((naked)). Bez tego ostatniego wszystko chodziło idealnie, po czym całość zawieszała się po ok....
Witam, mam problem z VW Passatem B6. Samochód został zakupiony po pieniądzach bo nie odpalał. Problem jest taki, że odpala i gaśnie po 2 sekundach. akumulator założony nowy, bezpieczniki ok. Poniżej wstawiam błędy z odczytu. Błędów jak widać jest dużo. Prosze o sugestię, który może powodować gaśniecie samochodu VIN: WVWZZZ3CZ8E131745 Numer rejestracyjny:...
Ale jeśli mniejsze, to już po 1 takcie zliczania powinno wyskoczyć z przerwania a tak nie jest. Taktowanie timera to 16MHz/1024 = 15625Hz. Pojemność timera to 256, więc przerwanie pojawia się z częstotliwością 15625/256 = ~61Hz. Aby uzyskać opóźnienie ok. 1 sekundy przerwanie musi pojawić się 61 razy i dopiero za 62 zapalić lub zgasić diodę. I tak...
Zagląda ktoś do tego tematu?? Poprawiłem się odnośnie pisania tego co chciałem zrobić. Kod wygląda tak: [syntax=c] #include <8051.h> #include <stdio.h> unsigned char gStanPracy=0; /* //Zwloka s sekund void sleep (unsigned char s) { //static unsigned char gStanPracyPoprzedni; unsigned char i, j, k; for (; s; s--){ for (i = 0; i <255; i++){...
Nic nie aktywujesz w ustawieniach standardowych będzie działać. Fabrycznie włączone jest automatyczne zamykanie w tej centrali po chyba 20 sekundach.
Nie wiem czy dobrze zrozumiałeś ideę wykożystania przepełnienia od licznika w tego typu wyświetlaniu, więc po kolei: - napewno wiesz że przy wyświetlaniu multipleksowym w danej chwili świeci tylko jedna cyfra, aby uzyskac efekt świecenia wszystkich trzeba kilkadziesiąt razy na sekundę zapalac kolejne cyfry. Częstotliwośc przerwań od licznika dobierasz...
Witam, piszę całkiem spory (w moim mniemaniu) program do sterowania silnikiem i paroma jeszcze innymi rzeczami (aktualnie na ATmega32L i 8MHz wewnętrznego oscylatora) i mam niezrozumiały dla mnie problem z obsługą przerwania od timera, kod obsługi przerwania wygląda mniej więcej tak: ... .org 0x0012 rjmp t1Ovf ... t1Ovf: push r16 push r17 in R16,...
Witam. Próbuje napisać zegarek na PICu. Używam oscylatora 4 MHz. Nie wiem jak zrobic odliczanie jednej sekundy. Pisałam o tym na innym forum i otrzymałam taka odpowiedź: "Jeśli używasz kwarcu 4 MHz to ustaw preskaler na dzielenie przez 64. W takim przypadku do licznika/timer'a będą przychodziły impulsy o częstotliwości 15625 Hz (1000000 / 64 = 15625)....
Witam. Próbuje uruchomić program testowy, który polega na tym, że po wysłaniu na RS-a liczby 2 dioda zapala się na okres 1 sekundy i na ten sam czas również gaśnie przez okres 30 s. Wysyłanie na port szeregowy wykonuje za pomocą przerwania z USART. Odmierzanie sekund z przerwania Timera w trybie asynchronicznym(RTC). Program nie działa, bo mam problem...
Witam Mam oto taki problem jak ww w temacie. Napisałem program na odmierzanie czasu przerwanie co 1 sekundę i ogólnie po wgraniu programu wszystko działa czas leci i jest wszystko OK. Lecz po chwili a Nie ma potrzeby az tak komplikowac tak wyjatkowo proste zadanje jak odmierzene czasu 1 sek. Po pierwsze: system ci sie blokuje juz po kilku sekundach...
Witam. Mam problem z przerwaniami w atmega8. Wcześniej nie potrzebowałem przerwań więc to zagadnienie mnie nie interesowało. Potrzebuję wywołać przerwanie zewnętrzne int0 które uruchomi timer1, a ten zacznie odmierzać czas. Napisałem coś takiego (oczywiście to część z większego projektu) '$sim $regfile = "m8def.dat" 'informuje kompilator o...
witam. potrzebuję odmierzyć równo 1 sekundę, przykład wziąłem z kodu :
Też tak myślałem ale tak się nie dzieje. Najwyższy priorytet ma przerwanie od Timera 0, potem przerwanie od sekund zegara RTC i na koniec dopiero przerwanie od EINT1. Program się uruchamia prawidłowo i zawiesza się tak jak pisałem wcześniej po kilku sekundach. Przerwań od EINT1 wogóle nie uruchamiam. Zapewne masz rację z tym, że adres powrotu jest zamazywany...
Witam! Napisałem sobie obsługę klawiatury matrycowej 3x4 w bascomie. Nie używam umieszczonej tam funkcji getkb(), ponieważ podłączona jest do różnych portów. Sprawdzanie wciśniętych przycisków chcę przeprowadzić w przerwaniu od wewnętrznego zegara TIMER0. Na ATmega32 wszystko bez problemu działa. Płytka, pod którą to robię działa niestety na ATmega8515....
Witam ,napisałem program który ma odmierzyć czas lotu helikoptera (do wyczerpania bateryjki) ,niestety po 2 tygodniach utknąłem na czymś takim: $regfile = "attiny2313.dat" 'wybór procesora attiny2313 $crystal = 8000000 Config Pinb.0 = Output 'dioda sygnalizująca odmierzenie czasu Config Pinb.1 = Output 'buzzer mający piknąć 3 razy po odmierzeniu...
Program do kompilacji pod Free Pascala pod DOSa. Założenie jest takie : program ma zmieniać godzinę w czasie systemowym o +1 po naciśnięciu strzałki do góry i odpowiednio o -1 po naciśnięciu strzałki w dół na klawiaturze. Wymyśliłem sobie to tak: 1. odczytam aktualną godzinę ( przerwanie 21h funkcja 2Ch) 2. dodam lub odejmę 1 3. zapiszę poprawionę godzinę...
oprócz zmiennej temp reszta czyli aż int0_flag jest volatile większa cześć kodu jest z słynnej ostatnio książki na forum. jeszcze nie zdążyłem za dużo pozmieniać [syntax=cpp] /* * main.c * * Created on: 2012-02-14 * Author: Jacek */ #include <avr/io.h> #include <stdlib.h> #include <avr/pgmspace.h> #include <avr/interrupt.h> #include...
Witam. Jestem w fazie pisania programu z zegarem DS3231 i atmegą16. Mam podłączone wejście INT0 atmegi z wyjściem INT/SQW DS-a. Podciągnięte rezystorem 10k do 5V. I nie wiem co robię źle ale procesor nie reaguje na sygnał przerwania z DS-a. Powiem szczerze że nigdy nie korzystałem z przerwań zewnętrznych ale znów ustawienie tego nie jest skomplikowane...
Witam :) Próbuje odpalić tryb CTC na Atmega8-przerwanie co 5ms i nie mogę sobie poradzić pomimo czytania PDF.Mało rzeczy robiłem na przerwaniach a jeśli już to na Atmega32 gdzie korzystałem z tego: Przerwanie co 5ms więc mam 1 sekundę. ATMEGA32: [syntax=c] TCCR0 |= (1<<WGM01); tryb CTC TCCR0 |= (1<<CS02)|(1<<CS00); preskaler = 1024...
Witam forumowiczów, Natknąłem się na pewien problem, z którym nie wiem jak sobie poradzić. Sprawa dotyczy nieprawidłowej obsługi przerwania INT0 podczas wykonywania komend sterujących wyświetlaczem LCD. Do Atmega32 podłączone są: - standardowy wyświetlacz LCD, - źródło impulsów (dokładniej jest to liniał cyfrowy), - przyciski. Impulsy wprowadzone na...
Chciałbym aby ktoś mi napisał prosty program z wykorzystaniem przerwania. aby wskakiwał do niego co określony czas np 1 sekundę by niezależnie co dzieje się w programie co Np sekundę czy 5sek wyskakiwał do procedury przerwania czyli przerwanie wykonywane co określony czas a nie na podstawie wymuszenia stanu logicznego na pinie do loop przerwanie: Mam...
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...
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...
Mam taka procedure przerwania: Przerwanie: If Z_lampa = 0 Then 'jesli jest zgoda na zalaczenie lampy Incr Cz_lampa If Cz_lampa >= 12 Then 'jesli uplynela 1 sekunda troche mniej Cz_lampa = 0 'wyzeruj czas lampy If Prz_lampa = 0 Then Set Prz_lampa Else Reset Prz_lampa End If End If End If If Z_tr = 0 Then 'jest zgoda na zalaczenie transformatora mocy...
Już działa:) Jeżeli chodzi o same ustawienia i inicjalizację Timera0 oraz przerwań to okazało się tak jak mi się wydawało że wszystko miałem dobrze. Jak zwykle w takich przypadkach błąd okazał się błahy i leżał w zupełnie innym miejscu. Otóż przy definiowaniu wektorów przerwań nie używałem definiowania ".org". Początek mojego programu wyglądał tak:...
Atmega jest taktowana zewnętrznym kwarcem 12MHz, żeby jeden tick timera trwał ~1us. 1. Czy timer 8-bitowy przyjmujący zewnętrzne impulsy, może je przyjmować w takich samych odstępach czasowych jak 16-bitowy? Niestety na etapie projektowania nie zauważyłem, że żeby użyć 16-bit timera do przyjmowania impulsów zewnętrznych należy użyć nóżki T1, a nie T0,...
Prywit! Mam problem z obsługą przerwania zewnętrznego. Do pinu INT0 podłączyłem włącznik zwierający do masy. Jak widać w programie podciągnąłem końcówkę do plusa. Do pinów C.1; C.2; C.3 podłączyłem diody LED do zobrazowania problemu. Napisałem taki oto krótki program i jestem zdziwiony działaniem. Po uruchomieniu programu dioda podłączona do pinu C.1...
Witam, próbowałem ostatnio przenieść mój program (wyłącznik czasowy) z Atmegi8 (działa idealnie) na Atmegę16 (gdyż ma więcej "nóżek"). Problem pojawił się przy pierwszym uruchomieniu - w miejscu, w którym uruchomione zostają przerwania program się resetuje. Zaznaczam od razu iż spędziłem wiele godzin szukając odpowiedzi w internecie, znalazłem nawet...
Z tego co zauważyłem, mikrokontroler taktujesz częstotliwością 1MHz. Przy preskalerze 1024 częstotliwość taktowania timera będzie równa 1000000Hz/1024=976,5625Hz. Z tego wniosek, że w ciągu 1 sekundy timer zlicza 976,5625 impulsów. Biorąc pod uwagę, że timer jest 16-bitowy przepełni się 1 raz na (65536/976,5625) 67,108864 sekund. Jeśli nie musisz schodzić...
Witam zrobiłem sobie prosty odmierzacz czasu na atmedze8 i wyświetlaczu hd44780 i wszystko jest prawie ok, tylko że jak sekundy są mniejsze niż 10 to wtedy wyświetlać np. 0:58:09 to wyświetla 0:58:90, nie mam pojęcia jak to naprawić, ma ktoś jakiś pomysł? [syntax=cpp] #include <stdio.h> #include <avr/io.h> #include <avr/interrupt.h>...
Witam, Chcę skonfigurować timer tak aby po określonym czasie zostało wygenerowane przerwanie(jednokrotnie), fragment kodu: [syntax=c]TIM4->PSC = 7200; TIM4->ARR = 10000; TIM4->DIER = TIM_DIER_UIE; TIM4->CR1 |= TIM_CR1_URS | TIM_CR1_OPM | TIM_CR1_CEN; NVIC_EnableIRQ(30);[/syntax] obsługa przerwania: [syntax=c]__attribute__ ((interrupt)) void TIM4_IRQHandler(void)...
Nie ma szans. Chyba że zapis np. 100 pomiarów na raz zajmie mniej niż 200ms równolegle z prowadzeniem pomiarów (czyli prowadzenie pomiaru nie wydłuża czasu zapisu). Bo jak na razie masz sytuację - do bufora ładujesz co 2ms dane, a kasujesz na drugim końcu co 40ms. Czyli po każdych 40ms do bufora wpisałeś 20 pomiarów, a zdjąłeś tylko jeden. W ten sposób...
Witam, popełniłem takowy program do sterowania ogrzewaniem i zapętliłem się nieco na funkcji start/stop odliczania pozostałego czasu do wyłączenia urządzenia. Poniżej fragment kodu: [syntax=basic4gl]'----------------------... GLOWNA----------------------------------... Do If Flaga_4ms = 1 Then 'co 4ms Flaga_4ms = 0 End If If Flaga_100ms =...
Może faktycznie szum nałożony na zbocze jest tu przyczyną wielokrotnego wywołania przerwania przy jednym impulsie. W poniedziałek przyjrzę się dokładniej temu zboczu i spróbuje coś zaradzić. Ale z drugiej strony gdyby tak było, to dlaczego impulsy zliczane są prawidłowo wtedy gdy program okrojony jest do minimum? Jaka jest szerokość impulsu? Maksymalna...
Witam, przesymulowałem sobie pierwsze 8 minut działania zegarka. Dokładnie patrzyłem (wartość Stop Watch w symulatorze), kiedy wchodzę do obsługi przerwania. W ciągu tych 8 minut (odpowiada to 12.000 wywołań tego przerwania) błąd był niewidoczny, tzn. symulator nie był w stanie stwierdzić wahań, tj. resztkowe opóźnienie wynosi poniżej 10 ns (najmniejsze...
Jakiej precyzji oczekujesz? Bo .... w sumie najprostszym rozwiązaniem jest zliczenie ile razy wystąpi int0 (możesz zmienić konfiguracje aby reagować na każda zmianę stanu) a licznik można skonfigurować aby dawał przerwanie co 1/32 sekundy i w przerwaniu konwertować ilość impulsów na RPM: ilosc_impulsow/czas_akwizycji/ilosc_impu... co przy...
Cześć, postanowiłem zmienić swój stary model Atmegę16A na nowszą wersję więc zakupiłem Atmegę168A-PU. Problem w tym, że za żadne skarby nie mogę zrobić na niej choćby prostego mrugania diodami za pomocą przerwań. Połączenia są zrobione dobrze, konfiguracja również. Ustawiony jest preskaler, uruchomiona globalnie obsługa przerwań, ustawiona jest odpowiednia...
witam. Ten post powinien znależć się raczej w dziale mikrokontrolery - a nie tutaj tam szybciej uzyskasz odpowiedz na to pytanie. Jezeli chodzi o licznik to wyglada to tak: timer zgłasza przerwanie w moencie przepełnienia (przejście z FFFFh na 0000h ) najlepiej zeby pracował jako 16bit w trybie zliczania imp. wewn zegara. nie wiem czy dobrze obliczyłem...
Nadal nie wiem w czym konkretnie problem. Procedura obsługi przerwania od timera musi tylko co 1/2 sekundy przełączyć stan pinu na przeciwny oraz na nowo załadować timer. Nie wiesz jak przy taktowaniu 4MHz odmierzyć 1/2 sekundy, czy nie wiesz jak w ogóle wywołać przerwanie od timera i jego obsługę w ATMEGA128?
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...
Witam! Uczę się Bascoma i postanowiłem napisać "stoper" sterowany z pilota (pilot nadaje w standardzie rc5). Najpierw napisałem pętlę odpowiadającą za ustawienie stopera za pomocą pilota. Zrobiłem to za pomocą przerwania INT0. Wszystko działało jak należy. Problem się zaczął jak skonfigurowałem timer0 do pracy jako timer. Program przestał reagować na...
[syntax=c] #include <avr/interrupt.h> #include <avr/io.h> #include <util/delay.h> #define LED_DATA PORTB #define LED_SEG PORTD #define SEGA (1<<0) #define SEGB (1<<1) #define SEGC (1<<2) #define SEGD (1<<3) #define SEGE (1<<4) #define SEGF (1<<5) #define SEGG (1<<6) #define SEG_DP (1<<7)...
Witam, w moim programie na atmegę 32 wykorzystałem timer0 oparty na zegarze procesora (8MHz) aby uruchamiać pewną funkcję ok. 100 razy na sekundę. Do programu postanowiłem dodać obsługę zewnętrznego kwarcu zegarkowego 32768Hz aby móc mierzyć w miarę dokładnie czas przy użyciu timera timer2. Po dopisaniu komend do obsługi kwarcu żaden timer nie działa....
Witam, Chciałbym napisać program (w Codewarriorze) który na wyświetlaczu 2x16 na grónej linijce będzie odliczał sekundy a na dolnej wyświetlał dane zczytywane z klawiatury matrycowej. Jak to najprościej zrobić? Wydaje się że trzebaby użyć przerwań wewnątrz których byłby napisany podprogram który by co sekundę zmieniał stan sekundnika, a w głównym programie...
Witam, mam problem z programem na mikroprocesor. Na początek dodam, że prototyp, zanim poszedł w odstawkę pół roku temu działał prawidłowo. Program w tym momencie ma za zadanie wyświetlić 4 zmienne na wyświetlaczu. Uruchomienie przerwań zawiesza program. W zależności od tego kiedy zostaną rozpoczęte, skutkuje to innym efektem. Umieszczając sei(); na...
Odkopuję temat, ponieważ mój problem również tyczy się przerwania od przycisku, przy użyciu tych nieszczęsnych bibliotek :) Wydaje mi się, że wszystko jest włączone i zainicjowane jak należy... Dokładnie przeszedłem przez UM, oraz posiłkowałem się tematami na 'stackoverflow'. Przerwanie następuje, ale trwałe, tzn wszystko się zatrzymuje migająca dioda...
Witam, Problem mam następujący: poskładałem komputer wszystko chodzi elegancko poza jedną sprawą, przerwania systemowe obciążają procesor do 70-80% :-( Sterowniki aktualne, BIOS aktualny... Zabrakło mi już pomysłów, a na forach nic pomocnego nie znalazłem... W innych miejscach proponowano: defragmentacje, aktualizacje, itp... Jestem na Windowsie 10...
Witajcie Podczas ladowania ladowarka spadla mi z okolo 20 cm, niby mała wysokosc jednak odrazu pojawił sie dzwiny dzwiek nie dobiegajacy z wentylatora. Cos jak by tarlo o cos. Ładowarka poladowala tak chwile poczym zakonczyla proces ladowania. Teraz po podlaczeniu ladowarka laduje przez kilka sekund z tym dziwnym dzwiekiem poczym zapala sie zielona...
Witam, mam problem z internetem.Posiadam usługi internetowe od Vectry, w których skład wchodzi 50Mb/s pobierania jak i również 5Mb/s wysyłania. Podczas oglądania transmisji czy to na telefonie czy na laptopie zostaje ona co 2-3 sekundy przerwana i albo włączy się na kolejne 5 sekund lub wcale to nie nastąpi. Ten sam problem występuję w gram typu counter-strike...
OpenBeken posiada system głębokiego uśpienia, który pozwala w zasadzie wyłączyć BK7231 do momentu upływu określonego czasu (DeepSleep) lub do wystąpienia zdarzenia GPIO (takiego jak naciśnięcie przycisku - PinDeepSleep). W przypadku urządzeń zasilanych bateryjnie ta funkcja jest niezbędna, w przeciwnym razie baterie rozładują się w ciągu jednego lub...
Witam! Pisze sobie program dla 2313, który w danych wysyłanych do (tego właśnie) procesora musi wyłowić pewnien krótki pakiet i odpowiedzieć na niego. Problem jest taki, że nie mogę tego zrobić w pętli głównej programu, gdyż pętla wykonuje się ok. 0.5 sekundy. Postanowiłem więc obsadzić procedurkę wyłapywania pakietu na przerwaniu. No i tu zaczyna się...
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...