W ATTiny timer chyba przejmuje kontrolę nad IO, więc włączenie/wyłączenie odbywa się z poziomu konfiguracji timera. CZyli robisz to tak - np. ustawiasz inny timer, aby generował przerwanie co 1s, a w obsłudze tego przerwania w zależności od potrzeby konfigurujesz timer generujący PWM. Chyba to najprostsze rozwiązanie.
Ponieważ nie pokazałeś programu na ATtiny i nie podajesz jak RPI resetuje timer watchdoga, stąd poniższe przypuszczenia. Zapewne RPI jednym z pinów jest połączony do ATtiny by resetować timer. Prawdopodobnie w programie ATtiny sprawdzasz stan tego pinu i odpowiednio reagujesz zerując timer watchdoga. Jeśli pin ten pozostawiasz jako wejście niepodłączony...
Polecam jak najszybciej odstawić ten program - bo dzięki niemu na prawdę można sobie procka zablokować i to nawet będąc zaawansowanym ;) Może sobie kolega pobrać program MkAvrCalculator , który z tym prockiem będzie działał w 100% za free a w nim zobaczyć jak wygląda np zakładka "Fusebity uproszczone" do konfiguracji taktowania. Ale też inne zakładki....
No to przecież program powyżej obsługuje dokładną regulację. W pętli głównej przed LOOP dopisz np WAITMS 100. Wczoraj o tym zapomniałem. Więc procesor zbyt szybko zwiększa/zmniejsza szybkość i wychodzi ci to tak, jakby silnik miał tylko 2 prędkości. Użycie waitms jest prymitywne ale nie wiem co twój program ma jeszcze robić więc idę na łatwiznę i nie...
Wg http://www.nongnu.org/avr-libc/user-manu... musisz zmienić nazwę wektora przerwań na TIM0_OVF_vect Porównaj sobie datasheet attiny13 z datasheetem atmegi8 żeby skonfigurować timery. Do skonfigurowania timera w attiny służą rejestry TCCR0A i TCCR0B, w atmedze8 jest tylko TCCR0 http://www.atmel.com/images/doc2535.pdf http://www.atmel.com/Images/Atmel-2486-8...
Możesz czytać timer w przerwaniu INT lub PCINT
Megi nie miałbym czym zaprogramować .... Tym samym programatorem co masz do ATtiny - pod warunkiem że to szeregowy programator, choć równoległym też się da.
(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...
... choć nie wiem jaka jest różnica między programowy pwm a "sprzętowym" pwm. Taka jak obsługa oddziału banku przez jedną osobę (kierownika) w stosunku do obsługi przez kierownika i kilku pracowników. W pierwszym przypadku może się uda, ale na wiele więcej kierownik czasu mieć nie będzie lub nawet nie wyrobi się z pracą. W drugim przypadku na pewno...
(...)chodziło mi o to, że po co stosować w takiej sytuacji zewnętrzny układ RTC i budzić mikrokontroler przerwaniem jak może on sam się budzić od wewnętrznego przerwania timer'a i obsługiwać (...) Zgodzę się, ale gdy mikrokontroler ma dedykowany do tego celu timer (np timer 2 w atmega) taktowany kwarcem "zegarkowym", a attiny takiego timera nie ma.
Najlepiej odpowiadalby mi gotowy uklad ktory by to realizowal. No ale jesli nie ma takiego to mysle o zaprogramowaniu jakiegos ATTiny. Pozdrawiam
Hej, praktycznie każdy jaki znajdziesz, będzie się nadawał (nie licząć tych, które się nie nadają). Potrzebujesz 16 bitowego timera i kilku pwm, które znajdziesz w tanim attiny. Nie używałem arduino i wybrałbym napisanie tego w C. Płytkę którą opisałeś też zaprogramujesz w C.
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>...
Zobacz co się dzieje: TCNT1 ma wartość 65535 i za chwilę nastąpi przerwanie, wykonywana jest instrukcja timer1_=TCNT1 i w tym momencie następuje przerwanie. TCNT1 po powrocie ma mniejszą wartość ale jest już po herbacie - licznik==1 warunek po if jest spełniony PORTB=0 i czekamy na następne przerwanie. Dlaczego 20 cykli jest dobrze? Bo przerwanie musi...
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.
OK, no to następne podejście z nadmiarowym kodem testowym odliczającym w kółko na ATmega8515 zamiast ADC - wyświetlanie bez zarzutu. Co do tego dziwnie wyświetlanego zera, to może masz zamienione a z g, b z f itp. W tej wersji łatwiej zapanować nad częstotliwością odświeżania segmentów - zbyt duża skutkuje podświetlaniem sąsiednich cyfr, zbyt mała -...
Ja osobiście jestem przeciwnikiem nadużywania makr, czasmai są przydatne, ale jak pisał (at)gaskoin specyficzne hardwarowo fragmenty kodu lepiej przenieść do oddzielnego pliku i stworzyć coś na wzór prostego HAL. O ile makra jeszcze mogą się przydać np. do zmian stanu pinów IO, czy operacji, które w kodzie wykonywane są często, o tyle wydaje mi się,...
Mam posciagane manuale i przeczytalem. SRAMu ATtiny ma 64B Flash ma 1kB. ATtiny ma 1 Timer 8-bitowy z 2 kanalami PWM wiec tez powinno byc OK. Wiec jak zrobic zeby sie zmiecilo i nie wywalal mi errorow ??
Odpowiedź szukaj na stronie producenta www.atmel.com a dokładniej: http://www.atmel.com/dyn/resources/prod_... Generalnie atmel podaje sporo informacji dotyczącej wykorzystania nowych układów w zastępstwie wycofanych z produkcji i wymaganych zmian. Jedynym co trzeba zrobić to poszukać i poczytać ;) http://www.atmel.com/dyn/products/app_no...
Atmel ma noty aplikacyjne poświęcone budowie ładowarki do aku z gotowymi kodami. Na stronie Atmela masz parametric table, można sobie to też wrzucić do excela i dowolnie filtrować. Zapewne najlepszym rozwiązaniem byłby ATTiny z PWM w nazwie, ale z ich zdobyciem może być problem. Każdy nowszy ATTiny ma tez poprawiony PWM i często PLL, tak, że timer może...
Musisz zaznaczyć cały tekst który chcesz pokazać jako kod, a następnie zaznaczyć napis Code $regfile = "attiny2313.dat" $crystal = 8000000 'kwarc 1MHz $prog &HFC , &HE4 , &H9F , &H00 ' generated. Take care that the chip supports all fuse bytes. Config Timer1 = Timer , Prescale = 64 'timer1 jako licznik 15536 Config Int0 = Rising 'detetor zera...
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]
Nie, moduł nie ma timera. W wolnej chwili jakiegoś attiny tam wcisnę i zwiększę troszkę możliwości lampki właśnie o łatwo programowalny timer i dimmer :)
Natomiast jeżeli zamienię OCR1A = 3906,25; wszystko jest ok Jesteś geniuszem jeśli robisz takie sztuczki! Myślę, że ustawienie preskalera na 36,571428571 powinno rozwiązać Twój problem. Albert
Czego oczekuje NAZE Ci niestety nie powiem. Poszukaj informacji w manualu. Po wyłączeniu nadajnika dioda przy attiny powinna zgasnąć, bo brak PWM to brak PCINT, a tam jest załączana. Możesz dopisać symulację dodatkowych kanałów i sprawdzić, czy coś to pomoże. Dodaj sobie np. drugi output compare do tego licznika, który już masz. Jak zliczysz 6 wyłączeń...
Dla tiny oczywiście jest: $regfile="attiny2313.dat" W funkcji czas zastosuj: Timer1 = Timer1+3036 zamiast Timer1 = 3036
Można wywołać przerwanie TIMERA, w trybie PWM, w momencie przeładowania licznika, a więc gdy licznik przekroczy ustawioną dla danej rozdzielczości wartość maksymalną. Musisz tylko włączyć przerwania dla danego Timera. Oczywiście częstotliwość wywoływania tego przerwania jest ściśle powiązana z ustawieniami PWM (jest równa częstotliwości działania PWM)....
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...
Inkrementacja jest wykonywana po obiegu pętli. Racja, chyba mi się mózg zapętlił :)
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...
Moim zdaniem błąd jest w zupełnie innym miejscu. Załącz cały kod.
http://obrazki.elektroda.pl/7214276300_1... Pilot oparty na projekcie http://www.bigmike.it/ircontrol/ jednak zbudowany na mniejszym attiny13, myślę że można by zastosować dostępny na Allegro attiny4. Zasada działania jest dość prosta. Po uruchomieniu podzespołów (timera i przerwań) attiny przechodzi w tryb power-down, w którym oczekuje...
Jeżeli chcesz wykorzystać Watchdog jako rodzaj timera, to w rejestrze WDTCR powinno się ustawić bit WDTIE. Ponadto za pomocą bitów WDP3...WDP0 należy ustawić prescaler Watchdog'a. Z tego wynika co jaki czas będzie przerwanie. Jeżeli np. potrzeba 8 s, to ustawić należy WDP3 i WDP0, czyli powinno być: https://obrazki.elektroda.pl/1370064900_...
Po pierwsze nie: TCCR0B |= (1<<CS00) | (1<<CS01); a : TCCR0B =(TCCR0B&0xf8) | (1<<CS00) | (1<<CS01); Kolego zastanów się na drugi raz zanim udzielisz odpowiedzi bo niestety ale bzdury piszesz na maxa i na dodatek nikt tego nie zauważa. Nie znasz i nie umiesz się w C posługiwać operatorami dwuskładnikowymi ??? toż operacja:...
ATtiny to tylko trochę odchudzony mega. Timery też ma podobne, a głównie tego potrzebujesz do OW. Z czym konkretnie masz problem?
Ewentualnie przy większej liczbie sygnałów - przerwania INT lub PCINT. Ale to już bardziej programowy pomiar, przez co mniej dokładny ale dokładniejszy niż w przerwaniu od timera.
Wstaw kod bo schemat blokowy wydaje sie poprawny.
A co ten mikrokontroler miałby robić? Jeśli tylko sterować lewo/prawo + hamowanie i odbierać IR to oba mikrokontrolery będą ok. Jeśli sterowanie silnikiem będzie jakoś bardziej skomplikowane to warto wybrać kontroler posiadający troszkę bardziej rozbudowane timery - nowsze ATTiny lub inne.
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ć...
Regulator PWM by się przydał: code at 0000h ljmp start code at 000Bh ljmp timer code at 0100h start: mov TMOD, #00000001b mov TH0, #11101010b mov TL0, #01111001b setb TR0 setb ET0 setb EA mov R0, #0d mov R1, #85d mov R2, #170d mov P2, #11111111b mov a, #255d poczatek: inc a mov b,R0 cjne a, b, dalej1 clr P2.0 dalej1: mov b,R1 cjne a, b, dalej2 clr P2.1...
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 ,...
A kto niby zatrzymuje i restartuje timer w Twoim programie?
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...
Na razie patrzyłem tylko w dokumentację Bascoma... dokumentacje tego procka ma coś koło 250 stron :/ Jeśli już wiesz ogólnie jak działają avr-y , to wtedy dokumentację czytaj wybiórczo , czyli tę część która Cie interesuje ;) Z dokumentacji Bascoma wynika, że stosując polecenie config timer nie da się ustawić prescalera dla trybu PWM... Między innymi...
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...
Serwo steruje się sygnałem 50Hz. Czyli 20ms ma okres. W czasie tego okresu ma być stan wysoki zależnie od położenia od 1 do 2ms. W związku z tym ogłaszam, co następuje: 1. Twoja eliminacja drań styków niszczy całą czasówkę. 2. Żeby serwo trzymało dane położenie, musi dostawać sygnał o odpowiednim wypełnieniu cały czas. Podkreślam cały czas.
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 ......
a to już zupełnie inna historia... Generalnie: nie liczyć zmiennoprzecinkowo - za mały procek - nie pomieści biblioteki. Trzeba liczyć stało pozycyjnie, np tak: x * 0.83 = (x * 849 ) / 1024; // czyli x * 0.84 = (x * 849) >> 10; jak masz zmienną a powiedzmy z zakresu (0.0 , 1.0), to mnożysz ją tak, żeby była z zakresu 0...1023 i zamiast x *a masz (x...
Nie śmiga w ten sposób, że na wyjściu (Pinb.1) nic się nie zmienia. Czy w ATTINY2313 wyjściem Pwm1a nie jest przypadkiem PB3 / 15 nóżka? Nie mam tutaj dokumentacji pod ręką. Dopisz sobie jeszcze: Set Portd.0 Set Portd.1 gdzieś przed pętlą Do..Loop. Powodzenia i wytrwałości życzę! :) Andy
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
Czyli zamaskowałeś jeden błąd innym błędem i na pierwszy rzut oka rozwiązanie sprawia wrażenie działającego, a drugi raz już lepiej nie rzucać. Teraz czekamy na wątek pt. "zegarek na ATtiny się późni".
Witam, niestety ale chyba coś jest nie tak? Na wstępie należałoby wyjaśnić że nie ma czegoś takiego jak "automatyczne przeładowanie timera" (reload/load timer1 powiedzmy). Termin ten jest związany z procedurą konfiguracji timerów występującą tylko w trybie "Normal", gdzie każdorazowo początkowa wartość timera musi być wpisana przez processor. Taka...
Witaj, Brakuje jeszcze paru informacji: 1. deklaracji zmiennej licznik 2. gdzie definiujesz zegar ? 3. czy prawidłowo masz ustawione fusebity?
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.
Niestety symulacja programowa liczników w trybie FastPWM jest nieadekwatna do tego co rzeczywiście robi procesor. Trzeba uruchomić w docelowym układzie lub przez JTAG ICE (ale to są koszta).
Czyli zwykły prosty miernik częstotliwości z jej porównaniem przy pewnej wartości - bez problemu się to na jednym timerze realizuje... Zobacz tu: [youtube]http://www.youtube.com/watch?v=... Złapałem tym nawet 40tys. obr/min :) Co prawda to przykład na attiny44, bo obsługa wyświetlacza i takie tam duperele zabierają jednak piny i pamięć...
Tak obliczenia są w porządku. Wartość do TIMSKu możesz wgrać taki sposób jak napisałeś ale ładniej jest: ldi r16, (1<<TOIE1) out TIMSK, r16 Pamietaj że po wywowałniu procedury obsługi przerwania musisz odłożyć na stos wskażnik Z. W przerwaniu musisz załadować od nowa TCNT1. Procedure przerwania zawsze koczymy instrukcją reti. A co do wartości...
ATtiny13 - posiada timer i tryb CTC oraz przerwanie od INT0 oraz sześć portów I/O (wyczytałem z dokumentacji, osobiście nie miałem kontaktu). Mała poprawka rejestrów do obsługi przerwania (INT0 oraz ustawienia Timera) pod ATtiny 13 i powinno ruszyć. Jeżeli popełniłem błąd proszę mnie poprawić.
Jeśli mam na płytce złącze ISP to po za programowaniem piny do niego podłączone mogą również służyć jako normalne wejścia/wyjścia tak? Z góry dzięki za odpowiedzi. Tak.
Spacja w linii polecenia jest traktowana jako separator. Kompilator nie może znaleźć pliku o nazwie "with" - masz to jawnym tekstem. Nie używaj nazw plików ze spacjami.
Zmień deklarację zmiennej flaga_swieci na taką: volatile unsigned char flaga_swieci; powinno pomóc.
Witam. Na początek napiszę że to ma być mój pierwszy program napisany w tym języku i pierwszy kontakt z mikrokontrolerami. Nie mam pomysłu jak się zabrać za uruchomienie jakiegoś "zegara". Wydaje mi się że wtrącenie w pytaniu „jakiegoś zegara” wprowadza ludzi w błąd. Z dalszej części wynika że raczej potrzebujesz obsługi TIMERA wbudowanego...
Ciąg "Timer0" faktycznie nie zmienia koloru, ale jest to tylko błąd kosmetyczny. Po kompilacji nie ma żadnych błędów, zaktualizuj sobie program do jakiejś nowszej wersji. A jeśli będą jakieś problemy, to polecam ręczny wpis do rejestrów licznika, z takimi "rzadziej spotykanymi" prockami zwykle są jakieś kwiatki :)
Z tego prościej korzystać: http://www.nongnu.org/avr-libc/user-manu...
Albo Config- albo str.112 pdf.- i poprzednie i następne. Polecam to drugie rozwiązanie. "tak by była możliwość dodania czasu martwego. " Nie da się z automatu. Mają to ATtiny 25/26/45/85- o ATMega nic mi nie wiadomo. W ATtiny25/45/85 znajduje się układ DTG-Dead Time Generator- to o co Ci chodzi.
O co mi dokładnie chodzi: W helpie Bascom jest napisane, że w przypadku kości 8535 mam do dyspozycji preskalery 1, 8, 32, 64, 128, 256, 1024, a dla kości M103 1, 8, 32, 64, 256, 1024. Ja zaś posiadam kość M32 i w PDF, który dotyczy tego mikrokontrolera jest tabelka na 127 stronie, która zawiera w sobie jakby wykaz dostepnych częstotliwości, ktorymi...
Zobacz czym można wyzwalać ADC w tym procku. W wielu przypadkach można ADC wyzwalać zboczem timera. Jeśli chcesz robić większe magię przy pomocy timera i ADC, to raczej użyłbym jakiegoś nowszego ATTiny/ATMega z event system.
Timer, który dodałeś generuje najwyraźniej przerwania które blokują przerwania z timera od odliczania czasu. Nie wiem czy sie da ustawić priorytety przerwań w ATtiny, ale jeśli sie da to daj temu o odliczania czasu wyższy priorytet żeby go ten drugi timer nie wykluczał czasem. Myśle że powinno pomóc. Powodzenia.
Przerwania i Timery to rozwiązanie idealne i książkowe, na początek, ale tylko do nauki możesz zrobić na Wait'ach, ale nie polecam tej metody bo prowadzi do złych nawyków...
Szukam i potrzeba konieczna schemat lub sewisowka dla tunera /timera AT M77TL -nie wersja L. Wersja TL posiada czujnik sterowania pilotem . Bede uzupelnial zdjeciami. Wersja z czarnym panelem obslugowym L posiadala srebrny .
To co masz w komentarzu w tej linii to nieprawda: [syntax=c]TCCR0B |= (1 << CS01); // Start timer at Fcpu/64[/syntax] sprawdź w nocie jaki w rzeczywistości masz prescaler. Inna sprawa że przy takim dzielniku przerwanie powinno zgłaszać się częściej a nie rzadziej. Proponuje ci na spokojnie jeszcze raz wszystko sprawdzić.
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...
Co do kwarcu to definiujemy go zawsze, niezależnie od tego czy proc pracuje na zewnętrznym, czy na wewnętrznym, bo to jest informacja dla kompilatora, wg jakiej wartości ma wyliczyć czasy dla różnych instrukcji. Jeżeli to jest "nówka sztuka" to pracuje na wewn. 1MHz. Jak sam zauważyłeś, instrukcja "Loop" powinna znajdować się po ostatnim "Endsub", ale...
Po dalszych zmaganiach udało się wymusić 100Mb na sztywno ale nadal bez autonegocjacji. Na podobnej płytce firmy Olimex z nieco innym PHY działa bez problemu, tamtą od Kamami udało się zwrócić. Jeden problem z płytkami Olimex to grzanie się rezystora który montują jako sztuczne obciążenie MPS (Maintain Power Signature) by aktywne PoE się nie wyłączało...
Przykład masz dokładnie w tym linku co podałeś ;) Tyle że zamiast tranzystora NPN dajesz mosfeta i bez tego rezystora w bazie (bramce). Bramke podpinasz pod pin na którym generujesz PWM i tyle. Mosfetów masz na pęczki. Zresztą możesz nawet zostawić taki układ jak masz na schemacie w linku. Jak masz problem z dostaniem tego attiny to możesz użyć attiny13....
1. Ustawienie dzielnika częstotliwości (prescallera) włącza licznik. 2. Po wystąpieniu przepełnienia licznik automatycznie liczy od zera. 3. Tak, przerwania są globalnie wyłączane na czas obsługi któregoś z nich.
Witam Serdecznie, Chciałbym dobrać mosfet do mojego schematu. Jest to timer oparty na Attiny 2313 a mój problem brzmi mianowicie: Mam drut oporowy, o oporności 4 ohm na 1 metr. Pociąłem go na odcinki 1 cm, a wiec na odcinku 1 cm ma oporność rzedu 4/100 = 0,04 ohm. Z prawa Ohma wyliczyłem, że prąd który przepłynie przez opornik jest : I= U/R a więc I=...
Używanie delaya jest niemądre (marnujesz prąd). Zrób coś takiego (pisane z palca, więc może wymagać poprawek). [syntax=c]#include <avr/interrupt.h> #include <avr/sleep.h> unsigned long int timer=0; ISR(TIMER0_COMPA_vect) { timer++; } ISR(ISR_from_pin)//check which in doc { timer=0; } int main(){ config_timer(); config_sleep(); config_ports();...
To po prostu fototranzystor odbiorczy+dodatkowy, i sygnał z takiego "odbiornika" (np. post #29) wrzucasz na Timer skonfigurowany podobnie jak miernik częstotliwości. Ciebie interesuje jedynie, czy jest odbierany sygnał czy nie, czyli z odpowiednim bramkowaniem, jeśli nastąpi przepełnienie Timera to sygnał jest odbierany, jeśli nie nastąpiło to brak...
Może to ci pomoże : [url=http://www.elektroda.pl/rtvforum/to... w timerze, problem albo to : [url=http://www.elektroda.pl/rtvforum/to... w bascom czujnika DS1820 na DS18B20 albo ...... Jakieś 780 innych postów pod tym linkiem : [url=http://poszukaj.elektroda.pl/search...
Spróbuj może jeszcze zamiast używać funkcji beep(), w pętli głównej programu po prostu jej treść wpisać i zobaczyć co będzie. Na początek pojedyncze bipnięcie, potem dwa, a jak to będzie działać to trzy i tak do tyle ile chcesz. Zwróć też uwagę że rejestr OCR1A jest 16 bitowy, a rdzeń Twojego AVR jest 8 Bitowy. Czyli zapis tego rejestru nie odbywa się...
Cześć. Po dłuższej przerwie wróciłam do AVR i Bascom. Mam program na Attiny 2313 - działa. Program przepisałam teraz na attiny261, kompiluje sie normalnie, niestety nie mam procesora żeby sprawdzić. Program to proste zależności - "jeśli tu stan niski, to tam i tam też" Żadnych wodotrysków typu ADC czy PWM, nawet z timerów nie korzystam... Czy może mnie...
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ł...
heh w moim pliku nagłówkowym io dla tego uC (iotn2313.h) nie ma deklaracji rejestru TCCR0, jest deklaracja rejestrów TCCR0A oraz TCCR0B. Zapewne to ich należy użyć, ustawiając odpowiednie bity w A i B. W twoim wypadku, spróbuj TCCR0 zastąpić przez TCCR0B EDIT, i wywal linijke: int TCCR0 Sprawdziłem w jednym z moich projektów, wprowadzając timer1 w tryb...
Koledzy, nie wiem jak to jest w Attiny, ale spotkałem się z dwiema rzeczami w innych uC: 1. Timery mają własne przerwania, czyli nie musisz zajmować żadnego innego przerwania, które może Ci się przydać do czegoś innego. 2. Jest coś takiego jak priorytet przerwań, zatem jeden z timerów będzie ważniejszy, jeśli obydwa naraz wygenerują przerwanie.
Witam potrzebuje o napisanie programu oraz zaprogramowanie uC chodzi mo dokłądnie o: klatka schodowa ma być oświetlana dwoma rodzaju obwodami. górny- światło halogenowe/lub diodowe (230 lub 12V) dolne- podświetlenie schodów podtynkowe zestawy diodowe (ledy 12V) na parterze i piętrze ma być włącznik typu dzwonek () obydwa włączniki mają działać na takiej...
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. Przewertowałem dokumentację ATTiny44 i nie za bardzo widzę aby było coś dedykowane do sterowania fazowego (proszę nie mylić z PWM). ATTiny 44 ma dwa timery i oba mają PWM sprzętowy , z czego jeden jest 8 bitowy drugi 16 bitowy (oczywiście timer nie PWM). Natomiast PIC na 3 timery 16 bitowe ale tylko 1 PWM ale o rozdzielczości 16bitów. No i moc...
Nie możesz używać Waitms nigdzie indziej poza pętlą główną. Trzeba to obejść. Wiadomo, że w podprogramach jesteś co 4ms. Co do Portb.5 to nigdzie nie widzę zerowania i dlatego jest ustawiony non stop. [syntax=basic4gl]$regfile = "attiny2313.dat" $crystal = 1000000 Config Portb = Output Portb = &B1111111 Config Portd = &B11111000 Portd = &B1111111...
Nie bawiłem się ATtiny2313, ale jeśli ma PWM to da się zrobić jakieś odtwarzanie dźwięku z próbek. Robiłem takie coś na ATmega128. Puszczasz generator PWM na najwyższej częstotliwości i jakiś timer do generowania przerwania okresowo. Timer determinuje częstotliwość prókowania. Podczas każdego przerwania timera wpisujesz nową próbkę do rejestru generatora...
Jeśli WD ma być "tylko" do budzenia to się zgodzę. Przyzwyczaiłem się WD zostawiać sobie też dla bezpieczeństwa aplikacji. If WDE is set, the Watchdog Timer is in Interrupt and System Reset Mode. The first time-out in the Watchdog Timer will set WDIF. Executing the corresponding interrupt vector will clear WDIE and WDIF automatically by hardware (the...
Zawsze możesz taktowac tym sygnałem "wzorcowym" procka. Niektóre kontrolery ATtiny posiadają PLL do taktowania szybkiego timera, pomyśl nad wykorzystaniem. Pozdrawiam
Witam Musisz skonfigurować Timer i za jego pomocą odliczyć 4 minuty. $Crystal = 11059200 Config Timer1 = Timer, Prescale = 1024 Load Timer1 , 10800 On Timer1 Sekunda Config Pind.1 = Output : Wy Alias Portd.1 Config Pind.2 = Input : We Alias Portd.2 Dim Licznik_1 As Byte Dim Wsk As Bit Enable Timer1 Enable Interrupts Licznik_1=0 Wsk = 0 Do If...
Ustawiam preskaler na 8 i mam częstotliwość prawie 300 Hz a potrzebuje 2 razy tyle jak to zrobić, bo przecież nie mogę ustawić preskalera na 4? Czyli przynajmniej jedno można stwierdzic, że taktujesz processor 1,2 MHz; a nie jak twierdziłeś i zakładałeś wczwśniej; 9600 000(!)_ Twoja konfiguracja timera0: Phase Correct PWM i otrzymany wynik częstotliwości...
Poczytaj np. [url=http://www.elektroda.pl/rtvforum/vi... to może Ci się nieco rozjaśni ;) A kilka postów wcześniej cytowanego linka jest podobne rozwiązanie z zastosowaniem timerów. Połącz oba i będziesz miał złoty środek... Pozdrawiam.
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ć....
Rozumiem że zaczynasz licznik timera od 0 Dokładnie //tryb CTC, zmień stan OC0B (czyli PD5) po każdym przepełnieniu TCCR0A = (1<<COM0B0) | (1<<WGM01); Tu niestety nic nie rozumiem. :( CTC znaczy Count To Capture. W tym trybie timer liczy w górę aż osiągnie pewną ustaloną wartość. W tej konfiguracji, wartość ta jest przechowywana w rejestrze...
Jeśli chcesz robić odliczanie w pętli głównej to zrób tak: $regfile = "attiny45.dat" $crystal = 4000000 Config Pinb.0 = Output 'wyjście Config Pinb.1 = Output 'wyjście Config Pinb.2 = Input 'przycisk Portb.0 = 1 Portb.1 = 0 Portb.2 = 1 Config Timer0 = Timer , Prescale = 1024 Enable Interrupts Enable Timer0 Start Timer0 On Timer0 Zegar Dim...
... Error : 46 Line : 10 Assignment error [COMPARE1A: 0 12: 112] , in File : C:\PROGRAM FILES\BASCOM-AVR-1-11-9-1 FULL\PILOT-TINY26-SONY.BAS ten błąd mam tylko przy tiny26 przy innych prockach np. mega 8 lub tiny 2313 program ładnie się kompiluje . o co chodzi przecież tiny26 ma OC1A ? Spawa jest śmiesznie prosta , jeśli...
timer attiny timer prosty attiny timer model attiny
agregat lodówki termik zapalać check mercedes rozjaśnianie ekranu samsung
Regulacja zespołu wodnego Junkers WRP11: Praktyczne wskazówki Przerzucenie limitu z dziennej na nocną taryfę w liczniku energii