(2 głosujących) Opisywane urządzenie jest prostym timerem mikroprocesorowym odliczającym czas w zakresie 1-99s (lub 1-99m po drobnej modyfikacji programu). Steruje on dowolnym odbiornikiem prądu przemiennego o maksymalnej mocy wyznaczonej jedynie przez zastosowany triak. Układ został zaprojektowany jako timer fotograficzny, przydatny w amatorskiej fotografii do włączania lampy powiększalnika na określony czas. Po modyfikacji programu może działać na przykład jako timer kuchenny itp. Do zasilania urządzenia zastosowano mini ładowarkę od telefonu komórkowego, przez co całość zmieściła się w płaskiej i niewielkiej obudowie.
Działanie:Schemat ideowy timera przedstawiony jest na rysunku poniżej: Sercem układu jest mikrokontroler U1 (AT89C2051) wraz z elementami X1 (12MHz), C1 (33pF) i C2 (33pF). Kondensator C3 ma za zadanie zresetować procesor po włączeniu zasilania. Wyświetlacz W1 (LED) podłączony jest do portu P3 mikrokontrolera przez rezystory ograniczające prąd R1 - R7 (330R). Anodami wyświetlacza sterują tranzystory T1 (BC556) i T2 (BC556) wraz z rezystorami R8 - R11 (3,3k). Do złącza Sw dołączona jest klawiatura złożona z pięciu przycisków. Ze względu na małą liczbę wyprowadzeń mikrokontrolera ostatni przycisk wykorzystuje prosty dekoder zbudowany na diodach D1 (1N4148) i D2 (1N4148). Tranzystor T3 (BC556) wraz z elementami R14 (3,3k) i R15 (3,3k) steruje pracą buzzera z generatorem B1. Obwód wykonawczy stanowi triak Tr1 (BT138-600E) oraz optotriak OPT1 (MOC3042). Rezystor R13 (330R) ogranicza prąd optotriaka. Do złącza 230V (ARK) należy dołączyć odbiornik w taki sposób jakby złącze to stanowiło zwykły wyłącznik sieciowy. Do złącza Zas (Goldpin) doprowadzamy napięcie zasilające o wartości około 7-12V. Stabilizator U2 (7805) wraz z kondensatorami C4 (47uF) i C5 (22uF) dostarczają napięcia stabilizowanego na poziomie 5V. Budowa:Urządzenie można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym można pobrać tutaj. Montaż należy rozpocząć od wlutowania pięciu zworek a następnie wszystkie rezystory. Na sam koniec warto zostawić elementy największe. Pod mikrokontroler U1 bezwzględnie konieczna jest podstawka, natomiast pod wyświetlacz W1 można zastosować podstawkę DIP18 przeciętą na dwie części. Rozwiąże to problem kondensatorów wystających ponad wyświetlacz i ułatwi montaż całości w obudowie. Triak Tr1 i stabilizator U2 należy wlutować w pozycji leżącej, jak pokazuje schemat montażowy. Timer wygodnie jest zasilać z mini ładowarki do komórki ze względu na małe wymiary i niewielki ciężar. Po rozmontowaniu taka ładowarka da się upchnąć w prawie każdej obudowie. Pomocą przy budowie może się okazać schemat montażowy dostępny tutaj. Wykaz Elementów:1x Złącze śrubowe ARK2 5x uSwitch 12x12mm 1x 220R 2x 33pF 1x Rezonator Kwarcowy 12MHz Programowanie:Mikrokontroler do timera został zaprogramowany w wersji demo programu BASCOM 8051 firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej: $crystal = 12000000 '12MHz $regfile = "89C2051.DAT" Config Timer0 = Timer , Gate = Internal , Mode = 2 On Timer0 Przerwanie0 Load Timer0 , 250 Enable Timer0 Start Timer0 Enable Interrupts Dim Co4ms As Byte , Co1s As Byte Dim Czas As Byte , Czas_ust As Byte Dim Wysw As Byte , Wysw10 As Byte , Wysw1 As Byte Dim Sw_port As Byte , Stan_portu As Byte , Licznik_sw As Byte Dim Mux As Bit Dim Odliczanie As Bit Dim Flaga4ms As Bit Dim Flaga1s As Bit Czas_ust = 12 Odliczanie = 0 Wysw = Czas_ust Triak Alias P1.1 Buzzer Alias P1.0 '**************************** 'Petla glowna '**************************** Do If Flaga4ms = 1 Then Flaga4ms = 0 Gosub Wyswietlanie Gosub Przyciski End If If Flaga1s = 1 Then Flaga1s = 0 If Odliczanie = 1 Then Decr Czas Wysw = Czas If Czas = 0 Then Odliczanie = 0 Triak = 1 Stop Timer0 P3 = 255 Wysw = Czas_ust Buzzer = 0 Waitms 200 Buzzer = 1 Waitms 200 Buzzer = 0 Waitms 200 Buzzer = 1 Start Timer0 End If End If End If Loop End '**************************** 'Przerwanie timer0 '**************************** Przerwanie0: Incr Co4ms If Co4ms = 16 Then Co4ms = 0 '*************************************** co 4ms Set Flaga4ms Incr Co1s If Co1s = 250 Then Co1s = 0 '*************************************** co 1s Set Flaga1s End If End If Return '**************************** Wyswietlanie: Mux = Not Mux If Mux = 1 Then Set P1.6 Wysw10 = Wysw / 10 If Wysw < 10 Then Wysw10 = 10 Wysw10 = Lookup(wysw10 , Tabela) P3 = Wysw10 Reset P1.7 Else Set P1.7 Wysw1 = Wysw Mod 10 Wysw1 = Lookup(wysw1 , Tabela) P3 = Wysw1 Reset P1.6 End If Return Przyciski: Sw_port = P1 Sw_port = Sw_port Or &B11000011 If Sw_port <> 255 And Stan_portu = Sw_port Then Incr Licznik_sw If Licznik_sw = 120 Then Licznik_sw = 0 Select Case Stan_portu Case 223: '+1 If Odliczanie = 0 Then If Czas_ust < 99 Then Incr Czas_ust Else Odliczanie = 0 Triak = 1 End If Case 239: '-1 If Odliczanie = 0 Then If Czas_ust > 1 Then Decr Czas_ust Else Odliczanie = 0 Triak = 1 End If Case 247: '+10 If Odliczanie = 0 Then If Czas_ust < 90 Then Czas_ust = Czas_ust + 10 Else Odliczanie = 0 Triak = 1 End If Case 251: '-10 If Odliczanie = 0 Then If Czas_ust > 10 Then Czas_ust = Czas_ust - 10 Else Odliczanie = 0 Triak = 1 End If Case 207: 'start If Odliczanie = 0 Then Co4ms = 0 Co1s = 0 Load Timer0 , 250 Flaga4ms = 0 Flaga1s = 0 Czas = Czas_ust Odliczanie = 1 Triak = 0 Else Odliczanie = 0 Triak = 1 End If End Select Wysw = Czas_ust End If Else Stan_portu = Sw_port Licznik_sw = 80 End If Return 'Tabela do wyswietlania '******************************************************************************* Tabela: Data 65 , 207 , 82 , 70 , 204 , 100 , 96 , 79 , 64 , 68 , 255 'znak: 0 1 2 3 4 5 6 7 8 9 pusty Zdjęcia Projektu:
|
|||||||||||||||||||||||
PRŚBA O ZMIANE PROGRAMU
Witam serdecznie
Na wstępie muszę pochwalić projekty są one dobrze dopracowane dla początkujących takich jak ja.
Che parę z nich zrealizować w praktyce . Powstały pierwsze trzy, miedzy innymi ten timer ,w którym chciałem dokonać zmiany odliczanego czasu na minuty (1-99 minut). Niestety brak wiedzy nie pozwala mi tego zrobić. Bardzo proszę o wskazówki jak ,lub poprawę kodu zródłowego.
Bardzo proszę jeżeli to możliwe o podanie nr kontaktowego ,ponieważ zależało by mi na kontakcie z doświadczoną osobą piszącą programy na mikro kontrolery.
Tak na marginesie też mam kilka fajnych pomysłów do zrealizowania ,ale niestety brak wiedzy.
Z góry dziękuje
pozdrawiam
Robert
Re: Prosty Timer
Aby timer odliczał w minutach zamiast w sekundach wystarczy zmienić dzielnik w obsłudze przerwania:
Zmieniamy wartość z 250*4ms = 1s na 15000*4ms = 1min i to już chyba wszystko. Jeszcze tylko należy zmienić typ zmiennej na początku programu na Word tak aby obsługiwała większe wartości (linijka poniżej)
Zmiany które napisałem nie są sprawdzane gdyz nie mam w domu juz tego timera. W razie dalszych problemów proszę dać znać. Pytania o konkretny projekt najlepiej pisać właśnie tak jak to pytanie, bezpośrednio na stronie. Jedyna formą kontaktu jest mail: mirley(at)op.pl lub formularz kontaktowy na stronie co sprowadza się do tego samego. Na mail możesz napisać o propozycjach układów i ewentualnie zapytać o inne rzeczy nie związane z projektami na stronie. Odpowiem zaraz w wolnej chwili
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Dziękuje
Witam
Dziękuję bardzo za tak szybką odpowiedż,dzisiaj dokonam zmian i wypróbuje .
Pozdrawiam
Robert
Odpowiedż
Witam
Wszystko działa po zmianach .
Taki sposób przekazywanie wiedzy dla początkujących jest nieoceniony.
Dziękuje bardzo
Pozdrawiam
Robert
Czy można zamiast tego
Czy można zamiast tego mikroprocesora użyć ATtiny2313?? Jeżeli tak to jakich zmian w programie trzeba by było dokonać??
Są ludzie i parapety, ale żeby klamką się urodzić to jest sztuka.
Re: Timer
Należy pozmieniać wyprowadzenia typ mikrokontrolera, ustawienia ttimera i wiele innych, na końcu skompilować to pod bascom AVR. Troszkę roboty jest
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Programowanie AT89C2051
Czy układzik AT89C2051 mogę zaprogramować programatorem USBasp?
RE: 2051
Nie, tylko programator równoległy
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
W przypadku tworzenia
W przypadku tworzenia podobnego timera na atmega8, gdzie Piny od segmentów mam na PB0 - PB5 i 7 segment na PD5. Jak mam skonfigurować porty i czy trzeba coś zmieniać jeszcze w programie aby to działało. Oczywiście pozmieniałem ustawienia timera, i specyficzne. 2 PINY od Anod Piny potrafię skonfigurować.
Inna konfiguracja wyjsć segmentów jest niemożliwa do zrealizowana ponieważ inne porty są zajęte.
POMOC
Jak skonfigurować Porty dla atmegi8, gdzie segmenty mam na pb0-pb5 i pd5 czy jest to możliwe??
Re: Timer
Zrób sobie w programie zmienną pomocnicza typu Byte. Zamias przypisywac poleceniem lookup do portu to przypisuj do tej zmiennej, a potem przypisz bit po bicie zmienna do odpowiednich pinów wyjściowych
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Wiem że to meczące ;p
Ale w jaki sposób przypisać bit po bicie zmienna do odpowiednich pinów wyjściowych??
Re: Timer
Można to potem zoptymalizować za pomocą operacji logicznych.... narazie zobacz czy idzi
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
czy to powinno tak wugladac??
Re: Timer
Powinno tak zadziałać, to najprostsza wersja... Optymalniej będzie jednak nie przypisywać: Portwysw = Wysw1 a od razu do portów wpisac bity zmiennej Wysw1.x a w drugim przypadku wysw10.x..... Można też spróbować tak:
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
If Mux = 1 Then Set
w tym przypadku usuwam jeszcze ta zmienna co robiłem - portwysw tak?
Re: Timer
Tak.... okazała się niepotrzebna. Sprawdź czy to działa tak jak chcesz
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Timer 24s.
Witaj Mirek bedzie duzo roboty zeby timer zliczal od 24s. do 0 i wlaczal syrene na 2 sek po odliczeniu 24 sekund. 2 przysiki sterujace Start powduje wyswietlenie 24 sek i zliczanie do 0 i stop zatrzymuje odliczanie i resetuje licznik. kolejne nacisniecie start ponowne zliczanie od 24s. jesli odliczy cale 24 sek. tu przekaznik zwiera na 2 sek. Timer jest potrzebny na mecz koszykowki firma sprowadzajaca tablice niewyrobila sie z zamowieniem :) i musze na szybko zrobic cos w zastepstwie :) jesli ktos ma moze jakis pomysl na cod. to z gory dziekuje za pomoc bo mam czas do srody :)
MULTI
Re: timer
Będzie to działało.. bo dokładnie tak to jest zrobione z tym że na początku jest 12 sekund ustawione. Trzeba zmienić:
na
oraz na początku Czas_ust = 12 na Czas_ust = 24
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Super :) a możliwość
Super :) a możliwość zatrzymana timera zanim odliczy do 0 24 sek? czasem bedzie potrzebne anulowanie tego odliczania jesli pilka zostanie zucona do kosza :) i niepotrzebnie by robilo halas :) przegladam co mam i mam ATtint2313 reszte powinienem miec wyswietlacz musze zrobic na ledach conajmniej 30cm wysokosci ale to juz do zrobienia mozna by uzyc gotowego ktore sa uzywane do wyswietlania numerkow w sklapach albo na poczcie :) w razie gdybm mial sie nie wyrobic :)
MULTI
Re: Stop
Drugie naciśnięcie start zatrzyma odliczanie i zresetuje ustawiony czas na ustawiony wcześniej
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
:) no to ideal :D
:) no to ideal :D
MULTI
Witam. Nigdy nie pisałem w
Witam.
Nigdy nie pisałem w bascomie, ale robię układ wykorzystujący 3 fazowy układ wykonawczy, gdzie sterowanie dobywałoby się poprzez właśnie układ mikroprocesorowy. Chciałem wykorzystać w części ten program, ale nie wiem za bardzo co i jak zmienić aby układ po prostu podał 1 log na jedno wyjście, powiedzmy P1.4 (AT89S4051), potem po otrzymaniu sygnału (z przekaźnika, więc może być to zarówno 1 jak i 0 log) zmieniłby stan na P1.4 z 1 na 0 log, potem odczekałby daną liczbę sekund a następnie znów podałby 1 log na P1.4. Do tego 2 przyciski: +1 i -1 (dodanie/odjęcie 1 sekundy). Postanowiłem użyć fragmentu z tego programu, ponieważ układ wykorzystuje przyciski. Mógłbym liczyć na małą pomoc lub wskazówkę?
Pozdrawiam
Piotr59mb
Re: Timer
Ale do tego nie potrzebujesz prawie nic modyfikować. Wystarczy że z programu usuniesz:
zostaw jedynie linijkę Wysw = Czas_ust w tym miejscu co była.
Stan aktywny w mikrokontolerach 89 powinien być stanem niskim, wiec trzeba to uwzględnić. Sygnał z przekaźnika wystarczy podać na przycisk start, zwieranie do masy. Powinno zadziałać
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Dlqczego stanem aktywnym
Dlqczego stanem aktywnym powinien być stan niski? Chodzi o wydajność prądową rzędu 15mA? Jeśli tak to planuję poprowadzić sygnał poprzez tranzystor, więc właściwie będę mógł użyć stanu wysokiego (poniżej 2 na bazę)
Re: Timer
No właśnie dlatego że stan wysoki robiony jest wewnętrznym rezystorem..... zrobisz jak uważasz
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Witam ponownie. Co mam
Witam ponownie.
Co mam jeszcze zmienić, aby na wyświetlaczu nie pokazywało się odliczanie, tylko czas który się ustawiło przyciskami?
I jeśli rozumiem, to układ ruszy ze stanem niskim na P1.1, a po odliczeniu ustalonego czasu, procesor ustali stan wysoki P1.1, tak? Natomiast potem jak zachowuje się układ? Czeka na przycisk start i rusza od nowa? (w sumie to by było logiczne, ale wolałbym się upewnić).
Pozdrawiam
Piotr59mb
Witam ponownie. Nie chciałem
Witam ponownie.
Nie chciałem pisać 2 postów pod rząd, ale nie ma tu opcji edycji postów. Da się pozbyć tego dekodera do przycisku, skoro buzzera nie wykorzystuję i nie będzie go w programie?
Re: Timer
Po kliknięciu start pojawi się stan niski na porcie wyjściowym P1.1 a po skończeniu odliczania wróci na wysoki i czeka na kolejny start do momentu aż nie braknie zasilania. Żeby cały czas pokazywał się ustawiony czas wystarczy zamienić:
Wysw = Czas
na
Wysw = Czas_ust
Buzzer można zastąpić przyciskiem ale trzeba przerobic procedurę obsługi klawiatury a to jest kłopotliwe.
Ps. Jak chcesz edytować posty to musisz być zalogowany na stronie
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Ok, program ruszył, jednak
Ok, program ruszył, jednak mam jedno pytanie.
Mianowicie jak już wspominałem, zamiast przycisku start jest podłączona fotokomórka. Jak zmienić program, żeby program wystartował na zbocze narastające? (a właściwie opadające skoro ma być do masy zwierane) Chodzi o to, że fotokomórka nie wyśle tylko impulsu lecz ciągły sygnał, a w tym momencie program się zapętla i co jedną sekundę się resetuje.
Pozdrawiam
Piotr59mb
W innym projekcie użył Pan
W innym projekcie użył Pan programu reagującego na zbocze.
http://mirley.firlej.org/odbiornik_rc5
Dałoby się zrobić tutaj podobnie? nawet jeśli miałbym zamienić P3.2 na powiedzmy P1.0 (tak, żeby P3.2 odpowiadał za przycisk start, dzięki czemu wykryłby zbocze opadające, a segment 'e' do P1.0).
Połączyłbym odpowiednio te wyjścia na płytce za pomocą przewodów.
Re: timer
Dorzuć do programu jedną zmienną bitową i po problemie..... poniżej fragment obsługi przycisków, będzie teraz wyglądał tak:
Teraz przycisk start będzie reagował jednorazowo. Jak go puścisz i przyciśniesz znowu to zareaguje drugi raz
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Zareaguje na zbocze? Chodzi o
Zareaguje na zbocze? Chodzi o to zeby wlaczyl sie kiedy "przycisk" bedzie wciśnięty, a nie dopiero gdy sie go pusci.
Re: Timer
Zareaguje jak przycisk wciśniesz czyli jak zewrzesz do masy.... Jak będziesz trzymał dalej to się nic nie stanie aż do momentu jak nie wystąpi na porcie stan wysoki chociaż na chwilę.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Ok działa, ale pozostał
Ok działa, ale pozostał jeszcze mały problem, ale to już kwestia estetyki. Gdy przedmiot znajduje się między fotokomórkami, na wyświetlaczu pojawia się na zmianę ustawiony czas i odliczanie (tj. ustawiony np. na 12 sekund: 12, 11, 12, 10, 12, 9, itd). Natomiast gdy przedmiot po prostu przetnie wiązkę z fotokomórek tylko przez chwilę, tak żeby uruchomić odliczanie, to wyświetlacz pokazuje tak jak powinien (samo odliczanie).
Jak się pozbyć tego problemu?
Re: Timer
Co to znaczy że przedmiot znajduje się między fotokomórkami? Jaki jest wtedy stan na przycisku start lub innych do których podłączasz fotokomórkę?
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Jezeli przedmiot znajduje sie
Jezeli przedmiot znajduje sie miedzy fotokomorkami to jest caly czas stan niski. Tak jakbysmy przytrzymali przycisk START
Re: timer
Zamiast końcówki obsługi klawiatury :
wstaw:
w sumie polega to na zmodyfikowaniu jednej linii :)
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Teraz na wyświetlaczu jest
Teraz na wyświetlaczu jest już PRAWIE tak jak powinno być. :) Po odliczeniu na wyświetlaczu pokazuje się 0 a nie ponownie czas ust.
Re: Timer
Zamieść cały swój program bo już się pogubiłem co zmodyfikowaliśmy
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
$crystal = 12000000
Re: Timer
Spróbuj dodać linijkę w obsłudze flagi 1s:
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Dzien dobry chcial bym
Dzien dobry chcial bym zapytac czy by szlo program nagrac do attiny2313 cz nusie zrobic jakes zmiany jesli tak tak jakie ?
Re: Timer
Tak poprostu to programu nie da się wgrać do tiny.... trzeba napisać nowy program w bascomie avr, korzystając z obecnego.... trzeba skonfigurować timer do odliczania opóźnienia 4ms, przy kwarcu 16MHZ podzielnik 256, dostaniesz 4ms jak przerwanie będzie wyglądał tak:
W programie należy też zmienić nazwy pinów na takie jak ma tiny2313, a piny na których są przyciski ustawić jako wejścia. Pozostałe piny to wyjścia
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
mogl by pan mi tego programu
mogl by pan mi tego programu zmenic bo probowalem ale mie to nieidzie
timer
Czy jest jakaś szansa na opisanie konfiguracji timera z powyższego wsadu krok po kroku (włączenie przerwań,dzielniki w zależności od kwarcu itp.)?
Ewentualnie "wyłowienie" z przedstawionego wsadu komend z timerem związanych z komentarzem dlaczego tak ?
Będę wdzięczny bo nie mogę tego ogarnąć. Pozdrawiam.
Zapomniałem podziękować za
Zapomniałem podziękować za pomoc przy modyfikacji programu więc... Dzięki serdeczne :)
Re: Timer
Konfiguracja timera ustawia go w tryb 2 czyli timer 8 bitowy z automatycznym przeładowaniem wartości. Pisząc Load timer0 = 250 w praktyce w starszej części licznika ląduje wartość 6 bo licznik liczy do 255 i nastepny impuls go przepełnia czyli dokładnie 250 cykli które chcemy uzyskać poleceniem load. W następnych liniach włączamy przerwania od timera i uruchamiamy timer. Po każdym przerwaniu czyli przejściu licznika z max wartości 255 na 6 wywoływana jest procedura Przerwanie0. Wywoływanie to następuje co określony czas w tym przypadku kwarc 12MHz/ 12 (bo taki jest dzielnik wewnętrzny) trafia na wejście timera. Czyli licznik timera liczy przebieg 1MHz i po 250 okresach wywoła przerwanie. Przerwanie wystąpi zatem z częstotliwościa 4kHz czyli dokładnie co 0,25us. W procedurze obsługi przerwania liczę sobie 16 przerwań co daje odcinki czasu po 4ms a następnie liczę 250 odcinków czasu po 4ms co daje 1s.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
timer
Dzięki za proste i rzeczowe wyjaśnienie. Jakbyś Mirku mógł wyjaśnić jeszcze kestie: "kwarc 12Mhz/12". Czy wewnętrzny dzielnik ustawia się auto czy trzeba go ustawić ręcznie np. w atmega16, kwarc 8 lub 16 Mhz ?
Re: Kwarc
Dzielnik wewnętrzny w 2051 jest ustawiony na stałe na 12, nie da się przestawiać tak jak w AVR. Procesor 2051 może działać tylko z kwarcem, nie ma żadnych fusbitów ani innych ustawień
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.