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, mam problem z wywołaniem funkcji w przerwaniu. Na chwilę obecną debugowanie odpada, gdyż mam mały problem z odpaleniem debugowania. Po wywołaniu przez procesor przerwania, albo się on wiesza albo niepoprawnie działa funkcja. To samo dzieje się gdy wkleję do przerwania zawartość funkcji. Podczas kompilacji nie sypią się żadne warningi dotyczące...
Może spróbuj w ten sposób : $crystal = 4000000 Config Pind.5 = Output 'ustawienie wyjścia na pinie który standardowo sygnalizuje przepełnienie timer-a Config Timer0 = Timer , Prescale = 1 'ustawienie timer1 dzielnik 1 On Timer0 Przerwanie_timer1 'wywołanie przerwania po przepełnieniu timera Timer0 = 145 'wartość początkowa od której timer bedzie zliczł...
Witam Do "kompletu" brakuje mi obsługi zegara DCF77. Tzn. uruchamiałem już wcześniej na Atmega8 i nie było problemów. Jednak przy tym układzie wykorzystuję Timer, przerwania - może konfiguracja jest zła ?. Timer0 - liczniki i flagi Timer1 - DCF77 Timer2 + INT0 - odbiór RC5 INT1 - przerwanie od PCF8574 Całość działa, do momentu podpięcia sygnału zegara...
Witajcie!! Mam taki problem: ponizej załączam mój plik źródłowy main.c , programik jest prosty, zawiera dwa przerwania jedno od timera 0 (przerwanie na narastajace zbocze CAP0.0 pin P0.2) drugie przerwanie to przerwanie zewnetrzne od przycisku (przerwanie na narastajace zbocze). Do pinu P0.2 dołączam przebieg prostokątny o częstotliwości okolo 80Hz...
Witam, Dostałem zadanie, aby zaprojektować bezprzewodowy sterownik pieca gazowego, który ma działać w następujący sposób: 1) W momencie kiedy przycisk S1 (na schemacie jest to złącze modułu radiowego - PC2) jest wciśnięty, przekaźnik gazu (G1) i wody (W1) są wysterowane. 2) Gdy przycisk S2 zostaje zwolniony, przekaźnik G1 zostaje wyłączony, natomiast...
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...
Co to za bełkot!? 1. Timer do odmierzania czasu skonfigurowany jako licznik impulsów z zewnątrz! 2. Podprogram obliczania czasu nigdy nie będzie wywołany z pętli głównej! 3. Wyświetlana ma być wartość licznika. Podaj kolego na koncówkę 11 impulsy z zewnątrz to je zacznie zliczać i wyświetlać. Bedziesz miał przynajmniej licznik impulsów. Program do zegara...
Sprawa jest następująca, zaprojektowałem na ATMega mały system który używa kliku przerwań sprzętowych a mianowice INT0,INT1, oraz przerwania timera Timer0,Timer1. Dodatkowo program (w C) obsługuje przetworniki ADC oraz DAC podłączone pod magistralę SPI. Generalnie wszystko działa OK ale czasem pojawiają się nieprawidłowe wartości napięć na wyjściu przetworników...
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...
Buduję prosty sterownik na atmedze 8, chcę obsługiwać klawiaturę w przerwaniach od timera0 ale atmega nie widzi procedury obsługi przerwania i resetuje się. Jeżeli zatrzymam timer albo wyłączę przerwanie timera, albo wyłączę globalnie przerwania to nie resetuje się. Kod procedury obsługi przerwania (funkcje do LCD są w pełni sprawne, nawet gdy ISR jest...
Jeżeli wykorzystujesz jeden timer (timer0) to na drugim: ... ... Config Timer1 = Timer , Prescale = 256 Enable Timer1 On Timer1 procedura start timer1 ... ... ... procedura: lcd ..... lcd ..... return ... ... ... Pozdr. Marcin
Witam. Czy posiada ktoś jakieś materiały, e-booki dotyczące wykorzystania timerów i przerwań od nich, dla programowania w języku C? Chcę wykonać następującą rzecz: W chwili wciśnięcia przycisku podpiętego do jakiegoś tam portu uruchamiam timer0 (tryb 1), który po 10ms sie przepełnia i wywoływane jest przerwanie. Za każdym razem w przerwaniu, tj. co...
Witam! Staram się rozgryźć dlaczego coś co nie ma prawa działać działa :) obsługa klawisza na przerwaniach Klawisz podłączony do portu PCINT przerwania: [syntax=c] #define _TICK_TIME (1000/((F_CPU / 64) / 256)) #define _DEBOUNCE 20 #define _DEBOUNCE_TICKS (_DEBOUNCE / _TICK_TIME) ISR(TIMER0_OVF_vect) { //przerwanie overflow timera dzielnik 64 (jak widać...
Witam, od kilku dni męczy mnie uciążliwy problem, nie wiem skąd się bierze przepełnienie stosu, skoro wg mnie program powinien działać poprawnie. Kto wie, co może być tego przyczyną? Dziekuje za jakiekolwiek wskazówki Programator - J-LINK SEGGER Środowisko - IAR Procedura obsługi przerwania: __irq void Przerwanie(){ unsigned int dummy;...
czy ktoś byłby mi w stanie pomóc w ustawieniu przerwania na int1 urzywająć timera1 ? ponieważ nie radzę sobie z ustawieniem tego 16 bitowego timera. ogolnie przerwanie miało by wyłączać silnik jesli zostanie wciśniety przycisk bądź krancówka
Nie wiem jak z ta zakrecona biblioteka od ST :) moj dzialajacy kod na STM32F407 z jednego projektu (z tym ze wyzwalanie ADC jest z Timera). Przerwanie DMA wyzwalane po zebraniu 8 probek... Twojego kodu nie analizuje bo ta biblioteka dziala czasami jak chce, z tego co pamietam na F4 chyba tez z nia mialem problem przy ADC i DMA... [syntax=cpp] volatile...
witam INT0przerwanie zewnętrzne końcówka INT0 INT1przerwanie zewnętrzne końcówka INT1 TIMER0przerwanie przepełnienia licznika TIMER0 TIMER1przerwanie przepełnienia licznika TIMER1 Gdy używane są przerwania INT0 lub INT1, można określić warunek zgłoszenia tego przerwania. Należy w tym celu użyć instrukcji SET / RESET i ustawić odpowiednie bity w rejestrze...
Witam mam taki problem gdy uruchomię ten program to żarówka bardzo miga. Zliczyłem ilość wywoływanych przerwań i wyszło że na 400 detekcji zera jest 100 przerwań od timera w czasie 4 sekund. Więc detekcja zera działa prawidłowo. Używam Atmega168, kwarc 16Mhz. F_CPU ustawiłem w kompilatorze i działa napewno 16Mhz
Witam, od jakiegoś czasu próbuję stworzyć sobie zegarek z termometrem + napięcie akumulatora do auta. Wszystkie programy osobno działają bez zarzutu. Problem zaczął się z chęcią wprowadzenia przełączalnych ekranów i wprowadzeniu przerwań. Doczytałem że przerwania skutecznie psują komunikację z DS'ami przez co temperatura się nie odczytuje. Ogólnie to...
Nie mam przez weekend dostępu do programatora itp. aby sprawdzić mój program. Czy poniższy kod zadziała jak programowe pwm na pd.2 oraz czy pb.3 będzie sobie mrugał? Wiem że nie powinienem pytać, tylko to sprawdzić ale zależy mi na waszej opinii :D $crystal = 1000000 $regfile = "m16def.dat" Config Timer0 = Timer , Prescale = 8 On Timer0 Przerwanie...
Możesz z procka wycisnąć to co chcesz , a nawet więcej.W zasadzie wykorzystanie PWM zajmuje część zasobów timera (przerwania przy porównaniu i decyduje o szybkości przepełnania. Czy PWM będzie ze stałą częstotliwością ? Jeśli tak to możesz przepełnienie wykorzystać do zliaczania czasów, a jeżeli wszystkie Twoje kanały PWM będą pracować z tą samą częstotliwością...
Jest to mój pierwszy program z użyciem timera i nie mam pojęcia dlaczego nie działa, wydaje mi się że wszystko jest ok a jednak po wgraniu do mikrokontrolera nie ma żadnej reakcji. $regfile "attiny2313.dat" $crystal = 1000000 Config Timer0 = Timer , Prescale = 1024 Dim T1 As Byte T1 = 0 Dim T2 As Byte T2 = 0 Dim T3 As Byte T3 = 0 On Timer0...
Witam! Zrobiłem prosty projekt wysokościomierza ciśnieniowego. Wszystko działa w jak najlepszym porządku. Teraz muszę go przekonwertować aby działał na mniejszej płytce zasilanej z baterii. Z tego powodu postanowiłem użyć funkcji sleep i przerwań. Program ma działać tak: - w funkcji setup następuje inicjalizacja karty i czujnika, jeśli wszystko działa,...
Oczywiście to od DCMI ma wyższy priorytet niż to od DMA. Próbowałem też na równoważnych ale nic to nie zmienia. Najbardziej dziwi mnie fakt że występują przerwania mimo wcześniejszego kasowania flag. Tak jakby DMA działało mimo że już żadne żądania transferu się nie pojawiają (DCMI podczas trwania impulsu synchronizacji nie powinno niczego wysyłać)....
Siedzę na problemem od kilku dni i nie mogę się dopatrzeć błędu. Dla niecierpliwych - sam problem opisany jest na samym końcu. Próbuję odczytywać dane z czujnika AM2302 z użyciem timera (timerów). Czujnik posiada jedną linię danych typu OC (lub coś w pobliżu). Komunikacja polega na tym, że master (MCU) w celu wybudzenia czujnika generuje stan niski...
Witam Jak odczytac dokładną wartośc z Timer0 (liczbę wszystkich impulsów), teraz zmienna A zbiera tylko same przepełnienia. [syntax=vbnet] $crystal = 8000000 config pind.4=input ' Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.5 , Rs = Portc.4 Config Lcd = 20 * 2 Cls Cursor Off Noblink Dim A As Single...
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...
Czy ktoś zajmował się timerami w ADuC7128? Zapis dowolnej wartości do rejestru TxICLR powinien przeładowywać zawartość rejestru licznikowego wartością początkową z rejestru TxLD. Tymczasem nic takiego się nie dzieje. Rzeczywiście, następuje przeładowanie, ale tylko wtedy, gdy zapis do TxICLR dokonywany jest w ramach obsługi przerwania od danego timera....
nie chcę siać zamętu, ale jeśli dobrze pamiętam to istnieje błąd w Bascomie, który źle kompiluje powrót w subie zawartym w przerwaniu (wstawia RETI zamiast RET) Obecnie takiego błędu kompilator nie wykazuje: ;---- test.bas ----------------------------------------... RJMP RESET RETI RETI RETI RETI RETI RETI...
Jak nie ustawie WDMOD |= (1<<1); czyli dodatkowy bit WDRESET, to nie będzie mi resetował procesora automatycznie po odliczonym czasie. Nie chce aby mi resetował procesor. Tylko, żeby działał jak zwykły timer z przerwaniem.
Witam! Napisałem sterownik do rgb (dioda z wspólnym +), niestety nie chciał pracować, więc zacząłem drążyć... Okazało się, że nawet taki program $regfile "attiny2313.dat" $crystal = 16000000 Config Portb = Output Config Portd = &B11110000 Portb = &B11111111 Portd = &B11111111 Config Timer0 = Timer , Prescale = 8 Enable Timer0 On Timer0 Przerwanie...
A jest lepiej gdy podajesz z palca i masz ustawiony PULLUP? Generalnie jeśli częstotliwość impulsów jest duża to lepiej zliczać je na timerach i przerwanie generować od przepełnienia timera.
Hint: timer, przerwanie timera. drgania styków, denouncing Dodano po 1
Jest to możliwe, jednak tylko w sposób programowy. Jak to zrobić? Trzeba ustawić INT0 na reakcje na oba zbocza. Po wystąpieniu przerwania od INT0 sprawdzić jaki stan jest aktualnie na INT0 i w zalezności od tego włączyć/wyłączyć zliczanie timera.
Na szybko: W kodzie przerwań masz _delay_ms(). Zmień kod tak aby w przerwaniach tylko przechwytywać zaistnienie zdarzenia i całą obsługę zrób w głównej pętli. Jeśli masz tak równe odcinki czasu (50ms i 500ms), to zamiast głównej pętli możesz też zrobić przerwanie timera. Ogólnie: Przerwania to nie procesy :) Update: Jeśli chodzi o Twoje pytanie: jak...
Czesc, Co to znaczy timer? Co to ma byc? Powiedz dokladnie co potrzebujesz i do czego tego czegos chcesz uzyc. (pytajac co to jest timier mialem na mysli jaka czestotliwosc zegara, ile bitow na liczniki, czy to ma byc watchdog timer wysylajacy przerwanie czy tylko wacek zliczajacy tiki zegara? sa rozne timery... ) Pozdrawiam, tony_tg
mam problem z obsługą przerwania od T0 w at90s2313. oto programik: ;program .nolist .include"c:\avrtools\appnotes\2313def.in... .list .deftemp=r16 .defcounter=r17 .deftime=r18 .defone=r19 .defzero=r20 .deftim_reg=r21 .cseg .org$000 rjmpreset .cseg .orgOVF0addr rjmpintrpt reset:rjmpinit intrpt: ;obsługa przerwania in r22,SREG push r22 inccounter pop r22...
Czy dla uzyskania przerwania co 0,5s, 1s, lub 2sek musze użyc w przypadku Atmega8 timera1 16bit, czy mogę to też jakoś zrobić na 8-bitowym timerze0? Zakładam częstotliwość zegara 1Mhz-4MHz. (pracuję nad mruganiem diody :) widocznym dla oka przy uzyciu przerwania od timera)
Niestety mój poziom programowania to na razie tylko BASCOM i to też początki. Myśle, że procesor się wyrobi jeśli odpowiednio użyje przerwań zewn. i timera(ów). Czujnik z położenia wału będzie generował przerwanie co 90° przerwanie to będzie wpisywało obliczoną wcześniej wartość czasu i uruchamiało timer, którego przerwanie będzie załączało i wyłączało...
witam Mam do zrealizowania coś takiego: Wejścia INT0 oraz Int1 muszą reagować na pojawiające się na nich sygnały (zbocza narastające ) po czym muszę zliczać czas trwania stanu wysokiego na powyższych wejściach gdy pojawi się zbocze opadające na int0,1 liczenie czasu ma być przerwane i wartość ta zapamiętana. W skrócie jest to pomiar czasu trwania stanu...
Na Atmega162 działam z 1w i przerwaniami do obsługi wyświetlaczy 7seg, transmisji RS i jeszcze jakiegoś timerka. Przerwania wyłączone na czas zapisu/odczytu bitu i nie ma problemu. Wklej może funkcje zapisu/odczytu bitu.
Witam. Mam taki projekt w SDK: Dodano po 1 Wystarczyło zwiększyć pamięć. Temat zamykam.
Witam. Chciałem otrzymać przerwanie od przepełnienia generowane przez timer0 procesor pracuje na 16mhz jednak mam dziwny problem. Mianowicie zamiast planowego 1us mam 2-4 x większe wartości. Napisałem taki program testowy który ma zobrazować efekt czyli co sekundę instrumentować zmienną. [syntax=c]#include <avr/io.h> #include "lcd.h" #include...
Co do eliminacji drgań. Można też tak: wciśnięto klawisz, wykonujesz akcje z nim związaną i kasujesz jakiś licznik i teraz choćby program odczytał kolejne wciśnięcie klawisza (drgania) to ignorujesz to przez czas drgań styków. Brzmi zawile, ale jest banalne: [syntax=c]if ((!(PINB & col)) && (licznik > 20 )) //warunek czy klawisz jest wciśnięty, tzn...
Faktycznie wygląda na to, że obsługa semaforów wpływa negatywnie na to. Musze przyznać, że jestem w lekkim szoku, ponieważ pomiędzy dwoma zboczami jest 400 us, procesor taktowany jest zegarem 180MHz, a w samych wątkach niewiele się dzieje. Moja opinia jest subiektywna i może zostać uznana za stronniczą (z racji tego że tworzę własny RTOS), jednak uważam...
Nie chcę być sędzią w tym poscie ale sadło zwróć uwagę na: TDV napisał: Z jedną uwagą: zacznie zliczać od tego co było TH0 + 66h bo nie modyfikujemy TH0, więc pozosaje bez zmian Jasne dla mnie jest że TDV myśli o 16 bit timerze z TH0 i TL0 sadło napisał : Nie dokładnie. Instrukcja MOV nie dodaje nic do zawartości rejestru tylko wprowadza do niego nową...
witam. mam taki program: void main(void) { TMOD = 0x01; //timer0 - tryb1 16bit timer TH0 = 0xfe; //stan poczatkowy TL0 = 0xB0; //stan poczatkowy TF0 = 0; //kasowanie bitu przepelnienia timer0 ET0 = 1; //wlaczenie przerwania przepelnienia timer0 EA = 1; //wlaczenie przerwan TR0 =1; //start timer0 while(1) { ; } } i zachowuje mi sie to tak ze przerwania...
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 po ciezkich bolach udalo mi sie napisac swoj program dla 8051 w jezyku C moj uklad ma za zadanie mierzyc temperature 2 czujniczkami 1wire i na podstawie ich odczytow wlaczac grzalke (jest to uklad do ogrzewania wody w oczku wodnym) na odpowiednio wyliczony w programie czas. problemem w tym wypadku jest czas ktory chcialbym odmierzac na przerwaniach...
Witam Czy da się w 89C2051 uzyskać coś takiego: potrzebuję zliczać impulsy z dwóch wejść i do tego zliczać czas trwania impulsu z trzeciego wejścia, a poza tym wszystko wyświetlać co jakiś czas (powiedzmy co 0,5s) Można jeden timer użyć jako timer wewnętrzny (wyświetlanie co jakiś czas), a drugi jako timer bramkowany zewnętrznie (do liczenia czasu trwania...
Napisałem program który generuje impulsy (40kHz) na porcie za pomocą timera0. Mam pytanie czy i w jaki sposób moża zrobić żeby ciąg impulsów podzielić na "paczki" po 5 impulsów z odstępami ok. 100Hz. Jezeli bym zaprzągł do tego licznik 16bitowy to by mi sie przepełniał co 122Hz i odpalał timer 0 na jakiś czas i to by mi w sumie wystarczało ale nie mam...
Witam. Z każdym dniem coraz więcej, ale nadal potrzebuję Waszej pomocy z PWM. Chyba trochę się teraz rozpiszę tutaj. Procesor AT89S52, bez wbudowanego PWM. Otóż chcę podać tutaj kilka przykładów(napisałem wzorując się książkach). Po kolei. Potrzebuję zrobić PWM na Timerze z przerwaniami. Pierwszy program, bez przerwań, działa, ale nie wiem czy jest...
Witam Mam pewien problem z timerami, jesli dobrze rozumiem dokumentacje to przy kazdym przejsciu wartosci rejestru TMR z 0xFFFF na 0x0000 powinno wystapic przerwanie. Napialem prosty program wywolujacy przerwanie przy pomocy timera0 i niestety wartosc ta musi przjesc przez zero kilkaset razy zanim wystapi przerwanie. Korzystam ze sprzetowaego debuggera,...
Witam serdecznie Próbuję uporać się z tym okropieństwem. Dopiero zaczynam, ale cóż mam zrobić, kiedy nie działa podstawowa sprawa. Napisałem taki program $regfile = "m128def.dat" $crystal = 4000000 Config Pinc.1 = Output Config Timer0 = Timer , Prescale = 256 On Timer0 Odmierz_1s Dim Licz_8ms As Byte Enable Interrupts Enable Timer0 Load Timer0 = 250...
witam pisze program, ktory ma wlaczac na 1s dzwonek (p1.0) i na 4s wylaczac i tak caly czas w petli ale gdy nacisne przycisk p0.3, ma sie wylaczyc i wrocic do menu, moj program oczywiscie nie dziala, moze ktos moglby zobaczyc co jest nie tak, albo zaproponowac jakis inny? ajmp dzwonek org 001bh ajmp przerw1 dzwonek: setb ea setb et1 mov tmod, #00011000b...
Witam! Spędziłem już dobre kilka dni na czytaniu specyfikacji, przykładów i różnych wypowiedzi innych ludzi, a problemu wciąż nie mogę rozwiązać. Pracuje na procesorze AT91SAM7S64 z programem CrossStudio i potrzebuje skonfigurować Timer0 tak by zliczał od 0 do rejestru RC w kółko i przy tym generował przerwanie. Z Timerem poradziłem sobie bez większych...
witam! Musze dosc precyzyjnie odmierzac czas (1ms) dysponuje ATmega 32 z zewnetrznym kwarcem 8Mhz... ustawilem sobie preskaler timmera na 8 ( czyli stuka sobie z f= 1Mhz) teoretycznie powinno byc dobrze... ale w praktyce pomiar spoznia mi sie o 3sec. na minute ( ???!!!) juz nie wiem co robie nie tak... jesli ktos moze spojrzec bylbym wdzieczny... #include...
Witam, Napisałem program, gdzie po przepełnieniu generowane jest przerwanie. Poniżej kod: #include <avr\io.h> #include <avr\delay.h> #include <avr\signal.h> #include <avr\interrupt.h> #define D1 0 #define D2 1 #define D3 1 #define BUZZ 0 #define TSOP1 5 #define SW1 3 #define SW2 2 uint16_t k=0; int main(void) { DDRA=1<<D1...
Witam, mam pewne pytanie. Jeżeli skonfiguruję timer(np. 0) i będzie co 4 ms zgłaszane przerwanie oraz wykonywana procedura z etykiety:- "Przerwanie4ms", to czy stosowanie polecenia Wait w przykładzie pokazanym poniżej nie zakłóci działania programu? 'konfig. timerów, portów itp.... Do:Loop:End ' pętla główna programu, nieskończona Przerwanie4ms:...
Witam, Mam problem z uruchomieniem dwóch timerów. Timer0 ma obsługiwać przerwanie pochodzące z INT1 (Signal1), natomiast Timer1 (Signal0) z INT0 (ale może być odwrotnie). Każdy z timerów ma wykryć impuls PWM większy od 1,5ms i zapalić lub zgasić diodę / diody. Po wgraniu poniższego kodu, diodki migają chaotycznie, nie ma żadnej reakcji na zmianę szerokości...
Witam, jest jakaś możliwość wykonania przerwania w przerwaniu? Konkretnie, kilkukrotne wykonanie OVF timera w przerwaniu INTx. Próbowałem przy wejściu do przerwania INT wyłączyć je zerując GICR i GIFR, niestety nic z tego nie wyszło:) Jakieś pomysły? Tak wiem, przerwania powinny być jak najkrótsze i takie tam:)
Witam, W jaki sposób zrealizować sterowanie 8 serwami z rozdzielczością 100 kroków na PIC16F 688 według sekwencji z poniższego wykresu: Używam procka na zewnętrznym kwarcu 20Mhz, ale dla rozdzielczości 100 kroków nie wystarcza mi czasu na obsługę przerwania. Macie jakieś sprawdzone pomysły?
[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! ATmega32 16MHz jako slave odbiera dwa bajty po SPI 1MHz ( 15cm taśmy 10 żyłowej )od mastera LPC2148 . Jeżeli jest włączone tylko SPI, a inne przerwania są wyłączone jest wszystko dobrze. Jeżeli włączę przerwanie od timera2 generowane co 100us to zdarza się że atmega gubi jeden bajt i krzaczy się cała transmisja, ale po jakimś czasie jak zgubi...
Na początek witam forumowiczów. Jako że właśnie zacząłem z mikro kontrolerami (Atmega8), pojawiło się sporo niewiadomych (dla tych wtajemniczonych pewnie śmiesznych); staram się napisać (a właściwie nauczyć jak to napisać), tak żeby zagrało jak przewiduję. Mianowicie Chodzi o sterowanie przekaźnika (na PC0) wraz z LED (na PD2), z tym że przekaźnik ma...
Witam, Mam mały problem z programem z książki o programowaniu ATmega8 i ARM7 Pawła Borkowskiego tj. cw. 2 z lekcji o przerwaniach. Treść ćwiczenia to takie obsłużenie diód podłączonych do PC0, PC2 i PC4, aby PC4 świeciło po załączeniu przycisku, PC2 ma się zaświecić po 1,5 sekundzie przy wykorzystaniu timera1, a PC1 ma się zaświecić po 170ms przy wykorzystaniu...
Witam, Mam pewien problem. Staram się napisać program, którego to zadaniem będzie odliczanie na wyświetlaczu liczb od 0 do F z obsługa przerwań timera0. Program zwiększa wyświetlana liczbę o jeden co każdy cykl przerwania. Timer pracuje w trybie 16-bitowym bez przeładowania. Nie potrafię ustawić tak przerwania , żeby np: cyfry wyświetlały się co 2-3...
Witam wszystkich kolegów Mam prawdopodobnie dość trywialny problem. Chce zliczać impulsy na jednym z pinów uC (częstotliwość 100-200kHz) w czasie kiedy na innym pinie uC jest stan wysoki. Mój pomysł wygląda tak: Ustawiam timer w 16 bitowy tryb prosty Przerwanie wyzwalane zboczem narastającym zeruje 0 16 bitowy timer Przerwaniem zboczem opadającym przepisuje...
Witam, napisałem prosty program którego zadaniem miało być co 0,5 sekundy posłać 1 znak za pomocą bluetootha BTM-222. Dla testów w procedurze przerwania napisałem miganie diodą. Dla tej procedury wszystko wykonuje się poprawnie: [syntax=c] ISR(TCC1_OVF_vect) { PORTF.OUTTGL = PIN7_bm; } [/syntax] Natomiast dla tej już niestety nie: [syntax=c] ISR(TCC1_OVF_vect)...
Mam do napisania mały program na DSM-51 i szukam jakiejś pomocy. W tym momencie działa tak, że jak nacisnę na klawiaturze "2" to dioda mruga co mniej więcej sekundę. Jak nacisnę przycisk "1" to dioda nie mruga. Muszę zrobić teraz taką rzecz, używając timera 1 mam poznać czas od momentu zgaśnięcia diody (tego podczas mrugania) do momentu naciśnięcia...
Cześć, posiadam dość dużą wiedzę z zakresu programowania Arduino. Chciałbym rozpocząć przygodę z programowaniem modułu ESP8266. Moim głównym celem jest wykorzystanie kodów źródłowych oprogramowania supla aby stworzyć własne urządzenie które będą mógł w miarę elastycznie modyfikować. Moim problemem jest to, że nie znalazłem żadnych solidnych dokumentacji...
Wprowadzili mi w tym roku taki przedmiot jak układy mikroprocesorowe.Mnie to w ogóle nie interesuje jednak trzeba jakoś zdać do następnej klasy.Proszę o pomoc a mianowicie potrzebuję Wyświetlacz 7-segmentowy: wyświetlanie od 0 do F co 0,5s; potem wyświetlanie od 9 do 0 co 0,25s i zapętlić; opóźnienie na timer’ach i systemie przerwań.Z góry dziękuje...
Zadziałało, dziękuję za pomoc. Ale pojawił sie kolejny problem z przerwaniami. Ogólnie w projekcie używam 3 przerwań od timerów, przerwań od uarta, przerwań od gpio i do tego doszło teraz i2c i... zaczęło sie wszystko sypać. Wszystkie przerwania są o jednym priorytecie i podejrzewam że w tym tkwi problem, nigdy nie zmieniałem priorytetów w programach...
Co można dawać w przerwaniach,a co w głównej pętli programu. Jak już kol. (at)_lazor_ nie ma jedynie słusznych reguł. Wszystko zależy od okoliczności. Funkcje obsługi przerwań powinny być możliwie najkrótsze, ale bez przesady. Wiele osób popada w skrajności, ustawiając w ISR jakieś flagi, a potem dublując obsługę w reszcie programu. Szczególnie na...
void Przerwanko_T1(void) small interrupt 3 { } to chyba wszystko wyjaśnia ?? oczywiście trzeba najpierw aktywować przerwania ustawiając odpowiedznie rejestry i ustawić w tym przypadku timer
Jakie usatwić wartości rejestrów aby przy zegarza 24Mhz co sekundę (około) wywoływane było przerwanie timera??
Rozwiązałem robiąc na timerze i przerwaniu. Zamykam.
Zanim zamkniesz, jeżeli chciałbyś migać bez używania _delay, poczytaj w datasheet o timerach i przerwaniach od nich.
Witam, Pracuję na ATmega16 taktowanym wewnętrznym oscylatorem RC. Chciałem wykorzystać Timer1 do odmierzania czasu np. 1s lub 1min (po zastosowaniu preskalera 1024), a Timer2 razem z przerwaniem zewnętrznym do wykonania regulacji fazowej. Kiedy chce tylko odmierzać czas, albo tylko regulować fazowo to wszystko działa poprawnie. Jednak kiedy chcę połączyć...
Witam, mam kod: [syntax=basic4gl] Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Disconnect , Compare B Pwm = Clear Down , Prescale = 8 Config Timer2 = Timer , Async = Off , Prescale = 1024 , Compare = Disconnect , Pwm = Off , Clear Timer = 1 Config Timer3 = Timer , Prescale = 256 Config Int6 = Change On Ovf0...
Udało mi się uruchomić tryb asynchroniczny, a zrobiłem to tak: #include <avr/io.h> #include <avr/interrupt.h> int main (void) { ASSR |= (1 << AS2); // tryb asynchroniczny TCCR2 |= (1 << CS22) | (1 << CS20); // preskalery TIMSK |= (1 << TOIE2); // odblokowanie przerwań z...
Witam. Potrzebuję W tym liczniku obrotów: [syntax=c]#include <avr/io.h> #include <stdio.h> #include <avr/interrupt.h> #include <util/delay.h> #include "HD44780.h" //tutaj ustaw własne zasady pomiaru #define POMIAR_ILOSC_IMPULSOW_NA_OBROT 4 //ilość inpulsów na jeden obrót #define POMIAR_ILOSC_OBROTOW 10 //ile obrotów ma trwać...
Witam Procesor przechodzi w stan Powerdown po ustalonym czasie kiedy zmienna L=1. Ustawiłem wybudzanie z przycisku (podanie 0 na int0) no i nie działa . Przepatrzyłem już chyba wszystkie tematy na forum i robiłem z milion kombinacji. Już nie mam pojęcia co robić czy to może być wina BASCOM, procesora , prosilbym o konkretne wskazówki jak ustawić aby...
Chcialem uzyskac przerwanie co 1 sekunde aby zwiekszyc tylko zmienna sekundy do odmierzania czasu. Ale mikrokontroler jak sie okazalo resetuje mi sie co sekunde gdy tylko nastapi przerwanie. blad w programie? pomóżcie prosze. z gory dziekuje! #include "hd44780.h" #include <interrupt.h> // funkcje sei(), cli() #include <avr/io.h> // dostęp...
Witajcie. Ostatnio zmagam się z obsługą klawiaturki analogowej składającej się z 3 klawiszy. Poradziłem sobie z uruchomieniem ADC na ATmedze8 i zrobiłem sobie 2 Timery programowe . Teraz próbuje zgodnie z przedstawioną przez Mirka (w filmach z cyklu "Przetwornik ADC - część 06") koncepcją zrobienia repeat klawiszy. Według programu klawisze keys[0] i...
Witam wszystkich, rzadko pisze bo zwykle jakoś sobie radzę, ale po trzech dniach walki jestem zdesperowany i zaczynam szukać pomocy u Was. Zrobiłem emulację odbierania RS232 na nóżce INT0. Zbocze opadające oznacza że mamy bit startu. Tak startuje odbieranie: [syntax=c] ISR(INT0_vect){ // włączenie odbierania znaku na emulowanym UART 600bps GICR&=~(1<<INT0);...
Witam, zaprogramowałem Attiny 2313 w bascomie tak aby co sekundę gasła i zaświecała się dioda led podpięta do PORTD.6. Ustawiłem obsługę przerwań, konfigurację TIMERA1 podzieliłem go przez 64. Oscylator procesora jest ustawiony w FUSEBITS na wewnętrzny 4Mhz ( 100010:int. RC Osc. 4 Mhz; Start-up time: 14 CK + 65 ms; Config Portb = &B11111111 Portb =...
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,...
Dzień dobry! Mam taki o to problem, przerzuciłem notę ale nie mogę jakoś ogarnąć jak uruchomić drugi timer 8 bitowy, przykładowo: Proszę pamiętać o używaniu znaczników syntax . Opcja Listing kodu . - arnoldziq
To nie Bascom jest przyczyną tylko źle napisany program ;). 1. odczyt timera1 16bit odbywa się po przez rejestr pomocniczy TEMP, ten rejestr jest też używany przez inne procedury i funkcje i jeśli jest użyty to właśnie niszczona jest wartość High timer1 bo ona tam jest wpisana gdy używasz komendy. wpisując tak timer1 do tablicy możesz gubić High timer1....
AVR studio (asembler) to nie Bascom... tu nie ma czegoś takiego jak komendy do obsługi sprzętowych liczników, musisz używać rozkazów uP i konfigurować odpowiednie rejestry i przede wszystkim odpowiednio używać przerwań, bo one są chyba najważniejszym elementem, którego używa się przy pracy z licznikami. Musisz wziąć notkę katalogową tego atmelka i przejrzeć,...
Witam wszystkich!!! Mam programik na którym próbuje zrozumieć przerwania zewnętrzne i nie moge pojąć :D . #include <REG420.H> #include <stdio.h> #define OKRES (-46080) unsigned char volatile tim = 0; unsigned char volatile licznik0 = 0, licznik1 = 0, licznik2 = 0; void main(void) { ET0=1; //zezwolenie dla przerwań od...
Używam Timera1 z Atmega164P w trybie CTC, Atmega ma kwarc 16MHz, interesujący kawałek programu wygląda tak: Konfiguracja Timera: void Timer1_Init(void) { DDRD |= (1<<PD7); // PD7 wyjście PORTD |= (1<<PD7); // PD7 <= 1 TCCR1B = (1<<WGM12)|(1<<C...
Witam. Używam przerwania INT1i TIMERA1 do odmierzania czau trwania stanu wysokiego na wejściu INT1 przez zliczanie odcinków czasu 400us podczas trwania stanu wysokiego na wejściu INT1. '****timer1******** Config Timer1 = Timer , Prescale = 64 On Timer1 Pomiar_czasu Load Timer1 , 50 Enable Timer1 Stop Timer1 '*****wtrysk***** On Int1 Wtrysk Config Int1...
Witam, W dokumentacji dowolnego mikrokontrolera ATmega z łatwością można odnaleźć tablicę z wektorami przerwań, np. taką: 1 $0000 RESET 2 $0002 INT0 External Interrupt Request 0 3 $0004 INT1 External Interrupt Request 1 4 $0006 INT2 External Interrupt Request 2 5 $0008 INT3 External Interrupt Request 3 6 $000A INT4 External Interrupt Request 4 7 $000C...
Zainstalowałem AVR Studio4 i lecę od początku z google i pdf na temat ASM i AVR Powiedzcie chociaż czy w dobrym kierunku zmierzam? Bo jak w złym to odpuszczam i daje sobie spokój, pobawię się migającymi diodami w Bascomie. Tam gdzie nie ma komentarza to nie wiem co to znaczy i co robi ale było w pdf lub innych opisach, jeżeli ktoś może mi wyjaśnić instrukcje...
Cześć, słuchajcie mam taki dziwny problemik :/ Może ktoś mnie oświeci o co chodzi. No ale od początku. Mam procka mega16 i podleczoną do niego diodę do portu D pin3, starowana 0 ( świeci ). No i chce sobie zrobić żeby ona migała przy pomocy counter'ów. I napisałem takie coś: #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h>...
Witam. Pewnie tematów z podobnymi prośbami było tu już mnóstwo. Niestety nie znalazłem odpowiedzi na nurtujące mnie pytanie. Napisałem taki króciutki programik w asm. .include "m8def.inc" .CSEG .org 0x0000 rjmp RESET .org 0x001C rjmp timer0 RESET: ;inicjowanie stosu ldi r16, LOW(RAMEND) out SPL, r16 ldi r16, HIGH(RAMEND) out SPH, r16 ;poczatkowe ustawienia...
Bardzo bym prosil o podpowiedz co nie gra w tym kodzie, bo juz walcze z tym 3 dzien: #define INT_TWI 1<<19 #define PRZERWANIE_LEVEL4 #define TIMER0_INTERRUPT_LEVEL 0 __irq void timer0_c_irq_handler(void) //przerwanie FIQ { AT91C_BASE_TC0->TC_SR; LCD_wyswietl(wsk_tablica); AT91C_BASE_AIC->AIC_EOICR=1<<AT...