Zastanów się co się stanie, gdy zwiększasz wartość zapisaną w rejestrze PORTB na początku pętli nieskończonej: PORTB = 0b00001000 - mamy włączone podciąganie W czasie przyciskania: PORTB = 0b00001000 PORTB = 0b00001001 PORTB = 0b00001010 PORTB = 0b00001011 PORTB = 0b00001100 PORTB = 0b00001101 PORTB = 0b00001110 PORTB = 0b00001111 PORTB = 0b00010000...
Problemy: 1)Nie wiem czy tak ma być, ale nie ustawiłeś na PortB.1 stanu wysokiego, aby podciągnąć złącze. 2)Źle zagnieżdżone IFy. Powinno być: [syntax=basic4gl]Do If Pinb.1 = 0 Then Waitms 20 L = L + 1 If L = 3 Then Set Portb.2 End If If L = 6 Then Reset Portb.2 L = 0 End If End If Loop [/syntax]
W jaki sposób automatycznie spowodować aby licznik zerował się gdy TCNT0 będzie równe OCR0B (nie chodzi mi o to żeby programowo zmieniać TCNT0 podczas przerwania). Nie ma takiej(sprzętowej) możliwości :( Tryb CTC w Twoim uC, jest możliwy tylko z OCR0A. Piotrek
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
Wypełnienie - zmieniając wartość zmiennych PWM_kolor, a częstotliwość zmieniając wartość OCR0A. BTW> Ta linijka na końcu: [syntax=c]if (cnt > 255) { cnt = 0; //reset licznika }[/syntax] jest zbędna
Dokładnie jak pisze (at)tmf, programowo spokojnie 6x 5khz ogarniesz. Na attiny13 robiłem licznik programowy, który bez zająknięcia przy zegarze 9,6MHz zliczał mi ponad 40khz tyle, że robiłem inną metodą niż z XOR, bo badałem konkretne zbocze (przy XOR chyba każde jest łapane - nie wnikałem nigdy w ten algorytm to nie jestem pewien).
Dalej kolega northwind nie czyta dokumentacji. Jeśl przeczytałbyś to wiedziałbyś, że ATTiny13... nie ma licznika TIMER1. Dodatkowo dowiedziałbyś się, że taktowanie 8MHz jest niemożliwe z wewnątrz. Proponuję zakończyć temat do czasu przeczytania dokumentacji przez kol. northwind .
Tak, jest różnica. - w attiny15 nie ma SRAMu (w attiny13 jest 64B) - maks czest. taktowania attiny15 to 1,6MHz a attiny13 to 20MHz - w attiny15 sa 2 liczniki 8bit, a attiny13 ma tylko jeden - ale attiny15 ma tylko 1 kanał PWM, a attiny13 ma 2 - no i attiny13 ma SPM (możliwość kasowania i zapisywania pamięci) i DebugWIRE (linia uruchomieniowa, do debugowania)....
CD4541 (jako licznik godzin) który wyzwala NE555 (tryb monostabilny), może być w wersji CMOS, na parę minut; załączenie kamery przez przekaźnik , tranzystor. To samo na ATtiny13, trzeba zmodyfikować czasy, zasilanie: [url=https://www.elektroda.pl/rtvforum/t...
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
ATTINY13 + program ma tylko 8 pin.
rejestracji każdego nowego impulsu podczas świecenia diody LED no a co ja proponuję. jak odbierasz impuls to zerujesz licznik. Każdy impuls ustawia ten czas od nowa na 3 minuty. Chociaż ja bym osobiście zrobił na przerwaniach Techniczna realizacja jest bez znaczenia. Chodzi o ideę
Nijak z żadnego kodu nie mogę się doczytać na chłopski rozum kiedy on mierzy czas od Rising do Rising. Nie używaj więc chłopskiego rozumu - użyj własny! Wyjaśnienie powinno być zbędne bo jest bardzo trywialne; - obracając wiatrakiem, w pewnym momencie wbudowany tam hall switch daje impuls na INT0, co wtedy robisz w programie? - odsyłasz go do etykiety...
Można wykorzystać timer watchdoga do generowania przerwań co sekundę, budzenia procesora i inkrementowania liczników. Wtedy średni pobór prądu przez mikrokontroler wyniesie kilka mikroamperów.
to z tym ne to układ znacząco nadmiarowy, w wypadku uC układ zamykałby się w 2kondensatorach, rezystorze, attiny13 i ew stabilizatorze(i 2kondensatorach do niego). Najbardziej łopatologicznie to sprawdzać stan przycisku w pętli do czasu przerwania z licznika który zerujesz / uruchamiasz w czasie pierwszego wykrycia zmiany stanu i zmienić stan wyjścia...
witam Czy da się zrobić jakimś sposobem pomiar przebiegu prostokątnego mając do dyspozycji tylko 1 timer? nie zależy mi specjalnie na precyzji a jedynie na porównaniu wartości zmieniających się do zapisanej. jakbym miał dwa timery to jednym przerwanie co pewien czas i odczyt licznika z drugiego, a tu?
Zainteresuj się licznikami. Tu nawet sterowanie jest niemożliwe. Skoro stan przycisków sprawdzasz co 4, 6 lub 8h tylko raz.
przelicz licznik bo możesz mrugać tak szybko że nie zauważysz tego. efektem będzie słabsze świecenie diody
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;....
Problem rozwiązany zastosowałem ATtiny13 do tego program blink zmierzony dokładnie czas , i uzyskałem rezultat taki jak chciałem ,zamiast przekźnika zastosowałem IRF520, także dziękuje wszystkim za pomoc. Temat zamykam
Witam, Próbuję skompilować dla attiny13 taki kod: $regfile = "attiny13.dat" Config Portb = Output Dim Pwmr As Byte Dim Pwmg As Byte Dim Pwmb As Byte Dim Licznik As Byte Pwmr = 255 Pwmg = 255 Pwmb = 255 Portb.0 = 0 Portb.1 = 0 Portb.2 = 0 Do For Licznik = 1 To 255 If Licznik <= Pwmr Then Portb.1 = 1 Else Portb.1 = 0 End If If Licznik <=...
Z attiny13 będzie ciężej się uporać przy ręcznym odblokowywaniu bo tutaj mamy interfejs szeregowy - HVSP. Polecam wykonać taki układ: http://www.elektroda.pl/rtvforum/topic15... nawet w pająku. Jeśli nadal chcesz zrobić to ręcznie, to zobacz tutaj: http://www.elektroda.pl/rtvforum/viewtop... jest to kod źródłowy tego urządzenia...
Takiemu zadaniu podoła nawet ATtiny4. Z obsługiwanych przez avr-gcc może być np. ATtiny13(A) czy ATtiny25. Co prawda mają one tylko 8-bitowe liczniki, ale w razie potrzeby rozdzielczość PWM można dość łatwo zwiększyć programowo (przynajmniej w trybie fast PWM).
1. Zablokujesz sobie możliwość programowania, chyba że masz programator wysokonapięciowy 2. Taką obsługę można zrobić i na dwóch pinach - zamiast 3 pinów do demultiplexera używasz 1 pinu do napędzania licznika 3 bitowego 0 - 7 i dopiero to do demultiplexera. 4\/3!!
Wygeneruj z Timer-a przebieg prostokątny, przenieś jego "zero" by stał się przemienny względem masy i wpuść w elektrodę pierwszą. Pomysł bez głębszych przemyśleń : aby był przemienny , wystarczy podłączyć do 2 pinów w sterowanych w przeciw fazie np. poprzez przerwanie z licznika. Z tym, że nie będzie przesunięty względem masy, ale czy to potrzebne?
Łap. Napisałem w przerwie między... Zajmuje połowę mniej niż Twój a działa :D [syntax=vbnet]$regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 8 $swstack = 8 $framesize = 8 Config Portb = &B01110 : Portb = &B10001 Sw Alias Pinb.0 D1 Alias Portb.1 : Set D1 D2 Alias Portb.2 D3 Alias Portb.3 Config Timer0 = Timer , Prescale = 1024 , Clear...
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ć.
Urządzenie ma być zastosowane do licznika geigera, który sam zbudowałem. Po zliczeniu więcej niż 3imp/sec ma uruchamiać alarm który sygnalizuje zwiększone promieniowanie.
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ć....
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ą...
Dzięki, coś mi świta jak to może działać. Tylko dlaczego nie opisali tego w karcie katalogowej? 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? A jaka jest różnica pomiędzy uC Attiny13 a nowszym Attiny13A skoro akurat...
a nie lepiej byłoby po wykryciu końca impulsu użyć tajmera jako licznika i nie korzystać z przerwania, zresetować Wy i po osiągnięciu zadanej liczby którą ma odliczyć ustawić ponownie w stan wysoki wyjście?
'---------------------------------------... ' Solar v9 z pomiarami i watchdogiem '---------------------------------------... ' ustawiono napiêcia od³aczenia 1,17V ' napiêcie ochrony 1,45V ' led red lutowana do b1 ' opornik do b2 '---------------------------------------...
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...
Chodzi o to, ze 13-stka jest mala i by mi bardziej pasowała. Mimo tego, że nie umiem jeszcze programować to wydaje mi się ze to takie jakieś niezbyt fajne kiedy potrzebujesz tylko 3 wyjścia z procka a używasz układu który ma ich 14...dlatego chciałem zastosować attiny13, ale pojawia się problem bo nie mogę zastosować procedury zwiększania licznika na...
Odkopię temat bo mam problem też z Attiny13. Problem jest następujący: po skonfigurowaniu timera0 jaki licznik zaczyna on zliczać kolejne takty procesora z określonym preskalerem ale w momencie użycia procedur waitms lub if timer0 zatrzymuje się. Dzieje się tak podczas sprawdzania na sprzęcie jak i na symulatorze. Program powinien działać poprawnie,...
Dawno do niej zaglądałem i tylko patrzyłem po spisie treści na to co mnie akurat wtedy interesowało. Zawsze możesz kombinować z jakimś scalonym licznikiem, ale to układ się rozrasta, ja bym się nie bawił. Attiny13, kilka linijek kodu i masz problem z głowy, a cenowo wyjdzie podobnie, plus taki że dokładnie możesz sterować opóźnieniami. Nie wiem co projektujesz,...
http://obrazki.elektroda.net/9_125632037... Witam,dostałem zlecenie by zrobić proste powiadomienie ,które po wykryciu dowolnego dźwięku wydobywającego się z karty dźwiękowej ,komputera zadzwoni na dany numer telefonu. Oczywiście najprostszym rozwiązaniem było tu użycie gotowego telefonu tutaj Nokia 3510i i klikanie na dwa klawisze. Opis układu:...
Tak wybrałem odpowiednią płytkę w arduino. Zakupiłem attiny2313 bo wyczytałem że posiada 4 wyjścia pwm. Czy można prosić o podpowiedź jak zaangażować dwa liczniki, skoro pozostałe porty pracują na innym. Chętnie zgłębię wiedzę, a jeśli jest możliwość wygenerowania pwm programowo, to może także by się udało na attiny13. :)
Nie można poprosic uC, żeby w tym czasie zajął się czymś niepotrzebnym (czym?) ale równie obciążającym? Procesor nie wie co jest potrzebne - robi co mu programista nakazał kodem programu (czasem nieświadom co nakazał :-)). Po drodze od programisty do kodu maszynowego (czyli tego co wykonuje procesor) jest jeszcze kompilator i miewa wbudowane opcje...
Transoptor szczelinowy >> Attiny13 lub coś większego Attiny24 lub ardiuno mini >> wyświetlacz OLED 0,96". Zasilanie 3V lub akumulator 3,7V z kontrolerem ładowania. Można też na układach CMOS + wyświetlacze LED. W sklepach po 5zł są takie "liczniki kroków", można też wykorzystać
led zachowuje się dziwnie, bo jest włączona, gdy na jej pinie jest 0 Tak, z tego co pamiętam zapalamy podając na nią zero, jest pewnie w konfiguracji ze wspólną anodą. Mi już zapał trochę ostygł do tego LPC812. Nie widzę powodu, dlaczego miałbym jego akurat użyć zamiast 8-bit AVR. Brak sprzętowego PWM, jeden licznik, brak ADC... niestety plasuje go...
Nie widziałem wcześniej, że już na to wpadłaś. Twój się kalibrował tylko w jedną stronę a ten powinien w obydwie (ale nie testowałem) ;) [syntax=vbnet]$regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 2 $swstack = 0 $framesize = 22 Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim Mem_adc As Word , New_adc As Word Dim Krok As Byte...
Po pierwsze przy programowaniu pamięć Eeprom jest czyszczona, ale nie do zer a do FF FF FF FF i przy pierwszym odczycie świeżo zaprogramowanego mikrokontrolera program odczytuje C = 65535 ( dwa bajty dla Word FF FF ) więc zapamiętana wartość zawsze jest większa od ADC i od razu A = 1 Mógłbyś też przyciskiem kasować A = 0 Lepiej byłoby dodać też licznik...
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...
Musisz mieć licznik kroków. I dopasować go do sygnału z ADC. I jeśli sygnał z ADC jest większy niż ten licznik to silnik ma wykonać jeden krok w prawo a jeśli mniejszy to jeden krok w lewo. Swoją drogą to jest typowe zadanie dla serwa modelarskiego a nie dla silnika krokowego. Ale na silniku krokowym da się to zrobić.
Trochę to trwało za nim coś skleciłem Za mało czytałem bo mi coś nie wyszło kod wygląda tak [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include<stdio.h> #include<util... #define LED3 PB1 #define LED2 PB2 #define LED1 PB4 #define S2 PB0 #define S1 PB3 //definicja początkowej wartości timera #define timer_start...
Np. generator czasowy 1s na 555- dalej licznik 4017 resetowany przy podaniu napięcia - z wyjść diodami "zakodować" odpowiedni sygnał dla tranzystora wykonawczego i następnym wyjściem 4017 blokować generator. Można to łatwo zrealizować na mikrokontrolerze ATtiny13 lub podobnym , ale wymaga to znajomości podstaw sztuki programowania. :)
Znalazłem odpowiedź, więc się nią podzielę, bo być może ktoś akurat też ma podobny problem. Pomyślałem, że być może chodzi tu o jakieś zakłócenia odczytu stanu wejścia. Sytuacja wygląda jakby aktywne przerwanie powodowało jakieś trzaski... Konkretnie- program źle działa jeśli równocześnie włączone są przerwania i odczytuje się stan na wejściu. Spróbowałem...
Program zawiera tryb migania, który nie jest mi potrzebny. Czy wystarczy, że usunę tą część programu? [syntax=c]SIGNAL(SIG_ADC) { static uint16_t licznik; //zmienna pomocnicza dla trybu migania int8_t PWM=0; //zmienna pomocnicza do zapisania szybkości zmian współczynnika PWM int16_t rej=CURRENT-ADCW; //odczytaj różnicę prądu zaprogramowanego od wyjściowego...
Tak nie koniecznie bo na przykład attiny13 nie ma portu D, brakuje mu także rejestru GICR, Nie wiem dlaczego taki prescaler, który zresztą ustawia się w innym rejestrze oraz taka liczba do licznika 8 bitowego (0-255):[syntax=c]TCCR0A |= (1<<CS02);//Prescaler 256 OCR0A = 3906; // dla 1MHZ i przerwania co około 10ms[/syntax]Obsługę przerwania należy...
Warto by było tą konfigurację rozwinąć o jeszcze jedną linię (odświeżaną za każdym razem po wywołaniu przerwania): [syntax=basic4gl] Timer0= x 'lub Timer0=Timer0 + x 'opcja dokładniejsza [/syntax] gdzie x=256-licznik, "licznik" dobierasz w zależności od tego jak gęsto ma być wywoływane przerwanie. Przykładowo dla zegara 8Mhz i Prescale =64, aby uzyskać...
IMHO to najlepiej było by wykorzystać przełącznik halotronowy ( czasem są w chińskich wentylatorach np. na 12 lub 24V - ma 3 nogi ( V+, GND i wyjście zależne od tego czy jest w polu magnetycznym ). Uzyskasz przebieg prostokątny o częstotliwości zależnej od prędkości przepływu. Do tego jakiś mikrokontroler ( np. attiny13 ) + optotriak + triak. Ewentualnie...
Witam ! Tak tak rozumiem, poprzedni temat był niejasny. Tym razem spróbuje bliżej przedstawić sprawę. Otóż mam w warsztacie maszynę z silnikiem 7.5 kW, silnik przełączany jest z gwiazdy w trójkąt przez przełącznik. Czas rozruchu to około 5s. Postanowiłem zbudować czasowy przełącznik gwiazda trójkąt. Zrobiłem układ stycznikowy jednak dla mnie to mało......
Rozumiem że chodzi o maksymalną liczbę cykli pomiaru? (żeby kiedyś uciec z pętli - tak jak opisywałeś to w algorytmie) Tak. Poza tym pole dotykowe jak i port procesora nawet kiedy nie jest "dotykany" ma pewną pojemność przez co w końcu kondensator i tak zostanie naładowany. Cykle musisz dobrać doświadczalnie. Im większa pojemność kondensatora tym więcej...
Napisałem sobie taki programik sterujący oświetleniem w samochodzie. Napewno jest za bardzo skomplikowany i da się to napisać prościej, ale z moją wiedzą napisałem taki i chce go wykorzystać bo działa tak jak chciałem. Natomiast brakło mi już wiedzy aby żarówka nie gasła od razu a stopniowo przygasała. Znalazłem taką formułkę która gasi stopniowo żarówkę...
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...
Tak czy inaczej - zapamietujesz moment pierwszego kliku, i czekasz ustalony czas, mierząć czas np. na timerze (niekoniecznie przerwania, możesz po prostu monitorować jak się zwiększa licznik). Jeśli w tym czasie wykryjesz drugie naciśnięcie - od razu wykonujesz operację przewidzianą na dwuklik (dwumlask). Jeśli czas upłynie, a nie wykryto naciśniecia...
A czy można „migać” jedną diodą i równocześnie robić sekwencje na pozostałych 3 w At13A? Początkujący uczą się na zasadzie zaświeć, zrób opóźnienie, zaświeć następną, prosta metoda ale możesz zrobić tylko jedną rzecz na raz, mimo że mikrokontroler wykonuje miliony instrukcji na sekundę, w zasadzie żadnego użytecznego programu tak nie napiszesz. Trzeba...
Skopiowałem z postu 11 tego tematu A wygląda to tak Dodano po 4 Przy kompilacji wyskakuje mi Pass1 zamiast % zużycia pamięci (Flash used)
Próbuję napisać prosty programik który mierząc napięcie z czujnika wysteruje wskaźnik z samochodowego licznika. Do tego wykorzystuję ADC i 2xPWM czyli ATtiny13 jest idealny do tego celu. Jednak przy kompilacji całego programu wychodzi mi 400% danych i 400% pamięci. Kiedy próbuję kompilować kod fragmentami (oddzielnie odczyt ADC i oddzielnie funkcję...
Pytanie kolegi jest dość złożone pierwsza różnica sygnał taktujący T0 może zostać wstępnie podzielony przez dzielnik więc aby otrzymać 1 sekundę należy najpierw policzyć ile cykli zegara należało by odmierzyć wiadomo że wartość ta musi być mniejsza od pojemności licznika T0 . Problem w tym że na T0 nie uzyskasz przrwania co sekundę dla kwarca np 8MHz...
Witam Ostatnio usiadłem trochę do Bascoma i coś naskrobałem, oto wynik mej pracy: $regfile = "attiny13.dat" $crystal = 9600000 Config Timer0 = Timer , Prescale = 8 Enable Timer0 : On Timer0 Prztimer0 Enable Interrupts dioda Alias Portb.3 Config Rc5 = Portb.4 Dim dioda As Byte Dim Licznik As Byte Do Dim .... Getrc5.... Command = Command ..... If Command...
Mateusz31 chyba jesteś pierwszą osobą która go wykonała ;) Napisz ile pokazuje gdy nie płynie żaden prąd i brak napiecia. Czy masz 0.00 czy może ten wynik się trochę wacha? Czy zdarza się że licznik się "przekręca" poniżej 0.00 i wchodzi na 9.99? Ten drugi program prawdę mówiąc napisałem o wiele później, na kolanie, i sprawdziłem tylko tak z grubsza...
A dużo bardziej by się skomplikował układ jakbym chciał podłączyć 12 diod by przebieg był identyczny ? Możesz wykorzystać przecież dwa takie liczniki jak autor projektu... Swoją drogą też mi się podoba, że autor wykorzystał do migania coś innego niż np. Attiny13, którego cena obecnie jest większa niż kiedyś. Sam też bardzo lubię pchać gdzie popadnie...
Witam. Mam problem z symulatorem semafora. [syntax=c] /* Symulacja Semafora */ /* Krzysztof Bednarczyk (prog.) & Lukasz Domanski (elek.) */ /* uklad ATtiny13 1MHz */ /* * - faza wlaczona */ /* x - faza mrugania */ /* WLACZANIE BIBLIOTEK */ //#include <stdio.h> #define __AVR_ATtiny13__ 1 //#include <stdlib.h> // obsluga random #include...
Witam. Próbuję powoli nauczyć się pisania w ASM prostych programów na ATTINY13. Mam jednak problem z obsługą przerwań. Nie wiem, czy przyczyną jest błąd w programie, czy też nie umiem zasymulować przerwać w tym symulatorze. Otóż w pewnym miejscu programu usypiam uP rozkazem SLEEP (wprowadzam uP w Power Down). Chcę go wybudzić przerwaniem od INT0, (czyli...
Witam Zacząłem nowy miniprojekt i wyszło, że najlepiej byłoby użyć dwóch linii PWM. Ponieważ mam pod ręką sporo ATTiny13, postanowiłem wykorzystać ten typ. W dokumantacji napisano i to chyba nawet kilka razy, że ATTiny13 posiada dwa niezależne komparatory. No to napisałem: #include <avr/io.h> #include <stdint.h> #include <avr/interrupt.h>...
No widzisz musisz się nawrócić i uwierzyć. Wiara czyni cuda. :D A tak na poważnie układ już działa , jest elektrycznie poprawny. I na pewno chcielibyście wiedzieć co było nie tak w programie ? Jeden mały parametr określający kierunek zliczania licznika a mianowicie : zamiast Compare B Pwm = Clear Down użyłem Compare B Pwm = Clear Up i zaczęło działać....
Trudno zrozumieć co chcesz zrobić. Jednak Watchdog powinien wybudzać mikrokontroler (poprzez RESET) z głębokiego uśpienia. To oczywiście wyzeruje różne zmienne (jeżeli są inicjalizowane). Powinno się po RESET sprawdzać co było źródłem tego RESETu tj. POR czy właśnie Watchdog. Jest rejestr z jakiego można to odczytać. Kolejna kwestia, to chyba w main()...
Witam, Programik, który wklejam poniżej idealnie funkcjonuje na ATmega8 a na Tiny13 już nie... Może ktoś mi podpowie dlaczego? Siedzę na tym już trochę i nie wiem co jest grane. Jakie zadanie ma poniższy projekt. Po naciśnięciu przycisku zmienia stan przekaźnika na załączony lub wyłączony w zależności od tego jaki był poprzednio. Dodatkowo zmienia kolor...
Witam, Opracowałem bardzo prosty sterownik diody LED RGB w obudowie 5050. Układ losuje kolor, płynnie przechodzi do niego, wyświetla przez jakiś czas, następnie cykl się powtarza. W celu urozmaicenia układu dodałem diodę led białą, czyli mamy w zasadzie RGBW. Sterowanie odbywa się 4-kanałowym programowym generatorem PWM, z użyciem korekcji jasności....
Jutro jeszcze sprawdzę jak będzie działać Attiny 45. Może coś uda się osiągnąć. Zrobiłem trochę testów na attiny13 i po nich jestem bardzo sceptyczny co do użyteczności funkcji micros() w takim zastosowaniu jak metoda użyta w twoim szkicu. Mam obawy że na attiny45 problem może być ten sam, tylko nieco mniejszy, z powodu możliwości wyższego taktowania....
Witam Na wstępie przedstawiam schemat zagadnienia : https://obrazki.elektroda.pl/5168929500_... Mikrokontroler ATtiny13A Zasilanie Vcc +5V; LED1_ dioda zielona = sygnalizacja zasilania; LED2_ dioda żółta = sygnalizacja stanu pracy układu w tym że: stan spoczynku/oczekiwania = miganie diody co 1 s; stan aktywny = dioda "zapalona";...
Witam, T1 w ATmega8 rzeczywiście ma rozdzielczość 16 bitów, ale PWM sprzętowo uzyskasz tylko 10 bitów. Można jednak zwiekszyć rozdzielczość PWM o 1 lub 2 bity programowo - ostatnio to właśnie udało mi się zrobić :) tylko, że w procku ATtiny13, zwiększyłem PWMa z 8 do 10 bitów - programowo w przerwaniu od licznika, który obsługiwał PWMa. Idea jest taka,...
Nadal nie wyjaśniasz szczegółów, nie mam pojęcia na czym polega "sterowanie serwem i sterownikiem do danych programów". Nie wiem też, czy jeżeli operator trzyma przyciśnięty przycisk, a silnik wykonał obrót 360 stopni, to ma się kręcić dalej, czy zatrzymać? Jak ma silnik reagować jeżeli operator wciśnie przycisk kilka razy, jakie parametry ma silnik...
Faktycznie proste, tylko duże układowo - generator, dzielnik, licznik 4 bitowy góra/dół, dekoder BCD/Dec z drabinką, logika jakieś bramki) zatrzymująca zliczanie w skrajnych wartościach. Wyszło 4-5 scalaków. Na stabilności mi nie zależy. Myślałem zmieścić się czymś w obudowie DIP8/SO8 i "pająka" zrobić. Może przysiądę na szybko do tego ATtiny13 i zapoznam...
Mam w domu kilka świeczek podobnych do tych z obrazka https://obrazki.elektroda.pl/8153128500_... Po czasie prawie wszystkie przestały działać - zniszczone ścieżki na płytce od wilgoci, przerdzewiałe styki włącznika. Dodatkowo świece mają tylko ruchomy płomień, a świecą statycznie. Nie było też żadnego czujnika światła, tylko ręczne...
W tabelce 55 strona 118, są dane które trzeba wysyłać. I na ten przykład dla sygnaturki, komenda to: SDI 0_0000_1000_00 SII 0_0100_1100_00 Te zera na początku i na końcu traktuje po prostu jako "puste" takty zegara, ustawiam piny w dół i cykam. Nie jestem pewien też czy między kolejnymi danymi z tabelki robić jakieś odstępy, czy cokolwiek, po prostu...
Dzięki za zainteresowanie tematem i odpowiedź! Niestety w dalszym ciągu mam problem... Obejrzałem temat z podsuniętego linku- jak sądzę to jest dokładnie to o co mi chodzi, ale chętnie dowiedziałbym się czegoś więcej na ten temat. Nie chciałbym tu za bardzo zaniżać poziomu... ale czy można prosić o podsunięcie wskazówki co się tu (w kodzie) dzieje?...
Witam, jeśli chodzi o programowanie uC to jestem początkujący. Mam problem z programowym pwm na attiny13a. Mój program bazuje na programie M. Kardasia z książki. Na atmedze16 działał dobrze, ale jak przerobiłem go na attiny13a wg noty katalogowej, to dioda nie świeci. Wiem, że na pewno coś przekręciłem. Jeśli chodzi o podłączenie do programatora i samego...
Jestem w trakcie wymyślania programu do tego komfortowego kierunkowskazu Jak ktoś chce sobie popróbować to zamieszczam kod w Baskomie. PS Nie mam pewności czy działa bo jeszcze nie miałem okazj przetestować [syntax=basic4gl]$regfile = "attiny13.dat" $crystal = 8000000 $hwstack = 32 $swstack = 8 $framesize = 16 Inprawy Alias Pinb.1 Inlewy Alias Pinb.2...
Przy pomiarze małych częstotliwości mierzy się okres przebiegu. Zbocza(/e) sygnału wejściowego (INT0) uruchamiają i zatrzymują licznik. Wynik liczenia przeliczasz na częstotliwość. To tylko ogólny opis, szczegóły albo w sieci albo ogarniasz sam.
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, Piszę program na ATtiny13A, aby działał jak licznik mod 4 (piny PB0 i PB1), zmiana wyzwalana zboczem opadającym na PB3. Rozwiązanie opiera się na przerwaniach. PCINT3 to obsługa "przycisku" -> naciśnięcie powoduje uruchomienie timera (ustawienie adekwatnego przerwania). Obsługa przerwania timera zwiększa licznik przepełnień - po ok2 sek wyłącza...
Witam. Od razu mówię, że działam na ATtiny2313. Chciałbym przedstawić kod, nad którym głowię się już dość długo i ciągle nie działa, kod jes banalny a jak to mówią diabeł tkwi w szczegółach, więc może ktoś z forumowiczów może mi pomóc. Kod wygląda tak: 'Program powinien (wlasnie! - powinien) pobierac sekwencje przerwan 'z odpowiednich portow...
BOD ci tylko zagwarantuje, że procesor nie będzie działał poniżej określonego zasilania. Problem w tym, że licznik pracy nie jest 8 bitowy, lecz dłuższy. Co będzie jeśli procesor przestanie działać pomiędzy zapisaniem pierwszega, a drugiego bajtu? To można ominąć robiąc odpowiedni algorytm zapisu. Istotnie najtańszym rozwiązaniem może być zastosowanie...
Witam. Napisałem funkcję losującą 24bitową zmienną, ale program zawiesza się podczas jej wykonywania. Nie mam już pojęcia co może być źle. [syntax=c]/* * main.c * * Created on: 01-04-2013 * 15:05:56 * Author: miszczo */ #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/pgmspace.h> #define TIME...
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...
Tak jak pisałem wcześniej poczytałem i stworzyłem takie coś: Dodano po 26 Już doszukałem się błędu. Udało mi się odwzorować jak są zaprogramowane te moduły. Dodano po 4 Kwestie przycisków zrozumiałem, tylko mam problem by zrobić tak że po naciśnięciu przycisku dioda się zaczyna rozjaśniać i dochodzi do 100% a gdy znowu nacisnę przycisk dioda zaczyna...
Masz błędne obliczenia. Przerwanie następuje gdy licznik się "przekręci" i do obliczeń należy brać wartość o 1 większą, ale to i tak nie będzie dokładnie ponieważ skok do procedury przerwania też zajmuje minimum 4 cykle zegara. Lepiej przejdź na PWM na PB0 lub PB1.
Chciałbym, żeby jeszcze ktoś sprawdził przykładowy kod dla tego układu, i napisał, czy ostatecznie będzie on działał bez żadnych błędów. inicjalizacja: ;ustawienie portów 3 i 4 jako porty wyjścia sbi DDRB, 3 sbi DDRB, 4 ;ustawienie stanu niskiego na portach 3 i 4 (diody nie świecą) cbi PORTB, 3 cbi PORTB, 4 ;ustawienie stanu początkowego rejestrów kontroli...
Na wstępie przedstawię założenia projektu. Półelektroniczny układ zapłonowy w Galancie V6. Komputer wysyła sygnały o określonej długości do power tranzystora w aparacie zapłonowym z kopułką i cewką. Chcę się pozbyć kopułki. Komputer silnika ustala położenie wału na podstawie sygnałów TDC. Na filmie widać oba sygnały skorelowane ze sobą: https://www.youtube.com/watch?v=YrRjw07-...
No dobra, żeby nie być gołosłownym przytoczę tu fragment mojego kodu (wycięty z całości i okrojony tylko do zapalania i gaszenia diody) rozpoznającego przycisk krótki/długi. Do zaadoptowania go na inny procek nie powinno być problemu. Zaletą jest, że jest dość oszczędny (jestem maniakiem optymalizacji algorytmów - pozostałości z przeszłości ;-) ) i...
Witam. Mam dość nietypowy problem, otóż napisałem programik na attiny13 w Code Vision, który ma płynnie zmieniać kolory na pasku LED, lecz program nie chce działać jeśli chcę podwoić czas rozjaśniania się i gaśnięcia koloru zielonego. Po zmianie czasu, program zatrzymuje się na etapie rozjaśnienia się do maximum zielonego i czerwony już nie gaśnie (cały...
Jak procek ma 32KB ROM to licznik przy programie o rozmiarze 19KB nie może dojść do końca. Chyba że w jakiś sposób zmusisz go do tego programowo. Na Asemblerze AVRów się specjalnie nie znam. Ale RESET może nastąpić chyba programowo, masz gdzieć błąd w programie który resetuje system. Może przepełniasz stos lub pamięć RAM. Albo masz gdzieś skok po wektor...
janbernat - chcę uzyskać podobne urządzenie lecz oparte o ATTiny13. Stąd wykorzystanie tylko jednego timera, który będzie sterował modulacją PWM programowo a w wolnej chwili sprawdzał stan położenia (długości impulsu) serwa. Finalnie wszystko będzie chodzić na 9,6MHz lecz z uwagi na testy i podłączony wyświetlacz (i to bez linii RW) aktualnie jest 1MHz....
Wpisanie w watchdoga każdej innej liczby niż 2048 czyli 2 sekundy nie daje żadnego rezultatu. Takie kwiatki to tylko w sprytnej wiedzy użytkowników Bascom wyskakują... W rejestrze Watchdog-a, który jest 8-bitowy nie wpiszesz większej liczby niż 255. Można jedynie ustawić konkretne, zaprojektowane z góry przez twórców mikrokontrolera czasy licznika....
Eksperymenty związane z EKG Od dawna uważałem za interesujące rozważania o własnych systemach EKG. Szczególnie interesują mnie rozwiązania niedrogie i łatwe w konfiguracji. W tym artykule przedstawiono kilka sposobów wykorzystania tej techniki. Ale najpierw coś podstawowego: Ze względu na bezpośredni kontakt elektrod EKG z ciałem, wszystkie elementy...
https://obrazki.elektroda.pl/6672510400_... Motywacja Od kilkunastu lat używam poczciwego tostera, który wygląda jak powyżej (jednak poradnik może być użyteczny też i dla innych modeli o podobnej budowie/wyglądzie), ponadto ma ciekawy walor dydaktyczny: Dawno, dawno temu wpadłem na szatański pomysł umycia go pod bieżącą wodą. Od tego...
attiny13 software attiny13 bascom attiny13 timer
cewka briggs iskra turbina pompy myjącej zabezpieczenie bloków
attiny13 licznik zwiększanie napięcia sterownika roweru
Działanie grzałki w bojlerze przy skraplaniu wody Demontaż silnika wspomagania Toyota Auris 1.4 D4D