Pozmieniałem troche program ale nie działa prawidłowo prędkość strasznie skacze od 0 do 240 km/h -bo nie zerujesz co 1 sec. licznika impulsów (Timer0), ponadto ,masz zbyt duży błąd zaniżając zakrses zmienmnej "Licz" - as byte Porównaj: $regfile = "2313def.dat" $crystal = 8000000 Config Lcdbus = 4 Config Lcd = 16 * 2 Config Lcdpin = Pin ,...
Dodaj Waitms przed Loop: [...] Waitms 10 Loop
$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
Witaj, Brakuje jeszcze paru informacji: 1. deklaracji zmiennej licznik 2. gdzie definiujesz zegar ? 3. czy prawidłowo masz ustawione fusebity?
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ć...
[syntax=c]ISR(TIMER0_COMPA_vect){}[/synt...
Dlatego właśnie napisałem, że w swoim programie używasz niewłaściwego przerwania. Znajdź odpowiednik tego które podałeś wyżej, ale dla ATtiny2313: http://www.nongnu.org/avr-libc/user-manu... Do tego właściwą flagę w rejestrze TIMSK. I pokaż cały program po tych modyfikacjach. Teraz będziesz już na właściwej drodze do sukcesu...
Problem pewnie tkwi w tym ze masz żle ustawione fusebity. Jest taka opcja ze moża sygnał zegarowy dzielic prze 8 i wtedy procesor pracuje 8 razy wolniej. Zamias sie bawic w fusebitach mozesz po prostu zmienic program. Zamiast: Prescale = 64 wpisz: Prescale = 8 W załączniku są pokazene ustawienia fusebitów. Strzałką zaznaczyłem fusebi odpowiedzialny...
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.
Load Timer0 = 45 - jak sądzę oznacza nadanie wartości początkowej timerowi. Oznacza to, że powinieneś załadować tę wartość do rejestru TCNT0. Zakładam, że funkcja inicjująca BASOM inicjuje go w tryb normalny (czyli mode 0). W funkcji przerwania: - Incr A, Incr B - po prostu dodaj jeden do zmiennych A i B lub wykonaj inkrementację - If A = 305 Then ......
Inkrementacja jest wykonywana po obiegu pętli. Racja, chyba mi się mózg zapętlił :)
No toż pewnie, że możesz używać tzn odczytywać wartości z latającego licznika. Ale jeśli zaczynasz się już nim bawić w ten sposób, że chcesz go resetować w locie (czyli zapisywać), że chcesz zmieniać preskaler na inne wartości niż ustawiony został za pomocą polecenia ConfigRC5 (a został tylko ty tego nie widzisz) to nie dziw się, że potem coś ci nie...
Odpowiedź masz w swoim poście, który założyłeś 1h20 minut wcześniej :)
Do włączenia trybu CTC dla timera 0 służy bit WGM01, a nie WGM02 jak w timerze 1. Z kolei bit WGM01 jest w rejestrze TCCR0A: [syntax=asm] ; start timer in CTC mode ldi r29, (1<<WGM01) out TCCR0A, r29 ; CTC ldi r29, (1<<CS00) out TCCR0B, r29 ; no prescaling [/syntax]
Dodaj komentarze- co gdzie chcesz zrobić. Bo nie rozumiem po co Ci Timer1 skoro wynik masz z Timer0.
Błąd kompilatora BascomAVR dla nowych procesorów AVR - nie jest obsługiwany timer0 poleceniem Config. Aby uruchomić timer0 trzeba zapisywać bezpośrednio do rejestrów.
Czyli jeśli dobrze rozumiem z tego co przeczytałem w tematach podanych wyżej Attiny2313 ma 4 kanały PWM. 2 są powiązane z Timer1 a 2 pozostałe z Timer0. I mam pytanie czy te dwa kanały z timer1 mogą pracować z różną częstotliwością ? Czy Timer0 który jest 8 bitowy pozwala na generacje sygnału PWM tylko poprzez napsanie programu zaświeć diodę zaczekaj...
w/w procek ma 4 kanaly pwm. z tego co wyczytalem w dokumntacji to ten dwa dodatkowe sa na timer0, tyle ze bascom nie ma takiej opcji :( moze ktos wie jak to zrobic? probowalem podobnie ja pwm na timer1 ale bscom nie chce tego skapilowac. z gory dzieki za pomoc!
a zmieniłes Fuse Bity?? Bo Attiny2313 pracuje standardowo z zegarem chyba 1MHz.
proszę pomóżcie i napiszcie np sam kawałek kodu z bascoma jak ustawić ten pwm na timer0 w attiny2313 i jak go potem sterować
Zmieniłem na Prescale = 64 dlaczego teraz sekunda trwa jakieś ~2 sekundy?
Witam! Mam problem z timerami w języku C (w moim projekcie) dlatego zwracam się do Was o pomoc. Napiszę od początku, żeby przedstawić o co mi chodzi. Zbudowałem kiedyś sterownik taśmy led RGB oparty na mikroprocesorze attiny2313, w którym za pomocą jednego przycisku zmieniam podstawowe kolory na pasku ledowym (czerwony, zielony, niebieski) oraz ich...
Na razie największy problem dla mnie to operacje bitowe Ćwicz! Tu jest błąd:[syntax=c]LED1_ON PORTB &= (1<<LED1_PIN)[/syntax]
Jak już pisałem, dawno nic nie robiłem w bascomie, ale poniżej daję ogólny zarys opóźnienia dla przycisku przy użyciu licznika Config Timer0 = Timer , Prescale = 1024 Enable Interrupts On Timer0 , Czas Dim Flaga As Bit Main: Do If Pinx.x = 0 and Flaga = 0 Then Load Timer0 , 25 '0,0256s. dla 1MHz Enable Timer0 End If If Flaga = 1 Then Reset Flaga...
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.
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
Ja dopiero sie uczę i jestem początkujący. Próbuje sprawdzam. Datasheet nie czytam ponieważ bardzo slabo znam angielski, a zwłaszcza ten techniczny. Wpisałem wszystko co mi podałeś Saabotaz, ale nadal nie działa. Dziwne rzeczy wyskakuja na wyświetlaczu, a działam na plytce ZL11AVR. Jeżeli ktoś by zechciał tutaj badz na PW mi to wytlumaczyć bym był bardzo...
Dwa razy włączasz Timer0. A pewnie chodziło Ci o to żeby włączyć Timer0 i potem Timer1.
Hym.... Ma ktoś pomysł jak ustawić Timer0 na Attiny2313? Tam są dwa kanały Pwm, ja bym potrzebował tylko jednego, wiem, że to trzeba ustawić "ręcznie" i że trzeba wpisać odpowiednie wartości: Tccr0a=? Tccr0b=? Tylko nie wiem jakie. Szukałem i próbowałem dwa dni ale nic z tego nie wyszło. I jeszcze jedna sprawa. Na ATmega8 przy wew. oscylatorze 1mH działa...
Nie wiem, czy Timer0 obsługuje tryb PWM w Twoim procku, jest to wątpliwe. Niestety Attiny2313 obsługuje PWM z TIMER0 i do tego dwa kanały.
Hierarchię szybkości dobrze rozumiesz. C jest też językiem wysokiego poziomu- chociaż informatycy nazywają go makroasembler. Ale z Bascoma też da się sporo wycisnąć. Spróbuj opcji "nosave"- może Bascom nie korzysta w tym wypadku z tych rejestrów. Po za tym- szybkość zależy od zegara(kwarcu)- jak w komputerze.
Tak.
Niestety. Twój kompilator jest chyba zbyt leciwy by skompilować to poprawnie(j). No to trzeba mu zrobić "kuku" ;) Dziękuję za przetestowanie Timer0 :!: Idę... porozmawiać z posiadaną wersją [B] i podjąć odpowiednie kroki. Dam znać czy/jak i u mnie zagra :D Pozdrawiam
Wygląda na to, że procedura obsługi przerwania TIMER0_COMPA_vect się nie wyrabia (ma do dyspozycji 80 taktów). Innymi słowy czas pomiędzy przerwaniami jest krótszy od czasu wykonania kodu procedury obsługi przerwania. Wpisanie na początku procedury instrukcji TCNT0=0; powoduje po prostu wydłużenie czasu zliczania timera 0 o czas trwania prologu procedury...
Programu tego nie skompilujesz ponieważ Timer0 w ATtiny2313 jest 8bitowy. Jeśli jest to program do projektu z Twojego innego tematu to tam był użyty uK z rodziny AT89..., nie znam ich, więc nie wiem jakie tam są timery. Musisz od początku skonfigurować Timera0 lub innego tak, aby zliczał sekundy. Dlaczego chcesz użyć zewnętrznej pamięci EEPROM? ATtiny2313...
Np. timer1 konfigurujesz tak aby odliczał 1 msek (a nie 1sek ). W czasie pomiędzy jednym int0 a drugim zliczyłeś wystąpienie 1251 razy timer1 1000/1251 = 0,79936 Hz Jednak dla większych częstotliwości musisz użyć poprzedniej metody (timer0 = counter...)
A przypadkiem nie zaglądałeś do noty katalogowej z opisem do tych rejestrów ? ;] Ustawienia są wspólne dla Timer0. Analogia jest tylko w rejestrach OCR0X...
(at)m_hauf - wymiana switchy tudzież "dłuższe" ich przytrzymywanie to sposoby walki z drganiami z góry skazane na porażkę ;) ogólna zasada działania jest zaprezentowana w programie Tylko, że taka parada ifów nie zachęca do analizowania. Kompilacja programu w takiej postaci jaką zaprezentowałem nie generuje żadnych warrningów, ani errorów. Jeśli usuniesz...
Nie wiem czy dobrze kombinuję: $regfile = "ATtiny2313.DAT" $crystal = 8000000 Config Timer0 = Timer , Prescale = 256 On Timer0 Sekunda Enable Interrupts Enable Timer0 Dim Scnt As Integer Sekunda: Incr Scnt Return Czego tu jeszcze brakuje? Bo w symulatorze nie działa, tzn nie zwiększa zmiennej scnt.
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).
Pomyliłem się- to jest ATtiny 13 a nie ATtiny2313. To ma tylko jeden timer- TIMER0. I na nim musisz wszystko zrobić. Ale musisz posprawdzać ustawienia rejestrów- moga mieć inne nazwy i ustawienia.
Probowałem timer0 i timer1 ale obliczenia się nie zgadzają z rzeczywistością
Racja... nie do końca rozumiem te ds'y, ale chyba po prostu muszę się douczyć o tranzystorach... już nie pytam o to tutaj :) Właśnie z 1MHz wyciągnąłem 488Hz dla timer0 i chciałbym mieć tyle samo mieć na timer1 ;)
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ł...
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...
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)...
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. Nie wiem jak w asemblerze wykonać przejście mikrokontrolera ATtiny2313 w trym oszczędzania energii, gdy brak będzie zasilania z sieci (praca na baterii). W bascomie po skonfigurowaniu PORTD.2 (INT0) jako wejście podciągnięte do + i podłączenia do niego +5V i rezystora do masy sprawę załatwiał poniższy fragment programu [syntax=vbnet]Do If Pind.2...
Aż se na płytce złożyłem ten układ i program sprawdziłem. No i faktycznie świeciło na stałe. Do poprawienia były bzdety. Wklejam jeszcze raz, przetestowany i na 100% wszystko działa jak chciałeś [syntax=basic4gl] $crystal = 8000000 'Deklaracja częstotliwości kwarcu $regfile = "attiny2313.dat" Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A...
witam ! '2 wyświetlacze LED 7segmentów 'fusebity ustawione fabrycznie $regfile = "attiny2313.dat" $crystal = 1000000 Config Portb = Output 'katody segmentów LED Config Portd = Output Anoda1 Alias Portd.0 Anoda2 Alias Portd.1 Dim Nr_wysw As Byte Dim Cyfra2 As Byte Dim Cyfra1 As Byte Dim Temp_liczba_1 As Word Dim Temp_liczba_2 As Word Config...
Konfiguracja timera '51 jest inna : [syntax=basic4gl]Składnia: CONFIG TIMERx = COUNTER | TIMER , GATE = INTERNAL | EXTERNAL , MODE = 0 | 1 | 2 | 3 gdzie: x0 – TIMER0, 1 – TIMER1, Opis: TIMER0 i TIMER1 mogą pracować jako liczniki impulsów zewnętrznych gdy pierwszy parametr jest ustawiony jako COUNTER. Impulsy zliczane muszą być dostarczane...
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...
Dzisiaj na stronie elportalu znalazłem komentarz na temat bascoma i ATtiny. Bascom nie obsługuje prawidłowo ATtiny. Start Timer0 czy stop Timer0 nie działa (przynajmniej dla ATtiny2313). Trzeba wpisać do odpowiedniego rejestru właściwą wartość żeby timer wystartował itp. Trzeba się zapoznać z dokumentacją. Rejestry sterujące timerami są podzielone na...
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...
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...
Co do źródeł promieniowania podczerwonego, to najoczywistszym jest Słońce, dalej wszystkie żarowe źródła światła, no i ostatecznie wszystkie inne piloty IR :-) TSOP1736 odbiera podczerwień i z odebranego sygnału wybiera tą część, która przejdzie przez filtr o częstotliwości około 36 kHz. Dzięki temu nie zareaguje na słońce lub żarówkę. Na jego wyjściu...
Poczytaj tematy i uzyj szukaj. Attiny2313 nie posiada adc wiec potencjometrem nie dasz rady tego sterowac. Domyslam sie ze robisz do w bascomie. Tu masz kawalek kodu jak konfigurowac timery zebys mial 4 pwm. '******* procek ******* $regfile = "attiny2313.dat" $crystal = 8000000 $hwstack = 30 $swstack = 30 $framesize = 30 '****** dioda R/G...
Timer0 i timer1 używają tego samego preskalera. Dlatego instrukcja prescale=64 zmienia warunki dla funkcji getrc5. Rozwiązaniem może być dopasowanie się z timer1 do preskalera użytego przez timer0 w obsłudze rc5 lub zmiana kodu funkcji getrc5.
Tak to kiedyś zrobiłem dla attiny2313 [syntax=c] #include "defines.h" #include <avr\interrupt.h> //#include <stdbool.h> //#include <stdint.h> //#include <stdio.h> #include <avr/io.h> //#include "hd44780.h" #include "hd44780.c" unsigned char sign1[16]; unsigned char i,keys,kdelay,krepeat=20,menu,filter_dly... unsigned char...
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ł"...
[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...
Po ciężkich zmaganiach z metodą losową dla kolorów postanowiłem porzucić ten pomysł i zastosować przewidywalny sposób który będzie się powtarzał co jakiś czas. Może i nie jest to rozwiązanie pierwsza klasa, ale działa. Nie stosowałem jednak korekcji gamma, bo przy rozdzielczości PWM 8 bitów i zastosowaniu płynnego rozjaśniania było widać przeskoki (mruganie)...
przepraszam, slepy jestem. mam $regfile = "2313def.dat" zamiast $regfile = "attiny2313.dat" teraz sie kompiluje, zaraz będe sprawdzać czy będzie generować. sprawdze jeszcze: Set Tccr0b.cs00 'start timer0 Set Tccr0a.wgm00 'mod pwm prawdłowej częstotliwości Set Tccr0a.com0a1 'wyjście pwm1 enable Set Tccr0a.com0b1 'wyjście pwm2 enable a wersja bascom-avr...
...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 =...
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>...
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
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)....
Ale litości. Wstaw ATTiny2313. Po co aż ATMega32? ATMega8 to by było przegięcie a co dopiero 32. $crystal = 4000000 Config Lcd = 16 * 1a Cursor Off Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Counter Dim Temp As Byte Dim R As Byte Dim Freq_compare As Word Dim Metal_type As Bit Dim Freq As Word Dim Dif As Word Dim Temp2 As Byte Dim Prescale...
90s2313 ma tylko jedno sprzętowe wyjście PWM > OC1 którego wyjściem jak wspomniałeś jest końcówka PB3(OC1). Pozostałe generatory - też jak piszesz - da się uzyskać programowo (np. w trybie FastPWM) korzystając z licznika TIMER0. Wyjściami mogą stać się wszstkie dostępne w danej chwli końcówki portów. Wszystko zależy od napisanego oprogramowania i czy...
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...
Witam. (Buduję czujnik odbiciowy) Mam duży problem dotyczący generowania 36kHz i podania tej częstotliwości na diodę IR, aby TSOP1736 odebrał sygnały. ATTiny2313 pracuje na kwarcu 4MHz z kondensatorami 27pF. Dioda podłączona jest do uC katodą przez rezystor 220(Ohm) i potencjometr 1k(Ohm). Dioda świeci, sprawdzałem to aparatem cyfrowym. Napisałem taki...
Nic z tego nie rozumię, pewnie mi trzeba wszystko łopatologicznie tłumaczyć. Myślałem że w książce prawdę piszą. Wpisywałem zamiast pwm1a=55, compare1a=55 i dalej nic na wyjściu. Wcześniej miałem inny programik i jakiś przebieg był ale TSOP1136 na niego nie reagował ale przebieg był bo świecenie diodą IR w kamerkę było widoczne a teraz nic nie widać....
Acha rozumiem, czyli ta linijka odpowiadająca za Timer0 jest zbędna wystarczyło dodać "Compare B Pwm" do linijki Timer1. Jeszcze pytanie dla ścisłości : ta komenda jest poprawna w przypadku Timer1? Compare1a = 1000 Compare1b = 400
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...
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...
zagladałem i wiele nie znalazłem, mam taki mniej wiecej program i nie wiem.... moze czegos brakuje? szukałem juz na elektrodzie, ale nie znalazłem niczego... [code] $crystal = 3500000 $regfile = "2313def.dat" Ddrb = &B00111111 Ddrd = &B11111111 '****deklaracje zmiennych Config Timer1 = PWM , PWM = 8 , COMPARE A PWM = CLEAR UP Config Timer0 = Timer ,...
Sorki za odgrzewanie starego tematu, ale dodam jedno. Miałem problemy w BASCOMie z timerem. Problem dotyczył instrukcji LOAD TIMER0,wartość. Tak jak wiele osób używałem LOAD TIMER0=wartość. Dzięki temu tematowi rozwiązałem kilkugodzinny kłopot. Nie wiem dlaczego kompilator nie sygnalizuje błędu. Jakby ktoś nie zauważył różnicy to napiszę słownie: "nie...
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....
Sprawdź- ja w _delay() nie bardzo wierzę. Druga sprawa- gdy OCR osiąga wartość max- czyli 0xFF w przypadku Timer0 i 0xFFFF w Timer1 do są specjalne przypadki- ale przyznam się bez bicia że jeszcze tego do końca z braku czasu nie rozgryzłem. Sprawdź dla i<=244 i podaj rezultaty.
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...
regfile = "2313def.DAT" $crystal = 11059200 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.6 , Rs = Portb.7 'Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 , E = Portb.3 , Rs = Portb.4 Cursor Off Config Pind.6 = 1 Config Pind.0 = 0 Portd.0...
O flagach jeszcze nic nie wiem, a te wait 1 są tylko w fazie testów, żeby łatwiej było wyczuć o co chodzi, natomiast waitms 1 jest i pewnie będzie bo mimo iż używam timer0 to jeśli nie wstawię waitms 1 to diody delikatnie mrugają bez przerwy. Jednak byłbym wdzięczny gdyby ktoś przynajmniej jakiś przykład wskazał rozwiązania mojego problemu.
landy13 -> Poprzedni kod źle wkleiłem na forum, sprawdzam kompilując i programując. Przerobiłem kod, wysyła,ale jest problem z czasem... http://obrazki.elektroda.net/33_12548561... 1. Fusebity są OK (załączam dla pewności) http://obrazki.elektroda.net/11_12548558... 2. W kodzie zmieniłem na 8MHz (kod) $regfile = "attiny2313.dat" $crystal...
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...
A spróbuj taki kod: [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> const uint8_t Out[11] = {0x3F, 0x06, 0x5b, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x79}; uint8_t Val[2] = {0x00, 0x05}; volatile uint8_t Pos = 1; ISR(TIMER0_OVF_vect) { Pos++; if(Pos>2) Pos = 1; } int main(void) { DDRB = 0xFF; DDRD = (1<<PD0)|(1<<PD1)|(1<PD5)...
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)|...
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...
Proszę. Nie opisywałem go i tutaj może wyglądać dziwnie, ale u mnie rysuje linie łączące bloki. Wygląda to jak na załączonym obrazku i nie mam potrzeby dla takiego kodziku tego opisywać. http://obrazki.elektroda.pl/9672124500_1... Błąd mógł się wkraść bo to tylko tak z doskoku dla relaksu napisałem w pół godzinki. Życzę owocnego testowania...
zumek a mogbys podzucic kawalek programu Skoro tak ładnie prosisz :D '*********** 4 x PWM ********* $regfile = "attiny2313.dat" Ddrb = &B00011100 'Oc0a,Oc1a,Oc1b = Output Ddrd = &B00100000 'Oc0b = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up Tccr0a = &B11110001 'Timer0=Pwm ,Compare A Pwm = Clear...
Czytałem i niestety nie wiem co wpisać w TCCR0A oraz TCCR0B czy możesz mi podać co wpisać aby ten Timer działał tak samo jak Timer1 ? Timer1 masz skonfigurowany w trybie "Phase Correct PWM" - stąd obliczysz częstotliwośc. Więc sonfiguruj go podobnie jak Timer1 z pewnymi różnicami: Config Timer0 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down , Compare...
Nie wiem po co sobie utrudniasz z "programowym" pwm . Attiny13 ma timer0 i dwa kanały sprzętowy pwm (OC0A i OC0B) . Jeden kanał używasz do migania LED a drugi do sterowania serwem , w "case" gdzie masz serwo musisz tak manipulować zmienną dla led i serw po przez np: pętle i będzie chodzić. Najlepiej to zmień procesor np: na attiny2313 , trochę większy...
Witam.. Od godziny próbuję dojść czemu wyświetlacz tak niemiłosiernie mruga. Gdyby ktoś mógł rzucić na to okiem: $regfile = "attiny2313.dat" 'model proca $crystal = 1000000 'taktowanie Dim Cyfra As Integer Dim Her As Byte Declare Sub Wyswietl Declare Sub Pokaz Dim A As Byte Config Portb = Output 'port b jako wyjścia Portb = &B00000000 'stan...
Witam , po przerwie , Nie, w zależności od szacowanych obrotów wybierasz metodę pomiaru, w której wykorzystujesz jeden (dowolny) timer, lub oba w której jeden odmierza czas a drugi zlicza impulsy. Ta ostatnia jest alternatywą do tej którą zastosowałeś lecz czas jest mierzony timerem a nie przez processor instrukcją Wait . Ta druga metoda polega na pomiarze...
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...
Witam Potrzebuję oprogramować w najprostrzy sposób Attiny2313 i z [url=http://www.cyfronika.com.pl/kityavt... kodu zostawiłem tylko sam licznik impulsów bo nie potrzebuję wyświetlacza, ale nie wiem co dalej bo potrzebuję wiedzieć ile impulsów na sekundę będzie odpowiadało np prędkości 5km/h. Zliczanie nie musi być dokładne gdyż nie...
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 =...
Wydaje mi się, że najpierw powinno być „uruchomione” odliczanie tych 0,1 sek, wyzwalane pierwszym pikiem z „paczki”. Potem trzeba odczekać te 0,1 sekundy na zanik „szumów” i zacząć zliczanie w czasie 0,9 sek. Ilość zliczonych pików podzielona przez czas da mi częstotliwość. Wynik ma się utrzymywać na wyświetlaczu...
Witam, napotkałem na pewien problem przy budowie dużego zegara LED opartego na module RTC i procesorze AVR Attiny2313, w związku z tym liczę na waszą pomoc. Układ przedstawiony jest na załączonym zdjęciu, jest to klasyczne rozwiązanie z tym, że gotowy moduł wyświetlaczy jaki posiadam jest dużych wymiarów stad konieczność zasilania jednego segmentu napięciem...
Ja bym to wykonał tak : '---------------------------------------... DS1820 ----------------------------------------... Config 1wire = Portd.2 'deklaracja portu na którym będą podpięte DS18b20 Dim I1 As Integer Dim Dsid1(8) As Byte 'program głowny do If Timer1 > 5000 Then '[8000000/1024] * 0.65s = ~14000 Gosub Temp End...
(at)ElektrodaBot powyżej 255 licznik źle zlicza dając ) co może być źle w tym kodzie: [syntax=text]$regfile = "attiny2313.dat" ' 2KB FLASH|128B SRAM|128B EEPROM $crystal = 8000000 $hwstack = 40 $swstack = 8 $framesize = 24 Config Timer0 = Timer , Prescale = 64 On Timer0 Wyswietlanie Config Pina.0 = Input Config Portb = Output : Segmenty Alias Portb...
attiny2313 przerwanie timer0 attiny2313 bascom timer0 policzy timer0
podłączenie blokady drzwi indesit elektrobim centrala głośne wirowanie pralki
hasło nazwa użytkownika router hasło nazwa użytkownika router
Montaż zawiasów w starym piekarniku - krok po kroku Migająca cyfra na płycie indukcyjnej - co oznacza?