Tryb jest 4 bitowy(chyba),bo korzystam z programu powyżej kolegi sp3uqw piny ma mam podłączone nastepująco PD0->D0.....PD7->D7(atmega8) to chyba nie nie przeszkadza że mam podłączone wszystkie 8 pinów w trybie 4 bitowym?? a mój program wygląda tak: #include <avr/io.h> #include "funkcje.c" #define RS_ON sbi(DDRC,PC5);sbi(PORTC,PC5) #define...
Flaga 36 nie wyłącza NTP - bo NTP jest w autoexec.bat, wyłącza natomiast BL937. To wygląda, jakby brakowało zasobów przy flashowaniu. Jeszcze gorzej jest przy włączonym SetupEnergyStats. stopDriver nie robiłem, sprawdzę przy nowym firmware. Ogólnie, wyczyszczenie autoexec.bat likwiduje zawieszanie się przy flashowaniu. Zachowanie BL602 bez NTP sprawdzę...
Witam. Chciałem się podzielić moim projektem który pozwala na obsługę przekaźnika i włączenie go na 5min za pomocą przycisku chwilowego. Oraz sterowanie z aplikacji włączaniem i wyłączaniem przekaźnika na WeMos D1 Mini. Konfigurację aplikacji daję w załączniku. Elementy potrzebne do budowy projektu, 2 x przekaźniki (lub dowolna ilość) Arduino Nano (lub...
Zadanie " odczytZEepromTemperaturyIWilgotnosciIGod... " powinno być utworzone w setup(). Stos jest za mały - na początek ustaw na 4096 . Funkcja odczytZEepromTemperaturyIWilgotnosciIGod... to jest własnie callback dla tego zadania. Nie wiem, o co chodzi z nazwą funkcji TaskBlink() - jakieś copy/paste :). Pętla loop() domyślnie też się...
A mógłby mi Kolega podpowiedzieć odnośnie odtwarzania plików, jeden po drugim ? Zrobiłem to tak: [syntax=vbnet] Godziny = 20 Minuty = 34 Do If Powiedz_czas = 1 Then If Powiedz_godzina = 1 Then Godziny_plik = Lookup(godziny , Godziny_mow) '************ odtwarzanie pierwszego pliku w pierwszym folderze Tf16p_data(4) = &H0F ' CMD Tf16p_data(6) = &H02 '...
mickpr - zły pomysł bo będzie mu blokowąło program A kto mówił, żeby przerwa była typu "waitms/delay". Przerwa może być zrealizowana jako flaga blokująca odczyt RC5 przez określony czas - a pętla odbierająca zdarzenia może chodzić cały czas z pełną prędkością wykonując inne zdarzenia. Zaletą "mojego" rozwiązania jest to, że regulując ten czas można...
W oparciu o Wasze rady oraz [url=http://www.avrfreaks.net/index.php?... Guide to AVR Timers i przydatną stronę [url=http://www.et06.dk/atmega_timers/]A... Timer/Counter/Prescaler Calculator w wolnym czasie sklepałem taki kawałek kodu: [syntax=c]#include <avr/io.h> #include <avr/interrupt.h>...
Witam Mam płytkę sterującą dwoma kanałami PWM - przez ULN oraz MOSFETY. Płytka ma dwa wejścia oraz wejście czujnika PIR - INT1. Ma przede wszystkim sterować włączaniem taśmy LED 12V z czujnika PIR ( oprócz tego z drugiego wejścia ). LED włączona przez PIR ma docelowo świecić określoną ilość czasu ( zależną od natężenia światła ) i się wyłączyć. Żeby...
Mozemy pomoc w pisaniu, ale z helpem Bascoma powienienes dac rade, obslyga lcd ->gotwa funkcja -klawisze dasz rade, zmieniasz jedynie zmienne - odmierzanie czasu sporbuj na timer1 co np sekunde bedzie zwiekszal Ci zmienna Czas, w petli gl musisz kontrolowac by wartosc nie przekroczyla zakresu - prostym if'em sprawdzasz wartosc tej zmiennej Czas z czasem...
OK Przepisałem cały program od nowa. 73% po kompilacji. Teoretycznie wszystko powinno działać ale nie mogę dostać się do menu "termostat" tzn.po naciśnięciu przycisku "menu" program powinien przejść do podprogramu termostat i na wyświetlaczu powinna pojawić się ustawiana temperatura ale tak nie jest. Czy ktoś mądry mógłby zerknąć na kod i powiedzieć...
Oto ostatni moj kod, ktory probowalem zaimplementowac. To bylo na Mega8 z obsluga 1-wire - wycialem to. // Definicje dotyczace LCD #define RS 0 // wybor rejestru #define RW 1 // 1 - odczyt; 0 - zapis #define E 2 // sygnal zezwalajacy (enable) #define PORTLCD PORTA // port z podlaczanym LCD #define DDRLCD DDRA // port z podlaczanym LCD #define...
Taki zapis wziąłem akurat z książki, więc zakładam, że też jest poprawny :P Załączam zmieniony program: [syntax=basic4gl]$regfile = "m8adef.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 Config Pind.0 = Output Config Pind.1 = Output Config Pind.6 = Input Config Pind.7 = Input Config Pinb.0 = Input Config Pinb.1 = Output Config Pinb.2...
Witam Czy ten program ma prawo działać na ATtiny2313 z wewnętrznym oscylatorem RC o wartości 8MHz jako sterownik silnika bipolarnego, gdyż po podłączeniu do l293d sterownik się strasznie grzeje a silnik delikatnie przekręci się o jeden krok a następnie przerwa i jeden krok do tyłu. [syntax=c]/* #include <avr/io.h> #include <avr/interrupt.h>...
Cześć, ostatnio nie miałem czasu, także przepraszam za brak odpowiedzi. Program jest taki sam jak w pierwszym poście, tylko podmieniłem wzory na czas: RC5_main.c [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/sleep.h> /* Załącz bibliotekę RC-5*/ #include "dd_rc5.h" /* LED testowy...
Witam Mam program budzika, który jako dodatkową atrakcję miał mieć możliwość mówienie czasu na żądanie i odtwarzanie oprócz buzzera utworu jako alarmu. Atmega steruje przez jedno SPI programowe układem MAX7219, a przez konwerter poziomów i drugie SPI programowe odtwarzaczem WTV020SD. O ile sam WVT020SD + PCF8563 ( wyjście CLK do INT1 ) działają dobrze,...
Program przekopiowałem już toczka w toczkę z płyty dołączonej do książki, oczywiście zmieniłem pod moje podłączneie do procesora ukłądu pcf8583 ale nadal nie wywołuje przerwania ten układ i nic nie mogę z niego zczytać. Jak sprawdzić czy czasem w jakiś sposób nie uszkodziłem tego układu? Jedyna różnica przy podłączniu odbiegająca od książki to nie podłączone...
Z godnie z moja zapowiedzią przeanalizowałem dokumentacji i napisałem program który powinien obsługiwać połączenie z czujnikiem . Działanie będę mógł sprawdzić dopiero w szkole podczas zajęć bo programator mi padł niestety. Mam jednocześnie pytania dotyczące mojego programu które umieściłem już w komentarzach. Ponadto są tam informacje z jakich korzystam...
Witam, na wstępie dodam że jestem bardzo początkujący w programowaniu. Staram się stworzyć program który by włączał i wyłączał funkcję RGB, poprzez pilot RC5. Staram się to zrobić po kolei i najpierw próbuję gasić i zapalać pilotem diodę. Problemem jest to, że program reaguje na każdy przycisk a nie na konkretny - zaprogramowany. Chce sterować klawiszem...
Wrzucam cały kod programu. Może ktoś obeznany zerknie na to i coś podpowie bo dalej nie potrafie znaleźć błędu. .INCLUDE "m8def.inc" .def temp = r16 .def zero = r20 .def czekaj = r21 .def licznik = r22 .def DATA = r24 .def ustaw = r25 .def secure = r30 .def maska = r31 .equ SLA1_W=0x92 ;adres czujnika (VCC na ADR SEL) 1001001 oraz...
Pokaż Cały kod. Ale nie jako obazek.. W handlerze nie widzę zerowania flagi.
dondu: Ja wcale tego pisać nie muszę :-) Po prostu zastanawiam się skąd taka maniera bierze. Ale dzięki za dbałość o mnie. Właściwie to ciekawsza byłaby dla mnie odpowiedź niż zlikwidowanie tej maniery. Do autora: Nie wnikając czy procedura skanowanie robi to co chciałbyś, aby robiła czy nie poniższa robi to samo trochę krócej, nieprawdaż? [syntax=c]...
Atmega 328P z kwarcem 18432000 (w specyfikacji mozna ja kręcić do 20MHz) spokojnie potrafi wygenerować trzy PWM przesunięte w fazie o 120 stopni z krokiem 256 z częstotliwością 50Hz przy tym nadając na USART o aktualnych warunkach jednego potencjometru. Pewnie że potrafi, ja na attiny 861 wygenerowałem 3 sinusy co 120 st z regulacją F od 20 do 250Hz...
Przede wszystkim PCINT wymaga większego nakładu programowego. Przy włączonych wielu źródłach danego przerwania PCINT trzeba analizować, który pin zgłosił przerwanie i w jaki sposób się to odbyło (które zbocze). PCINT jest niżej w hierarchii przerwań, zatem na obsługę tego przerwania trzeba czasem dłużej poczekać (w zależności od konstrukcji programu)...
ogolnie jest zasada tak ze w przerwaniach nie powinno byc jakis procedur opozniajacych, przerwanie powinno sie wykonac , obliczyc i wylaczyc jak najszybciej,glowny program jest od czasowek , komunikacji i2c itp. przynajmniej ja sie staram trzymac tych zasad.czasami mozna je nagiac oczywiscie.to zalezy od zlozonosci projektu. ja PCF8583 obsluguje zawsze...
W przerwaniach masz _delay()- to wielki błąd. A _delay() w pętli- to duzy błąd. Masz Timer i masz go ustawić na przerwanie co 20ms. W tym przerwaniu ustawiasz sobie tyle flag ile trzeba i je zwiększasz. W głównej petli sprawdzasz czy flaga1==1, zerujesz i wykonujesz jakiś warunek. Potem sprawdzasz czy flaga2==5, zerujesz i robisz to co ma być robione...
Dzięki wielkie- ale to nie do mnie pisałeś. O Atomic_Block dowiedziałem się w czwartek- sprawdziłem- od czwartku jest to pierwsza wiadomość na ten temat. A wracając do tematu Fir3man- wymyśliłem taki schemat programu: #include <stdint.h> #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> volatile uint8_t dol;...
Czyli zgadza się, ta flaga to czujnik wyjścia papieru. Czujnik pokrywy jest pod pokrywą w otworze z przodu.
Teraz przypomniałem sobie, że miałem podobne problemy i wydaje mi się, że coś wspólnego miało z tym Fusing. Spróbuj wyświetlać na razie bez konwersji single na tekst. Ach te problemy miałem na wersji 1.11.9.8 http://www.elektroda.pl/rtvforum/topic17...
Bit RXNEIE włącza przerwanie od dwóch flag: RXNE i ORE (overrun) - patrz tabelka USART interrupt requests . Odczyt z DR kasuje RXNE. ORE jest kasowane przez (cytat z opisu bitu ORE): "an read to the USART_SR register followed by a read to the USART_DR register".
Proponuję następujące zmiany: Dla zegara 8MHz Config Timer0 = Timer , Prescale = 8 wtedy jeden cykl = 1us - łatwo się liczy. Następnie w przerwaniu: Przerwanie: Timer0 = Timer0 + 213 If Flaga = 1 Then Toggle Portc.7 Else Portc.7 = 0 End If Return Dalej w podprogramie "Send_transmit" zamiast: Portc.7 = 1 napisz: Flaga = 1 a zamiast: Portc.7 = 0 napisz:...
W rejetrze GIFR pojawia się flaga żądania obsługi przerwania INTF0. I czeka. Gdy w rejestrze GICR pojawi się ponownie flaga INT0 (czyli w Bascomie enable INT0) przerwanie jest obsłużone i flaga INTF0 jest wtedy kasowana. Flaga INTF0 może byś skasowana ręcznie.
poza tym dlaczego nie używasz sprzętowych timerów jako timerów tylko do generowania przerwań? Kolego może źle mnie zrozumiałeś ale do ustawiania flagi używam Timer0 i właśnie mnie dziwi dlaczego mi się te czasy nie zgadzają Jak do wyznaczenia czasu używam tego samego timera. Tak wygląda obsługa przerwania u mnie : Timer może zliczać czas wprost i w...
Wzorowy temat - są wszystkie istotne informacje, m.in. to o jaki układ chodzi! Niby wszystko działa, ale zawsze na starcie, zaraz po uruchomieniu Timera występuje przerwanie od przepełnienia. Tak jakby jakaś flaga byla ustawiona. To nie jest przerwanie od przepełnienia, tylko od "update event". Jeśli przed uruchomieniem timera wywołasz owy "update event"...
Odblokowałeś globalne przerwania ale nie odblokowałeś indywidualnego od UART_RXC. Flaga RXCIE w rejestrze UCSRB. JarekC
Kolega snaap nie napisał jeszcze, jak ma skonfigurowane przerwanie INT1. Ja podejrzewam, że ma wyzwalanie stanem niskim, a nie tak jak kolega ravmar (autor wątku) zboczem opadającym. Różnica między tymi dwoma typami przerwań polega na tym, że w tym pierwszym (wyzwalanym stanem niskim) flaga INTF1 jest zawsze zerowana, niezależnie od tego, czy przerwanie...
(at)niveasoft To nie ten przypadek. Wyjaśnienie tej zagadki jest raczej proste - flaga przerwania jest kasowana, ale zwieranie mechaniczne powoduje bouncing, więc zgłaszanych jest więcej niż jedno przerwanie. Samo wyłączenie przerwania nie wpływa na odpowiednią flagę, więc przy kolejnym drganiu jest ona ustawiana, ale przerwanie nie jest obsługiwane...
To Ci powinno ruszyć, napisałem kiedys pod Keila uVision3 V3.63. Dziala z Makieta Olimex'u LPC-2378-STK-A: // (LPC2378) mandaryn 2009 #include <lpc23xx.h> int flaga=0; // 0 -> dioda OFF, 1 -> dioda ON __irq void przerwanie (void) { if(flaga==0) // Gdy dioda wylaczona { FIO2SET|=0x00000001; // Wlaczenie diody...
Śmiem twierdzić, że w (0<<ISC11) | (1<ISC10) jest błąd, powodujący, że wyrażenie to ma wartość równą 1 (podczas gdy powinno mieć wartość równą 4). Jeśli flaga jest ustawiana na zbocze, to w kodzie głównym powinny występować jakieś opóźnienia albo zmiana algorytmu, bo inaczej flaga zostanie sprawdzona raz - będzie ustawiona,...
No tak też przypuszczałem że sam będę musiał zmierzyć się z problemem. Dziękuje wszystkim, którzy mi nie pomogli :) A oto działające prawidłowo rozwiązanie. [syntax=asm] $MOD52 CZERWONA bit P3.7; ZIELONA bit P3.6; PRZYCISK bit P3.2 CZAS_MAX equ 30h; FLAGA_TIMER equ 31h; FLAGA_PRZYCISK equ 32h; CZAS_CZERWONEJ equ 33h WARTOSC_CZAS_MAX equ 20; INIT: sjmp...
Gdy procesor jest w trakcie wykonywania procedury przerwania, następne przerwanie nie będzie przyjęte , gdyż procesor (nie kompilator!) zeruję flagę globalnego zezwolenia na przerwania. Tak samo flaga bieżącego przerwania (tego, którego procedura obsługi jest wykonywana) zostaje automatycznie wyzerowana. Po zakończeniu przerwania flaga globalnego zezwolenia...
]Zależy jak zadeklarujesz przerwanie, czy ISR bez atrybutu lub z atrybutem ISR_BLOCK albo jako SIGNAL czy ISR z atrybutem ISR_NOBLOCK lub jako INTERRUPT. Wchodząc do przerwania, inne są wyłączone, Musisz je włączyć instrukcją i przerwanie może być przerwane przez inne przerwanie. Te makra jak ISR_NOBLOCK po prostu generują tę instrukcję automatycznie...
Przerwania PCINTx wykonują się przy każdej zmianie stanu logicznego, niema możliwości konfiguracji np. tylko dla zbocz narastającego lub opadającego. Stan zbocza na poszczególnym pinie sprawdzasz w przerwaniu. Attiny13 ma 6 pinów PB.0-PB.5 (PCINT0 do PCINT5) które mogą wywołać przerwanie. I tu jest jedna myląca rzecz :) dla tych pinów jest tylko jeden...
A co to jest UART0TxEmpty? Flaga ustawiana w innym przerwaniu? Bo jeśli tak, to chyba nie sądzisz, że jedno przerwanie ot tak sobie przerwie drugie, bez ręcznego wymuszenia takiego stanu? Nawiasem mówiąc, sposób w jaki chcesz to zrobić (przerwanie przerywające przerwanie, sprintf(), oczekiwanie w przerwaniu) woła o pomstę do nieba. Nie mówiąc już o...
Średnio chce mi się analizować ten kod, ale jeśli załączasz przerwania w przerwaniu od INT1 po wcześniejszym wyłączeniu przerwania od INT1 - jest poprawnym rozwiązaniem, gdyż nie ma możliwości wejścia do funkcji przerwania od INT1 podczas jej wykonywania niezależnie od okoliczności; tak ponowne zezwolenie na przerwanie od INT1 bez wcześniejszego zablokowania...
Debouncing w przerwaniu - tylko nie mów, że robisz to przez aktywne oczekiwanie wewnątrz przerwania. Jeśli tak, to zauważ, że to, że skasowałeś flagę przerwania i jesteś w przerwaniu wcale nie oznacza, że flaga nie może zostać ustawiona ponownie. Możliwy jest taki scenariusz: wciskasz przycisk, pojawia się zbocze opadające które ustawia flagę a więc...
W PDF jest napisane, że flaga jest zerowana gdy : "interrupt routine is executed". Ja to tłumaczę jako obsługa przerwania jest WYKONANA. CZYLI po ZAKOŃCZENIU. W PDF jest też napisane, że zerujemy ją wpisując do rejestru wartość na określonym bicie 1.Czyli EIFR.0=1. Dlatego wpisując EIFR.0=0 NIE ZEROWAŁEŚ FLAGI!. Spróbuj ja wyzerować następująco If EIFR.0=1...
Nie działa Ci, bo nie przeczytałeś dokumentacji... http://obrazki.elektroda.net/0_118799421... Flagi przerwań czyści się przez wpisanie do nich logicznej jedynki. Trochę może paradoksalnie to wygląda, ale ma swoje logiczne uzasadnienie. Chodzi o to, że czyszcząc flagi w ten sposób da się to zrobić o wiele szybciej i co najważniejsze - bezpieczniej....
Pokaż procedurę obsługi przerwania i pętlę główną bo samo ustawienie timer1 niewiele mówi. Obsługę diody LED można zrobić na Timer0, lub nawet w procedurze obsługi Timer1 stawiać flagę zmiany stany diody a w pętli głównej sprawdzać stan flagi i odpowiednio reagować. Generalnie procedury obsługi przerwań powinny być jak najkrótsze ale zawsze przerywają...
Jest tego sporo, DCF77, 7 x DS18B20 i DHT11 ( akurat jeśli chodzi o niego to mam wątpliwości, czy ten kod działa, bo jest na obydwu płytkach podpięty i zdarza się zawieszenie ) Nadajnik Atmega328p Dodano po 16 Odbiornik Atmega644P - trochę zmieniłem obsługę przerwania, wydaje mi się, że w przerwaniu nie powinno się wykonywać dużych obliczeń. [syntax=basic4gl]...
Przerwania nadawcze są dwa - TX Complete oraz UDRE empty. Przerwanie "USART_TX_vect" to przerwanie Complete generowane flagą TXCIE lub (w wypadku wyłączonego przerwania) testowane flagą TXC. Natomiast flaga UDRE w powiązaniu z flaga UDRIE generuje przerwanie Empty.
flaga przerwa atmega8 flaga bascom obsługa flaga
profil grzania resetować bateria laptop grzałka parkside
Bosch Series 2 SMU2HVS20E/34 dishwasher not working, no start, E:15, E:24, E:18 error codes Mercedes W124 2.3 M102 – lokalizacja czujników odpalania, CKP, ECT, CSV, TTS, AAV