[syntax=c]ISR(TIMER0_COMPA_vect){}[/synt...
a zmieniłes Fuse Bity?? Bo Attiny2313 pracuje standardowo z zegarem chyba 1MHz.
$regfile "attiny2313.dat" $crystal = 1000000 Config Portb.4 = Output Dim I As Byte Config Timer0 = Timer , Prescale = 1024 On Timer0 Przerwanie 'Start Timer0' nie potrzebne Enable Timer0' zezwolenie na przerwanie timera Enable Interrupts Do Loop Przerwanie: Incr I If I > 10 Then Toggle Portb.4 I = 0 End If Return
No niestety chodzi za mną ten asembler im szybsze układy chce robić to tym bardziej chodzi :) , ale w życiu bym się nie spodziewał że bascom tak zwalnia. Jesli o chodzi o hierarchie szybkosći to czy wyglada ona tak - ASM -C -BAscom , czy jednak dobrze skompilowane C jest równe ASM ?
Witam Przyznam szczerze, że właściwie nie miałem problemów z timerami w Bascomie (większych) jednak w zamieszczonym programie nie podoba mi się sposób deklaracji zmiennych. Dlaczego tego nie porozbijać na osobne linijki ? W dodatku pomieszane typy zmiennych... -- pozdrawiam
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ł...
np. Nie da się. TImer0 może zliczać tylko z pinu PD4. I to z PinD.4 a nie PortD.4 ;) Można i z PinD.0, ale nawet przerwania żadnego do tego nie ma więc trzeba by programowo. A nawet jak przerwanie by było (mowa o przerwaniach INTx) to Timer tego nie zliczy. Trzeba by programowo zwiększać zawartość licznika Timera0, ale po cholerę. Jeżeli to ma być...
Dawno Bascoma nie używałem ale to będzie coś takiego: On int0 czas 'przerwanie zewnetrze (wejście impulsów) do czestotliwosc=1/czas 'obliczenie czestotliwosci z czasu pomiedzy impulasmi loop czas: stop timer0 'zatrzymaj timer czas=timer0 'odczyt z timera timer0=0 'wyzerowanie timera start timer0 'ponowne uruchomienie timera return Oczywiście...
Jakiś pomysł? Włącz przerwania (sei) :)
Musisz sam wygenerować przebieg zegarowy - jeśli Twój Tiny jest Masterem. Po prostu załaduj rejestr danych i w pętli 16 razy ustaw bit USITC w stan 1. To wygeneruje przebieg potrzebny do przesłania 8 bitów. Możesz też skorzystać z przerwań jakie generuje Timer0, ale to wymaga ustawienia innego trybu za pomocą USICS1..0.
Lecz zrobiłem sobie testy: Że na wyświetlaczu wyświetlam wartość B, i jak się okazało, jeśli zamienię Config Timer0 = Timer , Prescale = 1 na Config Timer0 = Timer , Prescale = 8 to wartość B zmienia się szybciej! Dlaczego tak się dzieje? Może dlatego że jest jest prescale =1 to przerwanie jest wykonywane co 32us czyli w czasie tego waitams 20 trafia...
Masz błędny kod. Jak chcesz by program działał jak trzeba to musisz wiedzieć co robi każda linijka. Włączasz przerwanie od przepełnienia timera0, a nie maż funkcji do jego obsługi. Deklarujesz funkcję do obsługi przerwania zewnętrznego, a nie masz funkcji obsługi i nie zezwalasz na to przerwanie. Na moje oko to po uruchomieniu timera procesor się zresetuje...
Witam. W przerwaniu wpisałeś : Timer1 = 131 do zliczenia zostało 65536 - 131 = 65405 Przy wpisaniu do Timer0 tej samej wartości do zliczenia pozostaje : 256 - 131 = 125 impulsów. Myślę, że dobrze zrozumiałem Twój post.
Chciałem zrobić multipleksowanie, w książce "Mikrokontrolery AVR, Język C, Podstawy programowania" przeczytałem że do tego używa się trybu CTC i przerwania "TIMER0_COMP_vect".
Tutaj mam tekst z Helpa Bascoma W czasie działania funkcji używany jest licznik TIMER0 i związane z nim przerwanie. Licznik ten jest służy do generacji wymaganych opóźnień podczas próbkowania sygnału. TIMER0 może być dalej używany przez program, lecz należy się liczyć z wynikłymi opóźnieniami, gdy wykonywana będzie funkcja GETRC5(). Jest tylko...
Czekam na sugestie z góry dziękuje za pomoc;) Robisz totalnie złe założenie niestety. Timer sprzętowy działa bardzo dobrze i precyzyjnie. Nie może on przepełniać się w trybie normal wcześniej niż po 256 tyknięciach zegara ;) ... zatem przez złe założenia - jeszcze wyciągasz złe wnioski i nie w tym miejscu co trzeba szukasz błędu. A błąd polega na tym,...
Witam Jak wielu spotkałem się z problemem problemem kłopotliwej obsługi pilota z RC5. Po poszperaniu w necie wpadłem na http://www.elektroda.pl/rtvforum/topic20... ten temat. Jak się okazało wszystko na tym programie pracowało, ale nie zawsze. Kłopotem było napisanie programu "pod pilota". Oczywiście pochwała dla Sabotaz'a który problem "ruszył"...
Witaj! Raczej najpierw musisz sie nauczyć C a później zabierać za przerwania. Taka moja rada bo raczej będzie Ci trudno. Nie za bardzo kumam co robi definicja procedury obsługi przerwania w pętli
Spróbuj tego: $regfile "attiny2313.dat" $crystal = 4000000 Config Portd = &B11111100 Portd = &B00000011 Config Lcd = 16 * 2 Config Lcdpin = Pin , E = Portb.1 , Rs = Portb.2 , Db7 = Portb.7 , Db6 = Portb.6 , Db5 = Portb.5 , Db4 = Portb.4 Config Timer0 = Timer , Prescale = 8 Enable Interrupts Enable Timer0 On Timer0 Przerwanie Dim Czas_cyklu...
(at)marco47 Nie rozumiem twojego pytania. (at)janbernat Timer1 służy do odmierzania 1 sek. Po tym czasie następuje przerwanie, w którym liczba zliczonych impulsów (przez timer0) przepisywana jest do zmiennej wynik.
Zamieszczam program miernika według wskazówek emarcusa. Jest to pierwsza w moim życiu próba napisania czegoś poważniejszego niż zapalanie i gaszenie LED-ów. Program nie kompiluje się, co mnie nie dziwi, są pewnie w nim podstawowe błędy... Ale od czegoś trzeba zacząć. Proszę o poprawienie, podpowiedzi. A tak w ogóle to zaczyna mnie wciągać :) 15,625...
Witam. [syntax=basic4gl]Ustaw F_CPU na 8000000 Hz 'Declarujemy zmienną np.Licz Dim Licz As Byte Config timer0 = Timer , Prescale = 256 Enable Interrupts Load Timer0 , 250 '--przerwanie będzie co 8ms On Timer0 Przerwanie 'W przerwaniu: Przerwanie: Load Timer0 , 250 Incr Licz If licz = 125 Then Licz = 0 Toggle Portb.6 '--- zmiana stanu co 1sek End If...
No to już dobrze :) Dodaj te linie definiujące stos z wcześniejszego posta. Może to one są winne. Którą masz wersję bascoma ? EDIT: Jak byś chciał go z 12Mhz pędzić to zmień linie: [syntax=basic4gl]$regfile = "attiny2313.dat" $crystal = 12000000 Config Timer0 = Timer , Prescale = 64 Const Przerwanie = 219 '12MHz/64/37=5068Hz /32 poziomy PWM = ok 158Hz(PWM)...
[syntax=basic4gl] $crystal = 4000000 Config Portb = &B11111111 Portb = &B11111111 Config Portd = &B1111100 Portd = &B1111111 Config Timer0 = Timer , Prescale = 64 Enable Timer0 Enable Interrupts On Timer0 Co1ms Dim Liczba As Single Dim Ktorywysw As Bit Dim Lol As Byte Dim Jednostki As Byte Dim Dziesiatki As Byte Dim Pomoc As Bit Dim Aaa As Word Dim...
Dlaczego nie używasz sprzętowego PWM? Co do błysków, to zrób podwójne buforowanie nastaw wirtualnego pwm. W przerwaniu przepisuj rejestr buforowy do właściwego.
To wywal przed while lub do init() , nie ma sensu aby procesor to ustawiał milion razy na sekundę : Natomiast kod w przerwaniu zmień na : PORTB = (0<<PB1); jest równoważny PORTB = 0; , więc zeruje również PB0 . Operatory logiczne proszę się zaprzyjaźnić... ;) Ostatecznie proponuję takie kodzio:[syntax=C]#include <avr/io.h> #include <avr/interrupt.h>...
Zrobić obsługę wyświetlaczy w przerwaniu?:> PS coś krótki ten byte od config portuD:]
Funkcja Getrc5 działa z przerwaniem INT0 lub INT2. Z INT1 nie można jej skonfigurować. Ustaw w programie Timer0 i podłącz odbiornik na Pind.2 (dla ATtiny2313).
Witam ponownie ! Kiedyś gdzieś czytałem że projekt z Bascoma 8051 można przenieść do Bascoma AVR i wjakiś sposób automatyczny przerobić listing pod AVR (ATtiny2313) Pozdrawiam. Stefan Ps. Jeśli będziesz miał problem a nie "pali się" to popróbuję ten listing przerobić na ATtiny2313. Już udało mi się przerobić na AVR (ATtiny2313) 'przerobiłem, kompiluje...
Timer rusza tylko po odblokowaniu przerwania. Po dodaniu instrukci start timer0 wogole nic sie niedzieje.(dioda nie miga) Spróbuje z timer1.
Mam nadzieję że to nie pójdzie do kosza: $crystal = 4000000 '4MHz $regfile = "attiny2313.dat" Config 1wire = Portd.5 Config Timer0 = Timer , Prescale = 64 On Timer0 Przerwanie0 Enable Interrupts Enable Timer0 Start Timer0 Porta = 0 Portb = 0 Portd = 0 Config Porta = 0 Config Portb = 0 Config Portd = 0 '**************************** 'Zmienne...
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...
Spróbuj zrobić tak Co4ms: 'procedura obsługi przerwania od Timera T/C0 wykonywana co 4ms Timer0 = 6 'załaduj do Timera0, żeby zliczył 250 (=256-6) impulsów Incr Licznik If Licznik = 6 Then 'zmienna Licznik liczy do 6 aby Licznik = 0 'sprawdzanie stanu przycisku następowało If Pind.0 = 0 Then 'co ok.24ms If Pomoc = 1 Then 'jeśli zmienna Pomoc...
Czyli ten fragment z konfiguracją i obsługą timera jak przekształcić? Oto fragment kodu: [syntax=basic4gl]Config Timer0 = Timer , Prescale = 256 'konfiguracja Timer0 jako 'timer z podziałem 'preskalera przez 256 Portc.0 = 1 Declare Sub Pobr_znaku(cyfra As Byte) 'deklaracja procedury 'pobierającej kod cyfry do 'wyświetlenia z tablicy On Timer0 Mult_wysw...
Po co stosować tu przerwanie? Kardynalny błąd to stosowanie polceceń opóźnień w przerwaniach. W tym programie problem tkwi w: If Przycisk = 0 Then Waitms 100 If Przycisk = 0 Then Incr Sekwencja If Sekwencja = 0 Then Incr Sekwencja If Sekwencja = 4 Then Sekwencja = 1 End If End If End If End If Popraw na: If Przycisk = 0 Then Waitms 100 If Przycisk =...
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...
Nie pracuje bez rezonatora, 1MHz. Czy mógłbyś mi napisać prosty program, bo po prostu nic nie rozumiem :) Dodano po 45 Czy TIMER0 to przerwanie?? Dodano po 10 Aha. Już rozumiem!! :) Dzięki!!
Napisałem kod generowania nośnej, na oscyloskopie okres to 37us więc częstotliwość to 26kHz: (próbowałem już na różne sposoby ale nie dało się zwiększyć) $regfile = "attiny2313.dat" $crystal = 8000000 Config Pinb.3 = Output Config Timer0 = Timer , Prescale = 1 dim takt as integer Enable Interrupts : Enable Timer0 : On Timer0 przerwanie...
...Napisałem taki soft. Ale nie działa... A dlaczego robisz to programowo(przerwanie) :?: Jeśli musisz otrzymać ten przebieg na PINB.3, to wykorzystaj Timer1, a jeśli możesz użyć PINB.2 , to użyj Timer0. Wykorzystaj tryb CTC, to generowanie przebiegu 36kHz, nie zajmie procowi ani jednej instrukcji ;) ... PS Zapomniałeś o "prologu" i "epilogu", które...
1) Po ifach nie masz end if 2) Warto dopisać Start timer0 bo z bascomem różnie to bywa 3) Zrobić tak jak ci pisali poprzednicy- licznik przenieść do przerwania 4) Skonfigurowałes sobie portd jako input i nie właczyłes podciągnięć do vcc (może nie potrzebujesz), ale pamiętaj o tej niedoróbce żeby zaraz nie było że ci przycisk jakiś nie działa 5) Dodałem...
Ja osobiście nie mam problemów z przenaszalnością kodu w firmowym asemblerze Atmela, nawet pomiędzy różnymi wersjami rdzenia, gdyż są w nim wbudowane definicje pozwalającej na asemblację warunkową. Przykład - instrukcja lpm , zamiast której używam następujące makro: .macro LpmPlus #if ((__CORE_VERSION__==V2E)|...
To co napisałeś to pewnie Bascom, ale po pierwsze nie używasz przerwania INT0 tylko portu jako wejścia. Żeby używać INT0 jako przerwania powinieneś po pierwsze skonfigurować jakie zdarzenie na INT0 ma wywołać przerwanie: zmiana stanu czy poziom? Zezwolić na obsługę przerwania INT0 i odblokować globalnie przerwania. Po wystąpieniu zdarzenia nastąpi skok...
też niedawno zacząłem zabawę z uP ale naskrobałem coś takiego, jeśli źle, to mnie poprawcie. $regfile = "attiny2313def.dat" 'attiny2313 $crystal = 1000000 ' 1MHz Config Portb = Output Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.0 , Rs = Portb.2 Config Lcd = 16 * 2 'wyświetlacz 2 linie po...
Wklejam kod. [syntax=basic4gl]'ATtiny2313 mruga dioda ustawienie portów. $regfile = "ATtiny2313.dat" $crystal = 10000000 Config Lcd = 16 * 1a Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , Rs = Portd.4 , E = Portd.5 Config Portd.6 = Output 'podłączenie diody pin nr 11 Config Timer0 = Timer , Prescale = 1024 Dim...
...Spróbowałem własnymi siłami zmienić ten kod, ale nie dałem rady(błędy kompilacji)... Aby to zrobić bezbłędnie, należy znać oba proce na "tip-top" :D Ja zrobiłbym to tak: 'Termometr Domowy' $regfile = "attiny2313.dat" $crystal = 8000000 'Config Timer0 = Timer , Gate = Internal , Mode = 2 'okres Timera0 250*12*Tosc=250us Config Timer0 =...
Bascom mnie odrzuca, ale o ile się nie mylę to wykorzystujesz przerwanie z przepełnienia timera. Prescaler dajesz 256, timer jest 8-bitowy, więc daje przerwanie raz na 65536 cykli, czyli zaledwie 122Hz. I to jeszcze dzielisz na poszczególne wyświetlacze - musi mrugać. Zwiększ szybkość odświeżania, np. poprzez zmniejszenie prescalera. Dopiero przy ok....
Witam, Z racji ograniczonej ilości portów, zostałem zmuszony do multipleksowania dwóch wyświetlaczy LED 7 segmentowych poprzez rejestr 74HC595. Na początku dla testów napisałem krótki programik. Program działa, lecz ......... Myślę sobie: poczekam parę milisekund po każdej cyfrze. Wstawiłem w pętli głównej waitms 1 i jakie jest moje zdziwienie że po...
Do tej pory troszkę bawiłem się AT89C2051. Wykonałem pewien układzik który za pomocą Timera0 zliczał impulsy na wejściu T0 podczas 1sekundy którą odmierzałem Timerem1. Jako, że musiałem przeprogramować 51 do innych celów chciałbym go zastąpić Attiny2313 bo mam dwie sztuki. Zacząłem czytać książkę Dolińskiego aby wykonać program ale mam pewne problemy....
Witam Piszę program pod sterownik na attiny2313. Na chwilę obecną jest obsługa wyświetlacza LED 3 cyfry multipleksowanego przerwaniami z timer0. Chciałem wprowadzić attiny w tryb power down. Jak doczytałem tryb powerdown powinien ustawić wszystkie porty w tryb wysokiej impedancji więc spodziewałem się, że gdy wejdzie w ten tryb to wyświetlacz zgaśnie....
Lysoleq -> ... poczekaj, ale ty po wejściu w przerwanie INT1 inicjujesz Timer0 prawda? czyli ma się wykonać za jakiś tam czas przerwanie no i wykonuje się. Czyli po rozkazie reti skacze do obsługi przerwania timera0. Przecież w pętli głównej masz tylko nop - więc co ten cały program ma robić? jak rozumiem czeka na zbocze opadające na INT1, w tym przerwaniu...
Takie programy to się całe pisze w przerwaniu bez zbędnych kombinacji. Przy okazji można dodać funkcję płynnego przechodzenia pomiędzy jasnościami PWM żeby to jakiś bajer miało. Przycisk sprawdza się dwuetapowo, że został wciśnięty i że został puszczony. ale nie można tego robić za szybko bo zakłócenia wchodzą. Efekty świetlne trzymaj w DATA, tak łatwiej...
Witam. Wiem, że podobne problemy był już wałkowane milion razy lecz nie mogę sam sobie z tym poradzić. Do rzeczy: Chcę aby po przyciśnięciu przycisku dioda zapaliła się po pewnym czasie na krótką chwilę. Chcę to wykonać na przerwaniu, zależy mi na precyzyjnie odmierzonym czasie od momentu naciśnięcia przycisku do zapalenia się diody. Czas palenia się...
Witam, tak jak napisałem w temacie - piszę programowy pwm na attiny2313. Program działa w oparciu o przerwania od przepełnienia timer0. Timer0 ustawiam w normal mode. Fusebity daję na wewnętrzny oscylator 8MHz (bez dzielenia). Z moich obliczeń wynika, że przy rozdzielczości 256 powinienem uzyskać częstotliwość 8MHz/256 = 30kHz (ok), a mierzona oscyloskopem...
To odblokuj jeszcze timer0 Ją też miałem z tym problemy bo potem odczytywał kody ale się procek zawiązał Musisz chyba jeszcze dać disable int0
Oto program który napisałem $regfile = "attiny2313.dat" 'rodzaj mikrokontrolera $crystal = 8000000 '8MHz Dim Pozycja1 As Integer 'zmienna określająca położenie serwa1 Dim Pozycja2 As Integer 'zxmienna określająca położenie serwa2 Dim Czas1 As Integer 'zmienna pomocnicza do odmierzania czasu Dim Czas2 As Integer 'zmienna pomocnicza do odmierzania...
Ok posiedziałem ciut, poczytałem w necie jak się używa te Timery i ich przepełnienia . Powstał taki oto kod .Proszę wyświetlacz traktować jako pomoc pokazującą mi ile już wystąpiło przepełnień, zresztą bardzo fajnie to pokazuje. Ramowa zasada jest taka - programik ma zliczać przepełnienia do 2108 i się zatrzymać po osiągnięciu tej sumy(wstępnie ta wartość...
Ciągle zaglądam, jednak chwilami się gubię ;p Czyli preskaler jest ustawiany jedynie przez TCCR0B. Czyli na Timer0 nie ma mżliwości uruchomienia dwóch trybóow np PWM i CTC, gdyż tylko w rejestrze TCCR0A można ustawić jedną wartość, nie ma jako alternatywnego TCCR0B -bo on służy do ust preskalera. Dobrze mówię? Został mi tylko Timer1, żeby zrealizować...
Mniej wiecej doszedłem o co chodzi. Używam avr-gcc na linuxa. Najwidoczniej jeżeli cos jest w nieskończonej pętli i nie ma powiązania z żadną zewnętrzną funkcją to zmienna nie jest akutalizaowana. Problem rozwiązałem tak że kody zczytywane z pilota sa rozpoznawane jeszcze na poziomie timer0'a ktory słuzy do dekodowania rc5. Procedura przerwania timera...
Timer0 i timer1 używają tego samego preskalera. Dlatego instrukcja prescale=64 zmienia warunki dla funkcji getrc5. Zajrzyj do noty katalogowej ATtiny2313 i nie pisz głupot więcej. Dodano po 14 Odmierz20ms1: 'funkcja obsługi serwa1 Timer1 = 65286 'przy wartosci 65286 timer1 bedzie generował przerwanie co 2ms Incr Licz2ms1 'zwiększ licznik zliczający...
Witam, Mam problem z zmuszeniem do pracy jako PWM Licznika "Timer0" Timer jeden działa mi jako przerwanie co jedna sekunde wiec nie moge go użyć do tego. Próbowałem zrobić to tak jak w tym temacie, ale wyświetlacz wtedy wariuje. http://www.elektroda.pl/rtvforum/topic28... Gdy wykasuje z kodu linijke: 'Config Timer0 = Pwm , Prescale = 64 , Compare...
Oczywiście, że pomieszałeś, bo pod PD3 jednocześnie masz podłączone sterowanie anodą wyświetlacza i przycisk - jak wciśniesz przycisk, to odpowiednia cyfra wyświetlacza będzie zawsze aktywna... Użyj Timer1 w trybie CTC do odmierzania 0.01s - przy F_CPU = 1MHz chcesz mieć przerwanie z f=100Hz czyli odliczasz do 10000-1. To będzie za mała częstotliwość...
Witam Wszystkich Forumowiczów :) Prosze o pomoc w rozwiązaniu problemu z programowym PWM na Attiny2313. Chciałem zrobić program że jak jest na nóżce PIND.4 stan niski to zawsze ma się świecić jedna dioda natomiast jak wystąpi stan wysoki to ma zgasną ta dioda a zaświecić się druga dioda z płynnym wykorzystaniem PWM. Po tym zadaniu procesor ma oczekiwać...
Tu masz program pod ATtiny2313, jeśli potrafisz programować, to też potrafisz przerobić program na ATMegę: [syntax=basic4gl]' Bardzo prosty zegar bez możliwości ustawiania Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte Dim , Godzjed As Byte , Godzdzies As Byte , Mux As Byte , Migaj As Bit Config Portb = 255 : Portb = &B255...
$regfile = "attiny2313.dat" $crystal = 10000000 $hwstack = 32 $swstack = 8 $framesize = 16 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.2 'konfiguracja podłączenia LCD Config Lcd = 16 * 2 Config Timer1 = Counter , Edge = Falling , Noise Cancel = 1 , Prescale = 1 Config Timer0 = Timer...
Witam, mam problem z obsługą RC5, chce zrobić obsługę przekaźników poprzez RC5. Może ktoś sprawdzić co jest nie tak??. Dopiero zaczynam programowanie więc proszę o wyrozumiałość. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #define pierw_spraw 90 #define spraw 149 #define odebrano 0 #define zdekodowano 1 #define error 2 volatile...
Witam, zacząłem budowę ściemniacza do "halogenów" opartego na mikrokontrolerze, narazie wybór padł na Attiny15L bo taka była pod ręką. Docelowo Attiny2313 albo coś większego. Jestem na etapie testów i niestety nie wypadły one pomyślnie. Skonstruowałem taki układ: http://obrazki.elektroda.net/24_12234045... Wiem, że Attiny15L nie jest zbyt dobrym...
Zmienić się da, ale jest to przeróbka całego programu. Nie wystarczy zmienić definicję w dyrektywie .include . Jeśli w Twojej płytce siedzi ATTiny2313 to poza zmianą połączenia z diodą z wyjścia PB0 na PB2 (funkcja alternatywna OC0A) i modyfikacją wartości ładowanej do DDRB; reszta programu powinna być taka sama (Timery0 są takie same w obu układach)....
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, może sprecyzuj problemy jakie masz po kolei - bo teraz to już nie wiem za bardzo czy nie działa ci "sztuczka" z usypianiem i budzeniem procka? czy nie za bardzo działa ci nadajnik RC5 ? nie pokazałeś wprawdzie kodu swojej procedury nadawczej RC5 ale coś czuję przez skórę, jeśli chodzi o błędy w nadawaniu u ciebie, że to właśnie ona jest temu...
Witam.Pan Mirley napisał mi program do prostego termostatu.2 diody led (czerwona się świeci jak grzałka grzeje,a zielona się świeci jak grzałka nie grzeje).Temperatura załączania grzałki jest ustawiana w programie (w kodzie w bascomnie) o raz histereza 2C.Przekaźnik podczepiony pod port scalaka.Tak samo DS18b20.Mój problem polega na tym, że mi to nie...
Działanie Timerów jest opisane na forum. W pdf poniżej są przedstawione dwa przykłady na Timer0 i Timer1. Attiny ma również takie wbudowane. http://ep.com.pl/files/4910.pdf Jak jest w przykładzie możesz zwiększać sobie daną liczbę w przerwaniu, a następnie ją sprawdzać w programie głównym "do...loop". Warunkami "If...then" określić przy jakich wartościach...
Przejrzałem program i kilka rzeczy od razu sie rzuca w oczy 1. brak procedur obsługi przerwań od przepełnienia Timer0 i timer1 Po skonfigurowaniu powinneś określić do jakiej procedury program ma wskoczyć po odliczeniu przez timer np 10ms Powinno być zaraz po konfiguracji timera On Timer0 etykietka A na końcu programu etykietka: ... instrukcjie ........
W końcu udało mi się pojąć ten program i mniej więcej przerwania, ale nastało kolejne pytanie z mojej strony. W jaki sposób mogę obliczyć wartość timera, żeby mógł odliczyć np 0,5 sek lub 2 sek. Chodzi mi na razie o Timer0 8 bitów. W jaki sposób mogę też liczyć przepełnienia?
Pobawiłem się dziś chwilkę programowym PWM. Jest to rozwiązanie na 8 kanałów - 25 może być ciężko pociągnąć ale oczywiście możesz próbować rozbudować program i zmienić częstotliwość zegara czy wywołania przerwań. Pierwszy to demonstracja tworzenia w zasadzie dowolnie biegnącego światła - dane umieszczamy w liniach Data (wartości od 0 zgaszone do 8 max...
Nastąpiły niewielkie postępy. Udało się uruchomić wewnętrzny timer, ale wynik bardzo odbiega od rzeczywistego. Najczęściej pokazuje wynik 0 lub jakąś liczbę jedno czy dwu cyfrową. Bardzo rzadko jest to liczba trzycyfrowa. Program teraz wygląda tak: 'Samochodowy obrotomierz 'Marcin Wiązania 'E-mail: mwiazani(at)poczta.fm $regfile = "attiny2313.dat"...
Witam wszystkich Mam problem nad którym siedzę od wczoraj. Szukałem odpowiedzi na forach, w googlu i nie udało mi się znaleźć odpowiedzi. Otóż za nic nie mogę odebrać informacji w RC5 w przerwaniu INT1 w ATtiny2313. Co ciekawe, procek w przerwanie wchodzi, nie zacina się (sprawdziłem diodami i odpowiednio ustawiając porty) ale nie chce zdekodować rozkazu...
O widzisz, teraz wszystko zrozumiałem;]. Po przeczytaniu posta do którego dałeś linki myślałem całkiem na odwrót - że ten kod wykonuje się w przerwaniu. Więc zrobiłem całość w przerwaniu. Zmylił mnie Twój komentarz do kodu:). //Ten fragment wykonuje się co16ms x4 z Timer0 Za chwilkę przerobię program, powinno zająć parę minut i zobaczymy. A w odpowiedzi...
do avr sprzedają takie specjalne kwarce (np 4.194304MHz). prescale 1024 i tajmer 1 8 bitowy generuje ci idealnie 16 przerwań na sekundę. W przerwaniu ovf timer0 inkrementujesz sobie zmienną (albo jeden wybrany rejestr tylko do tego) i jak większy to zero i zwiększasz sobie zmienną sekundową. Nie potrzeba żadnych auto przeładowań, konfig, odpalasz i...
Timer0 jest 8-mio bitowy a preskaler ustawiłeś na 1. Czyli 1Wire ma tylko 256 cykli. A potrzebuje kilkaset tysięcy żeby coś zdziałać z czujnikiem DS18B20. To ma działać w tle? Ładne mi tło: 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset 1wwrite &HCC 1wwrite &HBE Ja bym preskaler ustawił na 1024 i kod napisał tak*: Dim Pobierz_temp_counter As Byte...
witam mam takie pytanie co w tym programie jest źle $regfile = "attiny2313.dat" $crystal = 8000000 Config Portd = Input Portd = &B00000000 Config Portb = Output Portb = &B0000000 Config Timer0 = Timer , Prescale = 64 On Timer0 Przerwanie_co_2ms Dim Licznik As Integer Enable Interrupts Enable Timer0 Timer0 = 56 Licznik = 0 Do Loop End :...
Witam, proszę o pomoc w zmianie programu: [syntax=bascom] '**************************** 'Konfiguracja '**************************** $regfile = "attiny2313.dat" $crystal = 8000000 Config Portb = &B11111111 : Portb = &B11111111 Config Portd = &B11111111 : Portd = &B11111111 Config Timer0 = Timer , Prescale = 256 Enable Timer0 : On Timer0 Przerwanie0 Enable...
Mam prośbę o pomoc w ukończeniu programu, otórz założeniem programu jest aby zaświecić dioda1 po określonej ilości mrugnięć dioda2 i w odpowiednim momencie wciśnięciu SW1. Program działa bezbłędnie jeśli ręcznie określę mu zmienne A i B, natomiast zaczynają się schody jeśli chcę dodać możliwość programowania zmiennych A i B, zapisując je w pamięci eeprom....
Jest to proste korzystasz z przerwań jakie generuje timer0 podobnie jak to opisał kolega z innego tematu tego fora w bascom napisał '************* Konfiguracja uC ***************** '***************************************... $regfile = "attiny2313.dat" $crystal = 16000000 Config Portb = &B11111111 : Portb = &B11111111 Config Portd = &B11111111...
Witam Chciałem do kuchni wstawić czujnik PIR, ale z dodatkową zaletą, czyli stopniowym zwiększaniem i zmniejszaniem PWM, dodatkowo jeśli podczas zmniejszania PWM nadejdzie przerwanie INT1 od czujnika PIR, to program ma przestać zmniejszać, tylko zacząć zwiększać i to nie od zera, ale od wartości na której "zastało" go przerwanie INT1 od PIR. W sumie...
To był tylko przykład. Przydaje się wtedy kiedy nie możesz użyc pinu podległego Timerowi. W dodatku w tym przerwaniu możesz mieć trzy piny trzykolorowej diody RGB i zmieniając wypełnienie poszczególnych kanałów na jednym timerze mieć kolorki :) Nikogo nie przekonuję do swoich racji tylko pokazuję możliwości. Przykładowy kod ze strony http://mirley.firlej.org/programowyPwm.....
mam taki kod '**************************** 'Konfiguracja '**************************** $regfile = "attiny2313.dat" $crystal = 8000000 Config Portb = &B11111111 : Portb = &B11111111 Config Portd = &B11111011 : Portd = &B11111111 Config Timer0 = Timer , Prescale = 256 Enable Timer0 : On Timer0 Przerwanie0 Enable Interrupts '****************************...
Witam, Próbuję uruchomić zegarek na procku ATtiny2313. Problem w tym że zegarek (stoper) działa za wolno - nie chodzi tu o precyzyjne odmierzanie czasu ale dziesiątki sekund zmieniają sie z prędkością sekund. Program jest z mikroprocesorowej oślej łączki z edw. Tam użyty był at90s2313, ale jeżeli dobrze wyczytałem w nocie katalogowej to timer0 w obu...
Jak to uzupełnić? Tutaj jest strona całego projektu: http://mirley.firlej.org/termometr_uniwe... edit: chciałbym, żeby to wyglądało w ten sposób (chyba) [syntax=basic4gl]'**********************... 'Konfiguracja '**************************** $regfile = "attiny2313.dat" $crystal = 12000000 Config Portb = &B11111111 : Portb = &B11111111...
Proszę kogoś doświadczonego czy mógł by sprawdzić czy ten program będzie działać z tym schematem. http://obrazki.elektroda.pl/4139758300_1...
Witam wykonałem termometr z tej strony mirley niestety po wgraniu programu na attine2313, na wyświetlaczu migają tylko środkowe poziome kreski , wszystkie elementy i luty sprawdziłem więc musi to być program, a aż takich umiejętności nie mam żeby napisać program ,na razie się tego uczę , chodzę do technikum proszę o pomoc. schemat: kod programu: [syntax=vbnet]'*************************...
No to do dzieła. Zmontowany termometr działa bez zarzutu, teraz kwestia dołożenia dodatkowego czujnika. Zmiana mogłaby się odbywać np po przez wciśnięcie przycisku bądź co np 5s., jak to zrobić, co należy zmienić? Podaje aktualny program który aktualnie działa i obsługuje jednego ds-a. '**************************** 'Konfiguracja '****************************...
Probowałem timer0 i timer1 ale obliczenia się nie zgadzają z rzeczywistością no tak próbowałem...........lale nie szukałem........ zobacz http://www.edw.com.pl/pdf/k10/81_36.pdf i resztę "opowieści" na stronie wydawnictwa na ten sam temat. O zegarku i odliczaniu czasu było dużo napisane. A tak na marginesie kolego lelekx każdy mikro kontroler nadaje...
Nie analizuję jak to działa, ale zmieniony tak jak pisałem kompiluje się bez problemu. Jeśli poniższego listingu nie potrafisz skompilować to znaczy że używasz jakiejś archaicznej wersji i nie da się pomóc dopóki nie przesiądziesz się na nowszą. WDVALUE=16,32,64,128,256,512,1024,2048,4... Zawsze możesz wpisać mniejszą wartość dla Config Watchdog.....
Witam. Piszę ponieważ mam problem z programowym PWM na attiny2313A. Ustawiam Timer w tryb CTC. Po zrównaniu TCNT0 z OCR0A powinno samo wyzerować rejestr TCNT0. Niestety tak się nie dzieje, jeśli sam się tym nie zajmę to serwa szaleją. Z obliczeń wynika, że przerwanie TIMER0_COMPA_vect powinno wykonywać się co 0,01ms. PWM ma działać tak: Uruchamiamy...
Oto kod... lecz jeszcze nie sprawdziłem czy działa. $crystal = 8000000 $regfile "attiny2313.dat " Config Timer0 = Timer , Prescale = 64 Config Timer1 = Pwm , Pwm = 10 , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Int0 = Rising On Int0 Impuls On Ovf0 Przepelnienie Enable Interrupts 'T0 - sumaryczna wartośc timera0 Dim...
Witam serdecznie! W tym dziale piszę do Was koledzy po raz pierwszy. W programowaniu procków raczej nie siedzę( bawiłem się kiedyś w bascomie kilka razy). Mam teraz do wykonania następujący układ. Podajemy impuls startu na nózkę procka załączając urządzenie (przerzutnik RS) zadajemy x liczbę impulsów podawanych na drugą nózkę (timer0 lub przerwania)...
Witam! Główne założenie tej części programu miało być takie, że program sprawdza zmienną w przerwaniu wywoływanym przez timer0 (co 1s) i jeżeli jest warunek spełniony to zwiększa odpowiednią zmienną co 1s. #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h> // funkcje sei(), cli() #include <avr/iotn2313.h>...
Zrobiłem na piechotę (kod z elektrody) gdzie jest to normalnie na licznikach zrobione ale kod mimo, że się kompiluje nie chce działać. [syntax=basic4gl] [ $regfile = "attiny2313.dat" $crystal = 8000000 'Konfiguracja portow /0-input /1-output / z lewej MSB 'PortD.3 lub PortD.2 musisz ustawić jako input, sa to wejscia INT1 i INT0 'do ktorego bedzie podlaczone...
Problem z zliczaniem impulsów rozwiązany ale mam nowy problem z wyświetlaniem wyniku zdjęcia w załączniku. Pierwsza rzecz co rzuca sie w oczy to brak konfiguracji LCD; Niby to pracuje mając config ustawiony w 'Options/Compiler/LCD, ale przeniesiesz listing na inny computer i tu już nie musi być to samo. Dalej, Timer1 odliczający 1 sec. może pracować...
Zdaje się, że przerwanie timera TIMER0_COMPA w trybie CTC pojawia się co (OCR0A + 1) impulsów, bo przecież licznik liczy od 0, więc aby uzyskać przerwanie co 100 impulsów należałoby ustawić OCR0A na wartość 99.
przerwanie timer0 timer0 attiny2313 timer0 przerwanie
alternator iveco wyjście trybu standby zasilacz zmienne napiecie
widzenie przez ściany widzenie przez ściany
Jak zmostkować moduł bezpieczeństwa MSI 200 Leuze? Opel Astra - Problemy z rozruchem ciepłego silnika