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...
ADIF jest flagą dla przerwań. W ogóle nie musisz i nie powinieneś z niego korzystać przy takim sposobie pracy. Normalnie po ustawieniu flagi ADSC sprawdzasz czy jest dalej ustawiona. Po zakończonej konwersji ADC ją zeruje. Bit 6 – ADSC: ADC Start Conversion In Single Conversion mode, write this bit to one to start each conversion. In Free Running...
http://obrazki.elektroda.pl/9223335300_1... Było już na elektrodzie prezentowanych wiele zamków szyfrowych – z pełną klawiaturą, dwoma przyciskami i jednym też. Mój projekt z serii pchełka zrealizowałem na Attiny13 i jednym przycisku. Potrzebne mi było rozwiązanie nieco inne – coś co nie będzie chronić sejfu w banku ale...
Gdybym wiedział , nie pytałbym. Na atmedze 8a da radę zrealizować ten projekt z pominięciem rejestru ? Atmega8 ma wystarczająco dużo wyprowadzeń żeby zrobić to bez rejestru, przecież żeby obsługiwać LCD w klasyczny sposób potrzeba przynajmniej 6 pinów (4 bitowy tryb, bez odczytu flagi zajętości)... a ATTiny13 ma 8 pinów w sumie, a gdzie zasilanie,...
W praktyce program działa zadowalająco Wcześniej Poziomy jasności są bardzo nieliniowe. To jak w końcu jest? Zrób jak radzi przedmówca, na przerwaniach od timera, w trybie CTC oczywiście. Przy F timera 20kHz i 256 stopniach świecenia uzyskasz odświerzanie LED prawie 80Hz. Kod w IRQ banalny: [syntax=c]static irq; irq++; if (irq > PwmR ) LedRon(); else...
Narazie odpuszczam tryb powerdown aż nie zrozumiem dokładnie o co chodzi z flagami. ] Teraz diody migają ale całkiem inaczej niż przewiduje program i dzieje się to niezależnie od stanu przerwania int0. Czy jeszcze gdzieś jest błąd? Program jest dość krótki, niemniej jednak jest w nim kilka pdstawowych błędów. Zwróć uwagę na: Int0 masz na wejściu PB1,...
GCC zmienną zawsze umieszcza w RAM. Rejestry służą do innych celów. Czyli za każdym razem tracę min. 2 rozkazy ze względu na specyfikę GCC - trochę mnie to nie przekonuje. np. ATtiny13 (najprawdopodobniej) nie ma ramu i ma tylko 3 poziomowy, sprzętowy stos, jednak nie przeszkadza to w obliczeniach z ADC. W swoich programach pisanych w ASM zazwyczaj...
Cześć, chciałem przeportować kod do odbioru RC5 autorstwa Dondu za ATMega8 na ATTiny13 - http://obrazki.elektroda.pl/8294459100_1... REzystory diod 470Ω, nie zmieniłem na schemacie. Pilot samoróbka, ale 100% pewniak. No więc w czym problem? Uruchomiłem przykład na ATMega8, wszystko pięknie śmiga. Program kompiluje się dla Tiny13...
No masz moją wersje rozwiązania tego problemu. W symulatorze działa. Na uP nie testowałem. [syntax=basic4gl][/syntax] $regfile = "attiny13.dat" $crystal = 1000000 Dim Fp1 As Bit Dim Fp2 As Bit Config Pinb.3 = Input Config Pinb.4 = Input Config Pinb.1 = Output Config Pinb.2 = Output Set Portb.3 'podciagniecie do +5V Set Portb.4 Do If Pinb.3 = 0 And Fp1...
Zaprojektowałem i zrobiłem w kilku testowych wersjach. Cała logika została zrobiona na mikrokontrolerze ATtiny13v oprogramowanym w asemblerze. Dla chętnych kawałek opisu i wyników moich przemyśleń: http://flagiusz.republika.pl/flashlight/... I przeróbka latarki: http://flagiusz.republika.pl/flashlight/...
A nie lepiej połączyć wszystkie diody razem, a jasnością sterować PWM`em (nawet na 555). Do sterowania jednym przyciskiem wystarczy praktycznie dowolny licznik binarny/dekadowy/lub 1zN (a w skrajnym przypadku nawet i kilka gołych przerzutnikow T). Jeśli chodzi o typ układu, to zdecydowanie CMOS`y, np. 4017/4022/... - niektóre z nich pracują już od 1,2V....
https://obrazki.elektroda.pl/4901753200_... Witam, Prezentowana konstrukcja, to bardzo proste urządzonko, które cyklicznie co 24 godziny restartuje podłączone do niego urządzenie. W moim przypadku są to przepływomierze zainstalowane na sieci wodociągowej, które z racji swojego wieku średnio raz na 30 – 40 godzin się zawieszają...
A.. jeszcze coś sobie przypomniałem. czy jest jakaś zasada która mówi kiedy flaga przepełnienia licznika Timer0 jest ustawiana (OVF0). Bo patrząc na wspomnianą tabelkę nie widzę reguły? No przecież w tej tabelce pisze kiedy flaga będzie ustawiana. ;)
W Bascom też da się to świetnie zrobić, ja raczej bym zapytał: Dlaczego wszędzie te koszmarne Wait (i _delay_XX w C)? W przypadku przedstawionym przez Autora wystarczy użyć 2 timerów do osiągnięcia tego efektu. Jeden timer, jeśli mu to zadamy, co jakiś czas zmniejsza wartość PWM, a drugi jest sprzętowym generatorem pwm. program główny tylko wystawia...
Po pierwsze nie: TCCR0B |= (1<<CS00) | (1<<CS01); a : TCCR0B =(TCCR0B&0xf8) | (1<<CS00) | (1<<CS01); nie ma różnicy skoro i tak wcześniej nijak w rejestrze nie grzebie po drugie masz bity WGM0x a ja nie widzę abyś dokonywał czegoś takiego jak ustawienie trybu pracy jak wgm0x są równe 0 to licznik pracuje w normalnym trybie...
Da się, tylko wtedy będziesz miał przypadkowe ułożenie włącznika w czasie załączenia, bo raz będziesz wyłączał włącznikiem a raz pilotem. dim flaga as bit if pind.1=1 then flaga=0 if pind.1=0 then flaga=1 do if pind.1=1 and flaga=1 then toggle portb.4 flaga=0 waitms 200 end if if pind.1=0 and flaga=0 then toggle portb.4 flaga=1 waitms 200 end if loop...
Ja testowałem taką funkcję w attiny13 (zmien sobie pin INT0)i działało OK Działało tylko przypadkiem. Chociaż nie, inaczej: u Ciebie mogło działać ale u autora wątku na pewno to nie zadziała. Nie widać reszty kodu, więc można się tylko domyślać ale u Ciebie prawdopodobnie, być może, nie było konieczne zachowanie atomowości usypiania natomiast u autora...
Przydało by się jeszcze , ustawić wskaźnik stosu SPL :) A co do flag i rejestrów , jest to opisane dokładnie w dokumentacji , w której to musisz nauczyć się wyszukiwać potrzebnych informacji. Piotrek PS Co do SPL , to się zagapiłem , bo akurat w ATTiny13 jest on ustawiany sprzętowo na koniec RAM-u(0x9F).
2. Och te upały - oczywiście ustawia, a nie zapamiętuje :) 1. W teście powyżej INT0 nie ma włączonej obsługi przerwań (fragment jest zakomentowany), ale dla testów funkcję obsługi przerwania zostawiłem. Oba przerwania mają na swoich pinach włączone pull-up więc operowanie nimi odbywa się przez podanie stanu niskiego na pin, czyli przez zwarcie do masy....
(at)niveasoft dzięki za pomysły, linki... Normalnie mnie oświeciłeś tym: po czym idzie spać do POWERDOWN Mój ESP8266 działa jak najbardziej OK, ale po prostu kocha prąd z baterii :( A gdyby tak między kontaktron a ESP dać np. ATtiny13? uC miałby za zadanie: -nie ma żadnych impulsów więc przechodzi do POWERDOWN i rozłącza zasilanie dla ESP -jest impuls...
Jakim sygnałem wywołujesz przerwanie, zboczem czy poziomem? Nie masz skonfigurowanego przerwania więc jest default'owo wywoływane niskim poziomem. To dobrze, bo tylko taki poziom wybudzi Ci µC z powerdown . Nie pakuj wszystkich obliczeń w przerwania, raczej ustawiaj flagę, która powoduje wykonanie obliczeń w głównej pętli, przed uśpieniem µC....
Skonfiguruj przerwanie zewnętrzne INT0 pod przycisk. Gdy przycisk zostanie wciśnięty, w przerwaniu ustawiasz odpowiednia flagę zaczynająca odliczanie czasu, oraz załączasz przekaźnik. Ustaw sobie jakiś timer np. timer0, preskaler 1024, w trybie overflow. Przy taktowaniu 1[MHz], częstotliwość przerwań wynosi ok. 4[Hz]. Co czwarte przerwanie timera, inkrementuj...
Chwile mnie nie było :D Napisałbym to inaczej, ale wracając do pytania z pierwszego postu . Jeśli chcesz by procesor zawsze był tak samo zajęty to każ mu w tych innych Case`ach także nadawać Pulseout tylko na pin Reset. Bascom to przełknie bo ten pin może pracować jako normalny I/O ale jak jest resetem to nic mu się nie stanie jak napiszesz Pulseout...
Było by lepiej gdybyś wstawił kod zamiast screena , symulator nie obsługuje wszystkich zdarzeń i takie rzeczy to szybciej się robi na płytce testowej niż na symulatorze . Musisz ustawić w rejestrze MCUCR odpowiednią wartość dla drzemki , oraz flagę zezwolenia na sen poza tym zainicjować stos , odblokować przerwania i przerwanie int0 ale co ważne ustawić...
Witam, mam taki problem, że w kodzie zmienna globalna jest tj nie widziana przez program, podam przykład i wytłumacze: #include <avr/io.h> #include <avr/interrupt.h> #define GREEN_LED_ON PORTB |= 0x1; #define GREEN_LED_OFF PORTB &= 0xFE; #define RED_LED_ON PORTB |= 0x2; #define RED_LED_OFF PORTB &= 0xFD; #define RELAY_ON PORTB |=...
Z "internetu" wyczytałem , że przed modyfikacją zmiennej, która będzie użyta w procedurze obsługi przerwania trzeba wstrzymać globalne przerwania . Nie wiem czy dobrze zrobiłem - zmieniłem kod na : cli(); stan=1 sei(); Jest to skrajnie nieprawidłowe. Nie może to pomóc, tylko zaszkodzić. Kiedy występuje przerwanie dochodzi do zapisu PC na stosie i skok...
Moyshaa, dzięki za link. Ostatecznie pisze, że ten kod działa ale drażni mnie to, że nie rozumiem w jaki sposób tutaj mierzony jest okres(od rising do rising) może dlatego, że komentarzy mało :( Kod proszę umieścić w znacznikach code! Robak
Jeśli zrobię sobie FIFO- pierścieniowe albo nie- i będę do niego wrzucał zdarzenia- przerwania albo wyniki działań funkcji- to w tym rejestrze mogą się znaleźć zarówno stare jak i nowsze flagi. Dotyczące tego samego żądania obsługi. To czy z tego co pisze nsvinc program ma sobie "olać" starszą flagę czy też "grzebać w śmietniku" i znaleźć tę starszą...
Witam Mam problem ze skompilowaniem kodu w Bascomie. Cały czas wywala błąd: ERROR :344 Line: 108 Program will overwrite bootloader $regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 16 $swstack = 8 $framesize = 16 Dim Timer_main As Byte 'zegar zliczajacy 2s Dim Timer_signal As Byte 'zegar zliczajacy 10ms Dim Flag_1_overflow As Bit 'flaga...
Witam, napisałem program który ma za zadanie po wciśnięciu przycisku zapalić diodę aż do puszczenia przycisku. Gdy przycisk zostanie puszczony ma na 5s zapalić drugą diodę i następnie ją zgasić. Jeśli w czasie gdy dioda2 się jeszcze świeci zostanie wciśnięty przycisk ma zostać zgaszona dioda2 i zapalona dioda1. Teoretycznie wszystko napisałem jednak...
Witam serdecznie, jestem początkującym jeśli chodzi o programowanie w c na avr. Celem mojego zadania jest zaprojektowanie termostatu z użyciem czujnika temperatury dwóch diod sygnalizujacych, przycisku do programowania termostatu oraz przekaźnika jako elementu wykonawczego. Poniższy kod napisałem na atmega8 jednak można byłoby zastosować uboższego avr...
Hmm powiem tak - mogę pomyśleć nad udostępnieniem kodu (albo chociaż wsadu), ale najpierw chciałbym żeby przynajmniej zwróciły mi się koszty wdrożenia projektu :). Najmniejsze zamówienie w płytkarni było na 1dm^2, więc mam jeszcze trochę nadmiarowych płytek. Jeśli więc ktoś ma ochotę wspomóc młodego pasjonata, to może zakupić ode mnie Dręczyciela i...
https://obrazki.elektroda.pl/5333857100_... Początkiem tego roku kupiłem sobie nowy ostatni normalny samochód pozbawiony większości nowoczesnych wynalazków – Opel Corsa E. Niestety Unia Jewropejska zadbała o moje bezpieczeństwo i wyposażyła to auto w potrzebne w aucie miejskim jak bielizna profesjonalistce czujniki ciśnienia...
$regfile = "attiny13.dat" $crystal = 1200000 'częstotliwość taktowania .............. Czy kod jest poprawny? Mam pewne wątpliwości. Chciałbym aby przerwanie było wykonywane np. co 5 sekund a pętla główna była sprawdzana cały czas. Nie, ten kod nie ma szans na kompilację, a nawet jeśli udałoby ci się go skompilować to jego działanie byłoby...
Nie zgadzam się z Twoją opnią, która sprowadza się do tego, że skoro jest dostepny C, to zapomnijmy o asemblerze. Masz rację, jeśli dotyczy to projektów amatorskich (hobby) lub krótkoseryjnych, w których ważniejszy jest czas wykonania prototypów niż korzyści ekonomiczne. Dziwnym trafem znakomita wiekszosc projektow jest pisana w jezykach wysokiego...
Zamieszczony wcześniej kod jest sprawdzony - działa na atmega8 Również po pomyfikacjach portów działa na attiny2313 i zajmuje 65% flash, wiec jest jeszcze miejsce na jakieś "wodotryski". Używam Bascom demo w wersji chyba najnowszej: 1.11.8.7 build 001 MS windows XP SP-2 Program pod attiny2313 na płytce uruchomieniowej ZL11AVR (Płytka ZL2AVR pod megę...
Na szybkiego napisałem taki kod, ale na tiny2313 bo tiny13 nie posiadam. $regfile = "attiny2313.dat" $crystal = 4000000 Ddrd = &B1111000 : Portd = &B0111111 Ddrb = &B11111111 : Portb = &B11111111 Dim Temp_on As Byte , Temp_off As Byte , Temp_adr As Byte Dim Adres As Byte , Komenda As Byte , Odebrano As Bit Dim Licz As Byte , S1 As...
zacytuję za Darkiem ("Flagiuszem") : Rezystor Rfb służy do pomiaru i regulacji prądu diody LED w rozwiązaniu bezpośredniego sterowania diodą (bez używania drivera ograniczającego prąd - na schemacie oznaczonego jako DRV). Gdby bawiłem się tym softem od Darka nie było jeszcze XP-G które mają zazwyczaj fajnie niskie napięcie przewodzenia. Uzyskasz dość...
Się wgłębię, żeby nie było wątpliwości. Kod: CONFIG WATCHDOG = czas gdzie: czas czas w milisekundach po jakim układ WATCHDOG uaktywni sygnał reset procesora. Możliwe są wartości: 16 , 32, 64 , 128 , 256 , 512 , 1024 oraz 2048. Więc rzeczywiście mamy 2s. Jak teraz oszukamy procka i ustawimy wolniejszy kwarc to owszem, może i rzadziej się wybudzi, ale...
Witam Piszę na Attiny13 program, w którym mam zdefiniowaną strukturę struct { unsigned char Licznik:4; unsigned char Flaga1:1; unsigned char Flaga2:1; unsigned char Flaga3:1; unsigned char Flaga4:1; } Moja; Pytanie jak do tej struktury wpisać stałą ? np: Moja = 0x50; aby nie definiować Moja.Licznik = 0; Moja.Flaga1 = 0;....
Flaga to jest to samo co znacznik. Ech... masz i wchłaniaj wiedze :) [syntax=basic4gl]'----------------------... ' ' SylwekK ' 8.10.2011 ' moduł PWM V2 ' '---------------------------------------... $regfile "attiny13.dat" $crystal = 1200000 $hwstack = 16 $swstack =...
http://obrazki.elektroda.pl/6843336800_1... Witam serdecznie. Mam zaszczyt zaprezentować wam mojego autorstwa panel dotykowy. Urządzenie powstało z myślą o sterowaniu różnego rodzaju sterownikami. Od czego się zaczęło: Już jakiś czas temu zbudowałem sterownik pracujący w dość trudnych warunkach: wilgoć, azot, amoniak i pomimo uszczelnienia...
Jak kiedyś zlitowałem się nad SAB600 i postanowiłem go zastąpić czymś bardziej orginalnym to powstał taki twór. Twór o tyle ciekawy, że w asemblerze ale pod Bascomowym interfejsem. Program oprócz generowania dźwięków robi jeszcze parę innych rzeczy, ale chyba tyle to już się można zorientować w kodzie. [syntax=basic4gl] '***********************Tiny13_Gong1...
Rozpatrz opis działania polecenia SLEEP: "Rozkaz ten wprowadza procesor w jeden z trybów obniżonego poboru energii, określony przez nastawę specjalnego rejestru. Układ może wyjść ze stanu uśpienia tylko w skutek wystąpnienia przerwania lub zdarzenia zerowania. Jeśli do wybudzenia procesora wykorzystane mają być przerwania, należy pamiętać by wcześniej...
Mnie ktoś pomógł to teraz się tym podzielę Nadawanie: -----konfiguracja------- $baud = 2400 Config Serialin = Buffered , Size = 20 Config Serialout = Buffered , Size = 20 ---------jakiś tam program----- Print Temperatura ; Chr(13) ; 'Wyślij po RS wartość zmiennej temperatura Odbiór: $regfile = "m8def.dat" $crystal = 8000000 $baud =...
Znalazłem, na razie, dwa sposoby: Pierwszy, to używanie w przerwaniu wartości wpisywanej w rejestry Osccal lub Tcnt0 , oczywiście niewłaściwe, ale przydatne ;-) Drugi, to zerowanie w przerwaniu flagi komendą Cli , a potem powrót z przerwania nie komendą Reti , ale skok do poczatku programu gdzie ustawiam parametry przerwań i je odblokowuję. Nie rozumiem...
No ok, chyba zrozumiałem wasze przesłanie panowie :D, spróbuje coś sklecić na tej podstawie. Dzięki za zainteresowanie <Edit> Skróciłem procedurę przerwania do maksymalnego minimum ;p Napisałem wszystko od początku i zanim sprawdzę czy działa, proszę by ktoś, kto się zna na rzeczy (jam jest początkujący ;p) sprawdził czy to jest poprawne: http://obrazki.elektroda.pl/1723493900_1...
Witam, Ostatnio bawiłem się RC5 + przerwanie INT0 + Attiny13. Dekowanie RC5 zrealizowane nie używając timera, a jedynie "delaya" i INT0, uruchamiane stanem niskim. Dekodowanie i rozpoznanie kodu przyciska z pilota działa poprawnie. Następnie postanowiłem dodatkowo wprowadzić tryb power mode down. Wszytko fajnie działa tzn uC usypia się i wybudza, ale...
Witam Przyszedł czas wolny więc zabrałem się za zgłębienie nauki Bascoma, celem było nauczenie się Tablic. Jako przykładowe i zarazem przydatne mi urządzenie chciałem złożyć regulator fazy z podwójnym wyświetlaczem siedmiosegmentowym LED. Schemat jako taki na razie nie powstał, wszystko jest na płytce stykowej. Udało mi się "ogarnąć" wyświetlacz, lecz...
Temat sterowania napięciem sieciowym za pomocą triaka jest jednym z tych, które zapewne nigdy się nie skończą puki istnieć będzie sieć energetyczna oraz potrzeba włączania i regulacji napięcia odbiorników do niej podłączonych. Najbardziej znaną i najprostszą metodą regulacji mocy dostarczonej do odbiornika jest załączanie triaka sterującego w odpowiedniej...
flagi funkcji markery flagi własne flagi
przerywacz obwodu nazwa nadawcy taryfa energa elektryczny
philips 65pus6162 pralka zanussi filtr
Jak wyłączyć automatyczne zamykanie bramy HG600? Automatyczne podświetlenie klawiatury w laptopach Medion: jak włączyć?