Uruchomiłeś: TIMSK0 |= (1<<OCIE0A); przerwanie od porównania a obsługujesz: ISR(TIM0_OVF_vect) przerwanie od przepełnienia. A tak przy okazji: - zmienne zsyp1 i 2 to gdzieś zerujesz? Czy tylko je inkrementujesz aż się przekręcą? - zmienna "CZAS_NA_test" jest niepotrzebna. Równie dobrze mógłbyś w main sprawdzać czy zmienna i>=75 a w przerwaniu...
Witaj, To pytanie jest podobne do pytania, jak nastawić zwykłe radio na dwie różne stacje radiowe by słuchać ich jednocześnie? Odpowiedź zapewne znasz :) Co do Timera, także odpowiedź znasz chociażby dlatego, że znasz schemat timera i fakt, że aby go ustawić w różne tryby używa się tych samych bitów. Innymi słowy: czy PWM może działać bez timera? Tak,...
A timer to kto uruchomi ?
Czyli zwykły prosty miernik częstotliwości z jej porównaniem przy pewnej wartości - bez problemu się to na jednym timerze realizuje... Zobacz tu: [youtube]http://www.youtube.com/watch?v=... Złapałem tym nawet 40tys. obr/min :) Co prawda to przykład na attiny44, bo obsługa wyświetlacza i takie tam duperele zabierają jednak piny i pamięć...
Używanie delaya jest niemądre (marnujesz prąd). Zrób coś takiego (pisane z palca, więc może wymagać poprawek). [syntax=c]#include <avr/interrupt.h> #include <avr/sleep.h> unsigned long int timer=0; ISR(TIMER0_COMPA_vect) { timer++; } ISR(ISR_from_pin)//check which in doc { timer=0; } int main(){ config_timer(); config_sleep(); config_ports();...
mam pytanie dlaczego attiny13 timer nie lepszy był by attiny15 który ma dwa takowe z tego co wiem to jeden timer musi zajmować się generowaniem częstotliwość 36khz a drugi musi obliczać czas po jakim mają pojawić się kolejne zmiany stanu logicznego więc jak ma to zrobić jeden licznik w tiny13
A możesz napisać, co to za błędy. Prawdopodobnie dotyczą timera. Timer0 8515 i timer0 attiny13 to nie zupełnie to samo i stąd te błędy :cry: . Czasami też używam bascoma, ale w kwestii poleceń typu "config", to w ogóle mu nie wierzę i po prostu trzeba wziąć do ręki dokumentację procka i samemu odpowiednie rejestry poustawiać :D
Wg http://www.nongnu.org/avr-libc/user-manu... musisz zmienić nazwę wektora przerwań na TIM0_OVF_vect Porównaj sobie datasheet attiny13 z datasheetem atmegi8 żeby skonfigurować timery. Do skonfigurowania timera w attiny służą rejestry TCCR0A i TCCR0B, w atmedze8 jest tylko TCCR0 http://www.atmel.com/images/doc2535.pdf http://www.atmel.com/Images/Atmel-2486-8...
Prawie wszystko jest nie tak - oczekiwanie w przerwaniu, brak eliminacji drgań. To nie tak się robi - potrzebujesz przerwania timera zgłaszanego ze stałą częstotliwością, np. 100 Hz, i w nim robisz wszystko - sprawdzasz stan przycisku i odmierzasz czasy impulsów.
Ustaw może na początek jakiś preskaler dla tego timera ;)...
Nie ma takiego przerwania, ani pinu w ATTINY13. Możesz czytać timer w przerwaniu INT lub PCINT
Zobacz jak to robi Microchip. Potrzebny jest ADC, Timer i kawałek pola miedzi. http://ww1.microchip.com/downloads/en/Ap...
I wykorzystać Timer- który ATtiny13 ma.
Mój program jest oparty o program mirka tylko attiny13 ma jeden timer i dlatego używam delay. Arduino ide to nie rozwiązanie . Chcę wiedzieć dlaczego to tak źle działa.
#define F_CPU 1000000 Jak uzyskałeś częstotliwość 1MHz? ATTINY13 ma wewnętrzny RC=9.6MHz. Po podziale przez 8 daje 1.2MHz. Bez zewnętrznego sygnału albo grzebania w OSCCAL ciężko jest uzyskać 1MHz. Tak na marginesie to częstotliwość powinno się definiować w ustawieniach projektu. Dodatkowo delay w pętli głównej przerywanej przerwaniami nie będzie wiarygodny....
ATtiny13 - posiada timer i tryb CTC oraz przerwanie od INT0 oraz sześć portów I/O (wyczytałem z dokumentacji, osobiście nie miałem kontaktu). Mała poprawka rejestrów do obsługi przerwania (INT0 oraz ustawienia Timera) pod ATtiny 13 i powinno ruszyć. Jeżeli popełniłem błąd proszę mnie poprawić.
Taki kod od biedy napiszesz nawet z użyciem chatGPT. W skrócie: - PWM generujesz przy użyciu timera, wyjście z timera podajesz na driver LEDów (tą część kodu wygenerujesz np. na stronie Microchipa, na której jest klikalny generator kodu). - reakcja na przycisk - poszukaj na elektrodzie np. super debounce, ale to też dobrze generuje chatGPT. Kolejne...
Więc tak... Ustawiłem dobie i przerwania od zmiany stanu na wejściu i od INT0. To pierwsze działa bez problemu, to drugie nie. Ustawiłem wszystko tak jak głosi biblia...(Data od ATtiny13). To samo jest z Timerem. W trybie Normal działa, w trybie CTC... W symulatorze zaznaczyłem oczywiście, że chodzi o prcoek ATtiny13. Czy ktoś może mnie wytłumaczyć...
Mało dokładne, czasy będą się rozjeżdżać: 1. Na "Cyfrowy timer C005" 2. Na CD4541 Dokładne: 3. Po modyfikacji kodu, po ew. osunięciu wyświetlacza [url=https://www.elektroda.pl/rtvforum/v... 4. Samemu na ATtiny13 Wszystkie 4-ry da się zasilać z zasilacza beztransformatorowego 5. Chińskie moduły timerów z wyświetlaczami
Ale po co??? To nie działa od przerwania a od zdarzenia. Nie ma potrzeby deklaracji przerwania...robiw PS. Przynajmniej według dokumentacji nie ma takiej potrzeby. W przypadku ATtiny13 działało bez ISR timera...robiw
Jeśli nie znajdziesz jakiegoś timera to może użyj małego procka np Attiny13 lub coś podobnego. Napiszesz prosty program z obsługa i2C i będziesz miał timer jak marzenie.
Witam Popieram kolegę co do kondensatorów z własnego doświadczenia wiem co one potrafią Tylko jestem ciekaw kto i za jakie pieniądze dopuścił to do użytku , jako urządzenie pomiarowe (rozliczeniowe) Wracając do tematu polecam analizę przykładu timera attiny13 https://www.mcselec.com/index.php?option... PIOTR
Jeśli dalej używasz choćby jednej zmiennej typu Bit to nadal pomysł jest aktualny bo bitów zawsze jest osiem. Jeśli nie, to mozna wygospodarować jedną zmienną typu Byte, ale że Tiny13 to bardzo wymagający uC i mozesz już nie mieć więcej miejsca na Byte to możesz pojechac po bandzie i do przechowywania wartości wykorzystać jakiś nieużywany rejestr :D...
Wszystko wygląda na ok. Może spróbuj ustawić Timer na zwykłe PWM bo teraz masz FAST PWM, a do OCR wpisz 128 wtedy uzyszkasz prostokąta o wypełnieniu 50%, włącz wiekszy preskaler i wtedy sprawdź czy są wogóle jakieś efekty
no ok, wiem już że mogę kombinować z programowym pwm, lecz to sobie raczej odpuszczę. Powiedzcie mi w takim razie jaki scalak dobrać zamiast tiny13? Obowiązkowo musi to być dip8. Rozumiem, że warunkiem koniecznym są 2 timery. Attiny45 się nada? Czy może jest jakiś inny w dip8 z dwoma timerami?
Witam Czy do tego projektu naprawdę był konieczny ATtiny13 ? Osobiście zastosowałbym timer 555 cena układu kolosalnie by spadła. (stabilizator napięcia też nie byłby konieczny) Co do przekaźników czasowych, to widziałem bardzo ciekawą konstrukcję bazująca na ATmega168. Oto link. http://forum.ep.com.pl/viewtopic.php?f=2...
Po pierwsze nie: TCCR0B |= (1<<CS00) | (1<<CS01); a : TCCR0B =(TCCR0B&0xf8) | (1<<CS00) | (1<<CS01); Kolego zastanów się na drugi raz zanim udzielisz odpowiedzi bo niestety ale bzdury piszesz na maxa i na dodatek nikt tego nie zauważa. Nie znasz i nie umiesz się w C posługiwać operatorami dwuskładnikowymi ??? toż operacja:...
Timer można zrobić samemu, jak wyżej CD4541 (jako licznik godzin) + LMC555 (jako licznik czasu podlewania, 5min) lub wystarczy sam Attiny13 - pobór prądu jest znikomy. Aby nie konwertować napięć dla Attiny13 (bateria 9V) lepiej tu użyć powerbanka i mamy 5V, pompka też powinna być na 5V, w przypadku CD4541+LMC555, można zasilać z 5V...12V
Przykład masz dokładnie w tym linku co podałeś ;) Tyle że zamiast tranzystora NPN dajesz mosfeta i bez tego rezystora w bazie (bramce). Bramke podpinasz pod pin na którym generujesz PWM i tyle. Mosfetów masz na pęczki. Zresztą możesz nawet zostawić taki układ jak masz na schemacie w linku. Jak masz problem z dostaniem tego attiny to możesz użyć attiny13....
To i tak chyba się skończy obliczeniami możliwości sprzętu. Przy 9.6MHz wychodzi przy praskalerze=64 przerwanie od timera co 1.7 ms a skok timera co 6.7us. Silnik będzie napędzany przez PWM ok. 500Hz- będzie piszczał. Przy preskalerze=1 silnik pewnie wcale nie ruszy bo indukcyjność uzwojeń nie pozwoli na wystarczająco szybkie narastanie prądu. Przy...
zapoznaj sie z fusebitami. Czy ty chcesz dokladnie odmierzyc 500 milisekund czy okolo? Jak chcesz dokladnie otrzymac to kwarc zew. i timery. A masz zew. ram podlaczony? nie wiem jak chcesz jakas zmienna zdeklarowac poza pamiecia sram chyba ze chodzi ci o pamiec stala eeprom
No a jak myslisz? W przerwaniu od jakiegoś Timera.
1. To już na inny temat (dział ten sam, ale nowy wątek) 2. Ten temat był niejednokrotnie poruszany na forum 3. Trzeba zastosować timer
Właśnie chcę to dokładnie zrozumieć by nawet bez kalkulatora móc to wyliczyć :) choć on bardzo ułatwia i nie trzeba za bardzo wysilać szarych komórek :) Kalkulatory jak najbardziej się przydadzą i za nie wielkie BÓG ZAPŁAĆ :) Z pierwszego kalkulatora zauważyłem, że Timer0 i Timer2 są 8 bitowe natomiast Timer1 i Timer3 16 bitowe Attiny13 ma tylko jeden...
1. jaki język programowania? 2. ja bym to zrobił tak: a) Timer ustawiasz, żeby łatwo zliczał impulsy do odmierzenia czasu 2s. b) pierwsze naciśnięcie przycisku (po eliminacji drgań styków) wubudza timer c) każde kolejne naciśnięcie przycisku przed upływem 2s zwiększa zmienną, jeśli dojdzie do 2 to wtedy ją zerujesz, zatrzymujesz timer i włączasz tą...
Wszystko przeniesione do timer, ale sytuacja się powtarza. Jakiekolwiek zmiany w pętli głównej wpływają na działanie pwm i szybkości migania diod :/
W C jak najbardziej da się to zrobić - przynajmniej 80 średnio gęstych linii. Jak to zrobić? Programujesz timer na zgłaszanie przerwań ze stałą częstotliwością rzędu 50..100 Hz. W przerwaniu timera sprawdzasz stane wejść, odliczasz czasy na zmiennych i sterujesz stanem wyjścia. Podejrzewam, że całość zamknie się w max. 30 liniach kodu w C. Wcześniej...
Witam Potrzebuje program na mikrokontroler Attiny 13 który po wciśnięciu przycisku załączy przekaźnik na 7 godzin. Nie potrafie go sam napisać a jest mi bardzo potrzebny. Pozdrawiam Sprawdź ten program, nie sprawdzałem nie mam Attiny13. [syntax=basic4gl]'Timer 7godzin $regfile = "attiny13.dat" $crystal = 128000 'ustawić w Fuse Bitach 'wyłączyć bit...
Hmm, obalę Twoje mity dot. przerwań: 1.(częściowo), 2., 3. w tym przypadku PWM jest sprzętowy. Oznacza to nie mniej nie więcej niż to, że timer odpowiedzialny za generowanie PWM nie wygeneruje ŻADNEGO dodatkowego przerwania. 4. Dlatego stosuje się tryb phase correct pwm, ale zapewniam Cię, że w przypadku sterowania jasnością żarówki to w którym momencie...
Witam ! czyli musiał bym go też zaprogramować? jeśli tak w jakim programie i języku bym musiał bo trzeba by było powoli ogarniać temat. i jakie urządzenie do programowania? Jeśli w Twój komputer ma sprawny port LPT to wykonanie programatora zajmie parę minut i będzie tanie, oto schemat: http://obrazki.elektroda.pl/6221620900_1... Na...
Timer 555 ma też wersję CMOS - niskoprądową ale raczej ci się nie przyda, to nie jest element do wyłączania o określonych godzinach. Jak urządzenie ma działać długo bez ingerencji i się nie rozjeżdżać w czasie, to musi mieć precyzyjny zegar na pokładzie, zegar ten też musi być jakoś ustawiany po włożeniu baterii, takie założenia wymagają użycia mikrokontrolera...
Witaj. Nie ma znaczenia w jakim języku powinien być program. Istotny jest fakt, na co na co ma zareagować. Kliknięcie to pojęcie względne. Nikt z Nas nie ma pojęcia, co ono oznacza. Może na przykład być zdarzeniem na klask dłoni, klikniecie lewym przyciskiem myszki PC itp. Prosimy o więcej szczegółów. Attiny13 posiada przerwania zewnętrzne i oczywiście...
Użycie timera0 dla attiny13 - z przykładów arduino dla attiny13 czyli ach te straszne przerwania. [syntax=arduino] 9.6MHz / 1024 = 9370 Hz We divide the 9.6 MHz clock by 1024 1/9370 = 0.0001067s Period time 256 * 0.0001067 = 0.027315 0.027315 * 37 = 1.01065 ≈ 1s X = 1.01065 / 0.027315 where X is approximately 37 ****************************************...
Ok coś tam rozumiem ale mam jeszcze taki problem albo prośbę bo nie wiem jak ustawić rejestry w attiny13 Tccr0a Tccr0b Admux Adcsra Adcsrb jakbym chciał pwm 8 bitowy (attiny13) z max częstotliwością tj chyba FAST PWM na pwm0a i pwm0b czyli 9600000/256=37500Hz przy działającym ADC. Reszta ustawień zostaje tak jak jest. To już będzie wszystko. Zacznij...
Jeżeli chcesz wykorzystać Watchdog jako rodzaj timera, to w rejestrze WDTCR powinno się ustawić bit WDTIE. Ponadto za pomocą bitów WDP3...WDP0 należy ustawić prescaler Watchdog'a. Z tego wynika co jaki czas będzie przerwanie. Jeżeli np. potrzeba 8 s, to ustawić należy WDP3 i WDP0, czyli powinno być: https://obrazki.elektroda.pl/1370064900_...
tro zamieszczę, jestem poza domem. Ale generalnie nie ma tam nic takiego: konfiguracja timera TB0 według zamieszczonego kodu (łącznie z przerwaniem) Jeśli to nie jest jakiś babol w stylu <żart>"zapomniałem podłączyć zasilanie", albo "w ustawieniach kompilatora miałem ATTINY13"</żart>, to na pewno tam coś jest - coś na pierwszy rzut oka...
Więc funkcja debounce i timera do odmierzania czasu wykorzystaj.
Serwo steruje się sygnałem 50Hz. Czyli 20ms ma okres. W czasie tego okresu ma być stan wysoki zależnie od położenia od 1 do 2ms. W związku z tym ogłaszam, co następuje: 1. Twoja eliminacja drań styków niszczy całą czasówkę. 2. Żeby serwo trzymało dane położenie, musi dostawać sygnał o odpowiednim wypełnieniu cały czas. Podkreślam cały czas.
Zacznij od nowa. żadnych delay(). Po co od razu na głębokie wody. Niech zrobi próbę na delay, jak bedzie ok to zrobi na przerwaniach od timera.
Nie wiem o co chodzi, u mnie taki kod jest OK:[syntax=C]#include<avr/io.h> #include<avr/interrupt.h> int main(void){ DDRB |=((1<<PB0)|(1<<PB1)|(1<&... wyjścia PORTB &=~((1<<PB0)|(1<<PB1)|(1... // //USTAWIENIE TIMERA DLA ATTINY13!!!!!!!!!!!!!!!! TCCR0A |=(1<<WGM01);//tryb CTC....
Jakbyś przeczytał dokumentację od procesora to byś wiedział jak wpływa ustawienie bitów w rejestrze na pracę timera 0. Miłej lektury.
Jeśli chodzi o wymagania co do attiny13 to je spełnia jeden timer wystarczy pinów też ma wystarczająco jedyne ograniczenie to ilość pamięci programu ma tylko 1 KB, a powyższy kod zajmuje ok 2 KB. Jestem początkującym dlatego z pewnością są w kodzie rozkazy które można zapisać krócej zwięźlej i dlatego pytam czy można go tak zmodyfikować żeby o połowę...
Spacja w linii polecenia jest traktowana jako separator. Kompilator nie może znaleźć pliku o nazwie "with" - masz to jawnym tekstem. Nie używaj nazw plików ze spacjami.
Nie wykonasz tego na attiny13, nawet nie wiem czy to cos posiada timer. Wez attiny2313 ma sprzetowe i2c, kod sie w spokoju zmiesci do flasha i zew. eeprom i wszystko gra.
Odkomentuj, czyli zdejmij ten pierwszy apostrof z tej linii : 'Set Tccr0b.0 (W IDE Bascom linia 57) To włącza taktowanie Timera0 z preskalerem 1 czyli z prędkością CPU. Bez tego Timer po prostu stoi w miejscu. Nie wiem tylko czy Timer pozwoli wyłaczyć te LED`y tym poleceniem po "Stop Timer0" bo to tylko zdejmuje taktowanie a konfiguracja do PWM raczej...
No i doczekała się lampka wersji deluxe :D Przyszły świeże płytki z chin i zrobiłem teraz dodatkowo dimer i timer na attiny13, a zamiast modułu dotykowego jest sam scalaczek ttp223. Przy włączaniu lampki w nocy nie ma teraz uciążliwego wypalania oczu nadmiarem światła, a jeśli nie chcę pamiętać o wyłączeniu to po dłuższym (1s) przytrzymaniu czujnika...
Ale Kolega lubi sobie życie komplikować... W programie głównym programujemy dowolny timer na zgłaszanie przerwań z częstotliwością coś pomiędzy 30 i 300 Hz, a następnie usypiamy procesor w pustej pętli. Definiujemy stałą określającą czas włączenia w okresach timera: [syntax=c]#define CZAS_WLACZENIA xxxxx <- wpisz liczbę okresów timera[/syntax] przerwanie...
No to jest to czego szukałem. Tylko teraz pytanie: Dlaczego zawartość rejestru R0 to zawiera,a nie można odczytać z MCUCSR jak jest opisane w DSie?? edit Aaa już wiem gdzie robiłem błąd. Można odczytać WDRF moim sposobem tylko przed Config Watchdog, bo ta instrukcja czyści rejestr MCU(C)SR. Wszystko pięknie jest wyjaśnione w Helpie od wersji 2.0.1.0...
1. Sformatuj kod - użyj tagów "Syntax C" 2. Wszędzie, gdzie masz zapisy typu zmienna = zmienna += 1 zapisz zamiast tego zmienna ++, to samo ze: zmienna += 1 zastąp zmienna ++, zmienna -= 1 zastąp przez zmienna -- 2. Na pętlach nie da się sensownie regulować jasności, bo czas wykonania pętli zmienia się w zależności od warunków. Nie wiem, jak ten program...
Chodzi o użycie timera w procesorze. Jak dasz wolny kwarc, to możesz wykorzystać zwykły timer. A najlepiej zastosuj Attiny13 taktowany wewnętrznym oscylatorem 128kHz (nie jest to dokładny zegar, ale do tego zastosowania wystarczy) i z każdym przerwaniem przepełnienia timera zmniejszać zawartość zespołu rejestrów, aż w rejestrach będą same zera. Jeżeli...
Zmienna pomocnicza zmodyfikowana w programie obsługi przerwania powinna być widoczna w całym programie. Nie bawiłem się nigdy Tiny 13, więc moje spostrzeżenia mogą być mylne lecz uważam, że kolega zapomniał o istnieniu przerwań zewnętrznych INT. Gdybym pisał ten program to podałbym impulsy wejściowe na wejście INT uC. Przerwanie zenętrzne ustawiłbym...
Zależy od potrzebnej dokładności... przy przerwaniach komenda wait będzie źle działać. Najlepiej by było dać to na dwóch timerach: jeden odmierza sekundy, drugi zlicza impulsy.
OK później zaprogramuje ale wyszło to tak: $regfile = "attiny13.dat" Config Portb.4 = Output $hwstack = 32 $swstack = 16 $framesize = 8 Dim A As Byte Config Timer0 = Timer , Prescaler = 64 On Timer0 Przerwanie Enable Interrupts Enable Timer0 Start Timer0 Do Loop end Przerwanie: Timer0 = 106 Toggle Portb.4 Return
Będą przekłamania gdy rzeczywista częstotliwość będzie inna od tej skompilowanej. Najlepiej jakbyś poszukał jakiegoś kursu na AVRStudio, skoro z niego korzystasz, bo ja akurat na jego temat nic nie wiem. Może tam być gdzieś opcja ustawiania częstotliwości , np w Eclipse ustawia się ją w pluginie, a tam nie wiem. Zdeklarowana częstotliwość musi być taka...
A które styki to styki przekaźnika? (te pomocnicze) Układ na pewno miał by szansę działać. Ja jednak poszedł bym w inne rozwiązanie. Zastosował jakiś układ scalony który ma to wszystko w sobie (bramki, timer i przerzutnik). Byś może jakiś układ z serii 4xxx spełnia takie założenie. Jeżeli nie to można to zrobić z poczwórnego komparatora (np. LM339)....
GETRC5 używa licznika TIMER0. Albo TIMER2 jeśli go układ posiada i tak go skonfigurujesz w CONFIG RC5. Aby ustrzec się dziwnych błędów (z adresami linii poza programem) nie zapomnij o wpisaniu nazwy pinu w CONFIG RC5. Sam kod bazuje na dokumentach ATMELa: http://www.atmel.com/dyn/resources/prod_... I tam można całą procedurę prześledzić....
http://obrazki.elektroda.pl/7214276300_1... Pilot oparty na projekcie http://www.bigmike.it/ircontrol/ jednak zbudowany na mniejszym attiny13, myślę że można by zastosować dostępny na Allegro attiny4. Zasada działania jest dość prosta. Po uruchomieniu podzespołów (timera i przerwań) attiny przechodzi w tryb power-down, w którym oczekuje...
Jakoś nie bardzo wierzę, że programowy UART bez użycia przerwania timer ama prawo działać - to po pierwsze. Po drugie - częstotliwość wewnętrznego zegara ATTiny13 jest na tyle niedokładna, że komunikacja szeregowa nie musi działać Kiedyś robiłem coś takiego, i średnio jeden uC na 4 nie transmitował z poprawną szybkością. Mając to zrobione na przerwaniach...
Łap. W Tiny13 ma 460 bajtów i nie zajmuje nawet połowy. Zostawiłem Tobie tam jeszcze kilka bajtów RAM a podstawowe funkcje kodujące i repeat masz więc możesz się pokusić o więcej przycisków, albo nawet klawiaturę na ADC ;) To jest takie najkrótsze demo z jedną komendą ON/OFF dla telewizora. [syntax=vbnet]'*************************...
Nie musisz zatrzymywać i uruchamiać licznika za każdym razem, może on ciągle chodzić, wystarczy że go będziesz zerował. A tak naprawdę to jeśli chcesz potem generować przebieg dla serwa za pomocą tego samego timera, to nawet zerować go nie możesz.... tylko zapamiętywać jego wartość. Wygodniej się to robi jednak na 16-bitowym timerze, który ma jeszcze...
Przestańcie pisać o timerach i PWM. Przecież autor nie podaje że ich używa w programie. Ja bym stawiał na stos programowy. Warto by go obadać w Bascomie dla ATtiny13
Wykonałem już cześć hardwarową tzn płytke z obsadzonymi mosfetami typu N(x4) driverami do nichi przetwornicą opartą na tranzystorze cewce i diodzie. Przetwornica jest potrzebna do sterowania górnymi mosfetami typu N, bo to jest regulator dwu kierunkowy. Sterować ma tym procesor ATTINY13 i teraz tak. Wewnetrzny timer będzie potrzeby do sterowania PWM...
Nie rozumiem co się tutaj dzieje. Zmienna Reference nie ma żadnej przypisanej wartości początkowej. Jak np uzyskać 50% świecenia diody? Nie chodzi mi o stopniowe przyciemnianie, po prostu chciałbym mieć możliwość w dowolnym miejscu programu ustalenia jakie napięcie ma być na danym wyjściu. Nie potrzeba żadnej wartości początkowej, jest to zmienna typu...
Należy również dodać bibliotek util/delay.h aby wygenerować opóźnienia i wpisać częstotliwość zegara z jaki będzie pracował układ. A nie lepiej użyć tu timera, a nie 'blokowac' cały uC na np. te 4min?
Ustawiam preskaler na 8 i mam częstotliwość prawie 300 Hz a potrzebuje 2 razy tyle jak to zrobić, bo przecież nie mogę ustawić preskalera na 4? Czyli przynajmniej jedno można stwierdzic, że taktujesz processor 1,2 MHz; a nie jak twierdziłeś i zakładałeś wczwśniej; 9600 000(!)_ Twoja konfiguracja timera0: Phase Correct PWM i otrzymany wynik częstotliwości...
Zastosuj przerwanie od Timer'a. ps. Nie ma czegoś takiego jak ATTiny16. Chodzi Ci o 15 czy 26 ? Tak na szybko (sprawdź): $regfile = "attiny13.dat" $crystal = 1000000 'częstotliwość taktowania $hwstack = 20 $swstack = 10 $framesize = 10 Const Div_t0 = 125 '1 ms Config Timer0 = Timer , Prescale = 8 On Timer0 Int_t0 Enable Timer0 Enable Interrupts...
9600000Hz/70000Hz=137 takty 9600000Hz/150000Hz=64 takty Z takimi rozdzielczościami się tam musisz liczyć. Dla 37kHz i innych konfig uzyskasz klikając CTRL+SPACE. Bascom sam podpowiada jakie masz możliwe ustawienia. Nie pamiętam tylko czy jest to FastPWM czy PhaseCorrect który jeszcze spowolni sprawę o połowę. W Tiny85 masz Timer który może być taktowany...
Kiedyś zrobiłem projekt odtwarzacza dzwonków z nokii na tiny26. Użyłem timera i wyjścia PWM. Zmiana częstoliwości następowała przez przekonfigurowanie timera odpowiedzialnego za PWM. Trzeba było tylko zrobić mechanizm anty glitch żeby nie było stuków w głośniczku prze zmianie częstotliwości.
A nie myślałeś, żeby zaufać precyzji timerów? ADC również mógłbyś podpiać pod timer ( Bit 5 – ADATE: ADC Auto Trigger Enable When this bit is written to one, Auto Triggering of the ADC isenabled. The ADC will start a conversion on a positive edge of the selected trigger signal. The trigger source is selected by setting the ADC Trigger Select bits,...
He he he, racja :D I drugie pytanie: Czy normalne jest to, jeśli na obu rejestrach wpisze wartość 0x00 to wyjścia PWM na których są diody LED będą lekko świeciły??? The extreme values for the OCR0A Register represents special cases when enerating a PWM waveform output in the fast PWM mode. If the OCR0A is set equal to BOTTOM, the output will be a narrow...
Mam attiny13 i żałuję, że kupiłem to badziewie. Mało miejsca na kod to nic, jest tylko 1 timer 8-bit, nie ma wejścia na rezonator. Ani to czasu odmierzyć, ani wysłać kodu rc5 zabardzo nie można. Ogólnie bieda, nie polecam.
Kolego, zacznij pisać programy poprawnie, bo na głupie odczytanie przycisku zużywasz pełną moc procesora, o poborze prądu nie wspominając. Wykorzystaj Timery, przerwania zewnętrzne i usypianie procesora, i pochwal się jak program działa. Wszyscy skorzystają, Ty najbardziej.
To przyjrzyj się modułowi timera w tym MCU i zastanó się jak uzyskać owe 20 MHz. Podpowiem ci, że programowo będzie jeszcze gorzej.
Moim skromnym zdaniem 3mA to bardzo dużo w czasie odliczania. Należało by wykorzystać kwarc zegarkowy i timer watchdoga. Led jest również strasznie nie efektywnym rozwiązaniem w zastosowaniach bateryjnych jeśli nie ma przymusu to wskaźnik lcd bez podwietlenia...
Jeśli wyświetlacz nie jest bardzo potrzebny, a dokładność wystarczyła by z podziałki potencjometru to w BASCOM ten program zajmie kilka linijek i zmieści się w ATTINY13. Daro_Elektronik już napisał co będzie potrzebne ale w najprostszej wersji wystarczy tylko jeden timer, adc no i podstawowe instrukcje programowania.
No i to działa, tylko na odwrót (OCR0B = 255 oznacza całkowicie wygaszony LED). W zasadzie jest to poprawne działanie przy takim podłączeniu diody. To jest poprawne, czy nie jest - zdecyduj się :) Odpowiadam: Nie jest poprawne. 1. w nocie katalogowej Attiny13 tryb PWM ustawia się rejestrami COM00 i COM01, tutaj mam tylko COM0B1 - to zapis zapożyczony...
Ale to będzie kręcić non stop. masz procek to mierz czas albo ilosć krorów nim. Masz for to jak chcesz zakręcic iles razy to wykonaj swoją funkcje x razy i zakońc Jak chcesz mierzyć czas to zrób przerwanie timera tam włóż jakis licznik i jak ci dojdzie do odpowiedniej wartości to przestan krecić.
Dla taktowania 8MHz, ale możliwe że trzeba zmodyfikować nazwy Pwm i Compare [syntax=basic4gl]Config Pinb.0 = Output Pwm0a = 70 Config Timer0 = Timer , Prescale = 1 , Compare0A = Toggle , Clear Timer = 1 Do Loop End[/syntax] a na rejestrach timera [syntax=basic4gl]DDRB = 0B00000001 'DDRB.0 = 1 (wyjście) OCR0A = 70 TCCR0A = 0B01000010 'COM0A1 COM0A0 =...
To co masz w komentarzu w tej linii to nieprawda: [syntax=c]TCCR0B |= (1 << CS01); // Start timer at Fcpu/64[/syntax] sprawdź w nocie jaki w rzeczywistości masz prescaler. Inna sprawa że przy takim dzielniku przerwanie powinno zgłaszać się częściej a nie rzadziej. Proponuje ci na spokojnie jeszcze raz wszystko sprawdzić.
Dlaczego nie Timer ? Obsługa przerwania TIMER0_OVR w niczym nie przeszkadza w działaniu PWM, a mamy w ten sposób jakąś podstawę czasu, który można sobie odliczać w tym przerwaniu. Dokładność co do 3 miejsc po przecinku nie jest taka istotna przy dekodowaniu RC5... Co do kodu - to nie ma prawa tak działać, obsługa przerwania powinna być jak najkrótsza,...
Zasada liniowego sterowania fazowego jest taka: 1. Przejście przez zero generuje przerwanie zewnętrzne INT (opadające zbocze), w którym: a) wyłączasz bramkę optotriaka b) przeładowujesz TIMER wartością, którą odczytujesz z tablicy w zależności od aktualnego poziomu mocy. TIMER ten będzie odliczał opóźnienie włączenia optotriaka c) uruchamiasz TIMER...
Niekoniecznie musi to byc watchdog lecz wystarczy uzyc przerwani od timera i w funkcji przerwania będzie wybudzenie procesora. A taki wybudzenie można zastosować np do pojedynczego pomiary np napięcia i przekazania na uart i znowu uśpienia.
Użyj kwarca zegarkowego do napędzania i bateryjek dwóch albo może nawet jednej:) Sprawdż jak to będzie działać, jak rozumiem to ma tylko co kilka godzin coś zrobić... usypiasz na sekunde budzi go timer, sprawdzasz czas, wszystko na kwarcu 32768Hz, i przerwaniach na zasilaniu około 2V itd... powinno długo działać:)
mam już wizję całego programu, pojawił się niespodziewany problem którego od kilku godzin nie mogę przeskoczyć... otóż wg wyliczeń wyszło mi, ze aby w PWMie uzyskać 36kHz to należy dołączyc zewnętrzny kwarc o czestotliwości 9,216MHz (preskaler=1). W związku z kwarcem zmieniłem procka na ATtiny 2313, kwarc podpiąłem pod XTAL1 i XTAL2 i do masy przez...
https://obrazki.elektroda.pl/7872720600_... Witam, Święta tuż, tuż, więc temat na czasie. Może ktoś zdąży wykorzystać zawarte tu informacje, a zapewniam, że będzie to gratka dla wielu zwłaszcza początkujących programistów! ;-) Zadziwiająco mało projektów jest dostępnych na rodzimych forach, jeśli chodzi o ten rodzaj multipleksowania....
Flaga to zmienna bitowa. Ma ona za zadanie zasygnalizowanie jakiegoś zdarzenia. W Twoim przypadku chodzi o zasygnalizowanie wystąpienia przerwania. Wystarczy np. coś takiego: Up: Set flaga Return Oczywiście zmienna bitowa flaga musi być wcześniej zadeklarowana: Dim flaga as bit W pętli głównej sprawdzasz czy flaga jest ustawiona: If flaga = 1 then...
Jak pisze Mariusz wyżej, sprawdzałem. Wpisanie w watchdoga każdej innej liczby niż 2048 czyli 2 sekundy nie daje żadnego rezultatu. Watchdog timer, podobnie jak inne timery posiada prescaler, który konfiguruje się edytując bity WDP3:0 w WDTCR – Watchdog Timer Control Register, co pozwoli ustawic max 'time out' na 8sec. dla Attiny13. Inne m-processory...
Witam, nie mogę sobie proradzić z obsługą timer0 w przerwaniu. Zamiast wł/wył port po początkowym opóźnieniu co 0,5s ustawia się w stan wysoki i tak sobie świeci w nieskończoność. Co jest nie tak? Kod poniżej: $prog &HFF , &H73 , &HFF , &H00 $regfile = "ATtiny13.DAT" $crystal = 128000 Wyj Alias Pinb.1 'wyjście Config Wyj = Output 'ustawienie...
Atmega8 ma 3 kanały pwm, z czego 2 z Timer1 a 1 z timer2. Jest to trochę niewygodne. Czasami lepiej wziąć attiny2313 który ma 4 pwm, też rozdzielone na 2 timery. [url=www.elektroda.pl/rtvforum/topic2660... masz moją prymitywną konstrukcję na attiny13 z pwm programowym na 4 kanały, bo użyłem diody RGB i dodatkowo W.
Sprawdziłem to dla sportu bo taki prosty kodzik od czasu do czasu to jak zjedzenie cukierka :D i to nawet działa. Oświetlone słońcem czy tam nawet żarówką LED`ową się nie wzbudza a przy zbliżeniu i owszem. Tiny85 ma juz wbudowany wzmacniacz dla ADC i tam mozna więcej nawet zadzaiałać, ale Tiny13 nie ma więc dla czułości użyłem wewnętrznego napięcia...
timer attiny13 attiny13 bascom timer bascom timer attiny13
zawias klawisza radio fabryczny toyota corolla wentylatora mercedesa
automatyczne otwieranie bagaznika integra zmierzch roleta
Simson SR50 – test i diagnostyka układu ELBA: ładowanie, kierunkowskazy, typowe usterki LED4202 CV9292H-A39 brak 12V VCC_PANEL i BL_ON – diagnostyka zasilania