Nie prościej generować przerwanie co np 1s od timera?
Tryb CTC należy ustawić zgodnie ze stroną 112 PDF. Należy dokładnie przeczytać tę stronę i okoliczne. Potem ustawić odpowiednie bity w odpowiednich rejestrach. W Bascomie robi się to np. tak: set TCCR1B.wgm13 i tak dalej. Bascom nie ma gotowych instrukcji na wszystkie możliwe tryby pracy timerów. Ale pozwala na ustawienie tych trybów "ręcznie"- przez...
Skróć czykl zliczania Timera.
Witam. Może spróbuj tak po wywołaniu przerwania ( u Ciebie co sekunda) Odczytaj termometr DS. A następnie wydaj rozkaz pomiaru temperatury. W następnym przerwaniu odczytasz go o tak w kółko.
W przerwaniu Int0 inkrementuj zmienną. Ustaw timer na jakąś jednostkę czasu i w przerwaniu od tego timera obliczaj cześtotliwość i zeruj zmienną
oczywiście po to są timery
No właśnie- przerwanie od Timera co 16.384 ms a w przerwaniu tylko inkrementacja jakiejś zmiennej. No ale to Bascom- odkładanie na stos i zdejmowanie zajmie jeszcze kilkadziesiąt instrukcji po 0.0625us przy zegarze 16MHz. Ale nawet wtedy to będzie poniżej 6us. Wystarczy aby obsługa przerwania INT0 była krótsza od 16ms. Zwłaszcza że przerwanie zewnętrzne...
Emarcus on liczy przepełnienia timera, który generuje przerwania, co 4ms i coś tam robi w przerwaniu. Ostatnia linijka postu, który cytujesz.
Może się pomyliłem, ale chyba przerywasz sobie odbiór co 2ms. Dlaczego nie użyjesz wyższego preskalera? Np. 1024? Możesz nawet po ustawieniu Flagi wyłączyc Timer i po odbiorze włączyć ;) Timery można dowolnie konfigurować podczas pracy programu. Druga sprawa ustaw sobie odbiór do bufora w tle (Config Serialin = Buffered, Size..)
Dokładnie tak jak masz napisane, z tym, że konfigurujesz jeden z timerów do dliczania czasu. Przykładów w Bascomie z obsługą timera znajdziesz bez liku.
No tak wiem o tym, że timer0 jest 8 bitowy, a timer1 16 bitowy. Tak chodzi mi o zegarek czasu rzeczywistego. A pwm da się zrobic na innych timerach timer2 timer3?
Po upływie 655.35ms następuje przepełnienie licznika, w takiej sytuacji trzeba utworzyć zmienną która będzie zliczać ilość przepełnień. Czyli.......... W takiej sytuacji (.."time out"; => Err=1) - trzeba przyjąc że instrukcja została zakończona i processor już nie powróci do jej kontynuacji, a raczej przystąpi do kolejnej instrukcji przewidzianej programem....
Tak fusebity jak sadzę ustawione poprawnie bo pozostałe PWMy oraz cała reszta działają poprawnie. Konflikt występuje jedynie przy Int0 i Ocr0 działających na tym samym timerze przy tych 16MHz ;/
Jeszcze jedno pytanko czy kolega używał w tym programie timera?
Jeśli potrzebujesz sekundę to prócz kwarcu 16MHz podłącz kwarc zegarkowy 32768Hz i puść Timer2 asynchronicznie. Timer0 się zwolni. [syntax=basic4gl]Config Timer2 = Timer , Async = 1 , Prescale = 128[/syntax]
A nie lepiej tak ? Przykładowa konfiguracja timera1 w trybie CTC i przebiegiem na OC1a [syntax=basic4gl]Config Timer1 = timer, Prescale = 256, CLEAR TIMER = 1, Compare A = toggle, Compare B = disconnect [/syntax] Potem tylko zmieniać wartość rejestru Compare1a jakimiś przyciskami, pilotem, enkoderem etc. ps. Jak nie zadziała to poustawiać bity w rejestrach...
Coś w tym rodzaju, z tymże niedokońca. A jak obliczyć prędkość timera takżeby prędkośc wysyłanych danych była odpowiednikiem 9600 budów. Oczywiscie zakładam że mój pomysł z wysyłaniem bitów z taktem timera.
hmmm Przede wszystkim: Enable Interrupts On Timer0 Przerwanie Stop Watchdog Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 256 'PWM=250Hz Load Timer0 = 195 To włączenie przerwania jest wstrętne w tym miejscu:P Co do wniosków... może spróbuj zwiększyć stos o...
- czy praca równoległych timerów nie będzie jakoś na siebie wpływać (program przerywa pracę na skutek działania timera1 by precyzyjnie wyznaczyć czas, a tu w tym samym momencie dochodzi kolejne przerwanie od innego timera, i co wtedy) Timery działają niezależnie, ponieważ realizowane są sprzętowo. Nie będą na siebie wpływać. Program niestety (w tym...
A stan Timera0 się zmienia? Ja też mam problemy z tym. Ale pod pojęciem "tym" kryje się nie Timer, lecz BASCOM. W BASCOMie niektóre rzeczy nie działają z niektórymi procesorami (np. Timery w ATMEBA88 nie działają, w ATMEGA8 już tak. BASCOM ma źle przypisane adresy rejestrów IO).
nie jestem pewien bo dawno porzuciłem bascoma ale aby coś wygenerować timer musi być chyba skonfigurowany jako pwm a nie timer pozdrawiam
Możliwe, że będzie trzeba rejestry jakoś inaczej poinicjalizować (jakieś timery/przerwania/etc).
Tak, będziesz mógł. Jeśli chcesz liczyć w czasie (a nie chcesz) to mierzony przebieg doprowadzasz do wejścia zegarowego timera, w efekcie każdy impuls powoduje zwiększenie wartości licznika o jeden. Skoro chcesz mierzyć szerokość impulsu to wykorzystujesz wejście ICP timera - timer taktujesz z maksymalną częstotliwością, z kolei impulsy z obrotomierza...
hmmm no ja to robiłem wtedy w Bascomie mniej więcej tak: ustawiałem sobie tak któryś Timer, żeby przerwanie wykonywało się powiedzmy 64 albo 128 czy ze 200 razy w ciągu czasu trwania jednej połówki czyli w trakcie ok 10ms tak? Gdy pojawiło się przerwanie INTx to odpalałem ten Timer, który zaczynał tykać i wykonywać przerwanie tyle razy ile ustalonych...
A jaką instrukcją, bądź kawałkiem kodu mógłbym zastąpić tą instrukcję ( encoder ), czy mógł by mi ktoś napisać, opisać taki kawałek programu, wiem, że jakoś się go robiło na instrukcji "If...Then", a nawet spotkałem się na obsłudze encodera, na Timerach... Mógł by mi ktoś pomóc....
Witam Jakoś dziwnie to napisane. Przede wszystkim jak piszę TIMER to nie używam potem OVF1. Jakoś mi to brzydko wygląda choć działać powinno. Skoro chcesz mieć jeden odczyt na dwie sekundy to zrób to zupełnie inaczej. Np. w programie głównym zrób sobie licznik i dla wartości powiedzmy jeden niech wyśle rozkaz do DSa ażeby przetwarzał temperaturę. następnie...
ElKuba, a czy atmega8 i AtMega16 masz fabrycznie nowe, czy od kogoś ? Może ktoś wpisał fuse Dodano po 5 nie zauważyłeś w w ATMega16 pd7 ma też drugą funkcję OC2 (Timer/Counter2 Output Compare Match Output)
I taktować procek czymś tak zaskakująco szybkim:) (A nie lepiej zrobić to na jakimś timerze? 5Hz to na prawdę wolno zmienny sygnał...)....
Dopiero od wersji 1.12.x.x masz taką możliwość. We wcześniejszych wersjach wartość opóźnienia musi być stałą. Użyj lepiej przerwania od TIMER'a.
masz cos tak jak kursy do bascoma, tam masz jak zrobic licznik na timerze. Pozatym masz dobra ksiazke i helpa
Z tego co widze problem jest chyba w tym ze w przypadku 8 kompilator sam mi ustawial rejestr assr i bity exclk i as2 a w tym 168 tego nie robi. tylko jak na razie z racji mojej niklej wiedzy musze dojść jak to zrobić ręcznie. Widzę że problem już rozwiązany, ale dodam że dokładnie tak jest. U mnie w BASCOMie nie działa konfiguracja Timerów, Przerwań...
Jak już odzyska kolega władzę w krainie ATMega16, to zainteresuj się trybem CTC pracy tego licznika. Jest do tego odpowiedni parametr: CONFIG TIMER0 = TIMER, PRESCALE = 256, CLEAR TIMER = 1 Tylko pamiętaj aby skorzystać z przerwania porównania a nie z przerwania przepełnienia.
Nie potrzebny jest tu timer. Poczytaj o pięknej funkcji Bascoma jaką jest PULSEIN. Jak ogarniesz tą dyrektywę to oniemiejesz z zachwytu.
OK dziękuję wszystkim za pomoc, rozumiem że Timer będzie liczył czas non stop aż nie nadejdzie zbocze narastające i nie dojdzie do komendy stop timer1? Chodzi mi o to że włączam go w przerwaniu a potem się ono kończy i czy timer wtedy nie zakończy zliczania?
Wiesz, mam książkę Baranowskiego 'ATmega w praktyce'. A to co było??? oczywiście mi pomylił się autor ale tytuł ten sam ;) więc ją masz Co do wydajności prądowej to chyba też dostałeś już odpowiedzi różne, albo drivery ULN albo zwykłe tranzystory żeby ją zwiększyć i po ptakach Żeby nie robić na jednej nodze jednej diody nawet przez te tranzystory to...
Witam Napisałem prosty program używający timera1 i timera 2 do zliczania częstotliwości, Chciałbym użyć dodatkowo serwa do mojego projektu ale używając intrukcji Servo coś nie tak dzieje się z serwem . Po włączeniu zasilania ciągle pracuje i próbuje przekręcić się o 360 stopni "ciągle pracuje". Kiedy w kodzie spełniony jest warunek i uruchamia się komenda...
Tak, lecz jest to sytuacja, którą opisałem w poście #3. Z drugiej strony, ja bym przedstawiony przez ciebie problem rozwiązał inaczej - w dwóch przerwaniach. W przedstawionej sytuacji wysyłkę można zrobić całkowicie w oparciu o przerwania USART, a timer niech robi to do czego służy :) A jakieś inne różnice?
Zamiast polecenia "wait 1" zatrudnij drugi licznik pracujący w trybie "timer" do odmierzenia dokładnej wartości czasu, wtedy będziesz miał pewność że impulsy które zliczyłeś na pewno przypadały na 1s. Pozdrawiam
Wieża to samsung max 550, pilot ma w sobie układ BU2478-2Z. Próbowałem przy pomocy Timera, co ok 500 us w przerwaniu Timera sprawdzałem stan wejścia sygnałowego od czujnika 0/1. W pętli dodawałem daną wartośc do ciągu znaków. W efekcie otrzymałem "analize" sygnału którą trzeba troszkę dostroić Timerem i wydobyć z tego interesujący nas fragment. Działa...
Jak nic - trzeba zrobić procedurę odpowiedzialną za multipleksowane wyświetlanie na wyświetlaczu LED. Można do tego użyć jakiegoś Timera, który będzie wciąż wyświetlał zawartość np 3 komórek pamięci RAM np: Cyfra1, Cyfra2, Cyfra3. Dzięki temu później już łatwo będzie zrobić procedurę typu DisplayLED, która będzie do tych 3 komórek wpisywała kolejno...
Witam Od paru dni bawie się w programowanie atmega16 w oparci o bascom college tyle ze tam przykłady są napisane na Bascom 8051 a ja musze używać (chyba) bascom avr. I z reguły bez większych problemów mi się to udawało do czasu zabawy z taimerami. Czy kos może mi przerobić poniższy kod na bascoma avr (chodzi o podobny efekt)? A może da się pisac w ascom...
"zajęte" timery. zawsze możesz dopisać tak jak pisałem z dźwiękiem. w przerwaniu timera pomniejszasz zmienną o 1 oraz gdy jest równa 0 wyłączasz podświetlanie. w obsłudze klawiatury dodajesz zapalenie podświetlenia (pewnie ustawienie jakiejś nużki w odpowiedni stan) oraz ustawienie tej zmiennej na odpowiednią wartość (trzeba wyliczyć z prędkości z jaką...
To może się okazać bardziej skomplikowane, niż się wydaje. Wszystko zależy od tego, jaki jest algorytm wyświetlania w tym częstościomierzu. W każdym razie, w najprostszym przypadku można próbować coś w tym rodzaju: 1. utworzyć tablicę na 7 cyfr wyświetlacza. 2. ustawić timer na generowanie przerwań z prędkością > 100 razy na sekundę. Lepiej nawet rzędu...
Witam, Zacząłem zabawę z AVR-em. Oczywiście trzeba uruchomić pomysł w miarę szybko więc BASCOM. Programy "kroczki" testuję na konfiguracji na wyrost, czyli Atmega16 z taktem 16MHz. Popełniłem program testowy który w założeniu miał zliczać impulsy poprzez timer. Źródłem impulsów jest PCF8593, procek obsługuje to przez PortB.0 (Wejście dla timerka). Konfiguracja...
Zainspirowała mnie Twoja odpowiedź To jest niemożliwe. i jeszcze raz sprawdziłem wszystkie ustawiane flagi. Okazało się, że w procedurze inicjalizacji zamiast I2cwbyte &B11000010 'alarm timer 1s int powinno być I2cwbyte &B11001010 'alarm timer 1s int i sprawa rozwiązana - jest przerwanie równo co sekundę. Dzięki za podpowiedzi! Swoją drogą, dokumentacja...
Nie do końca rozumiem o co Ci chodzi, ale: Jeśli timer pracuje jako czasomierz (zlicza wewnętrzne cykle zegarowe), to pin nie ma nic do rzeczy. Można go wykorzystywać w dowolny sposób. Jeśli natomiast timer skonfigurowany jest do pracy jako licznik i zlicza impulsy / zbocza na wejściu T1 (czyli pinb.2) to pozostaje jedynie zrezygnować z tej funkcji...
Poprawiłem obliczenia pojedynczej cyfry lecz w zaznaczonej linijce w pierwszym okienku z fragmentem kodu wykrzyknikami, pojawia się błąd i nie wiem dlaczego zmienna Znak jest zdeklarowana w ten sposób: Dim Znak as Bit a pojawia się komunikat: error:105 StoreBit error [0] A co z tymi przerwaniami bo do końca nie mogę tego złapać są tak jak powinny być...
Kody źródłowe dostępne dla ATMEGA16 i następujących kompilatorów: (w nawiasach wynik kompilacji) IAR .......... (4852 bajty) AVRGCC .... (5808 bajtów) BASCOM ... (92% czyli ok 15kB) Myślę że wyniki mówią same za siebie. W projekcie wykorzystywane są SPI,I2C, przerwania od timera i zewnętrzne. No dokładnie tak to można się kusić o porównywanie a nie...
Tak nie może być. Timer może pracowac jako timer lub jako counter. Nigdy razem. Skonfigurowałes timer jako timer, a chcesz czytać dane z counter/capture. To ci nigdy nie zadziała. Wpisz konfig countera który ci przesłałem i na tym kombinuj. Ostatecznie uzywaj sobie INT skoro ci działało i masz ta nóżkę jako wolną.
Klawiature musisz potraktować jak jeden zwykły przycisk. Tyle że zwykły przycisk ma stan wysoki jeśli nienaciśnięty a ten przycisk zwraca 16 jeśli nienaciśnięty. Napisałem na szybko dwa przykłady. Jeden działa bezposrednio na wartosciach a drugi na stringu [syntax=vbnet] Dim Key As Byte Key_val As Byte , Lock As Byte , Licznik As Byte Dim Val_str As...
Do Pawelj Nie będę wnikał co jest lepsze pomiar prądu czy też inne rozwiązania ale odpowiem Ci wprost na twoje pytanie dotyczące zliczania impulsów. Sygnały z impulsatorów podłącz pod 1 i 2 nogę Atmegi16 są to wejścia zliczające liczników Timer0 i Timer1 Skonfiguruj timery Config TimerX = Counter , Edge = Rising lub Config TimerX = Counter , Edge =...
Przecież masz 5 kanałów - wyjścia: OC1A, OC1B, OC2, OC3A, OC3B... Zmienne przedstawiają wartość modulacji w każdym z kanałów z osobna. Wszystkie PWMy są skonfigurowane jak 8 bitowe zatem zakres to 0..255. Ma tak być. Ponieważ nie ma aliasu (jeszcze) PWM2 dla zmiennej COMPARE2 (rejestr sprzętowy OCR2), BASCOM nie rozpoznaje nazwy PWM2. Jak zajrzysz w...
Na spokojnie jeszcze raz poczytaj Helpa i notę Atmega16. Wejście Icp jest wejściem Timera 1 a nie Timera0. Myślę też że do tego co ty chcesz zrobić można by się obyć bez Timera tylko na wejściu INTx zliczać zbocza, a potem w pętli analizować te dane.
Witam. Jestem już dawno zalogowany na elektrodzie ale jeszcze nic nie napisałem więc czas zacząć. Odnośnie programu w BASCOM'ie to mogę z przyjemnością pomóc rozwiązać kilka problemów. Sam wykonywałem podobny układ dla znajomego (timer fotograficzny) było to na mikrokontrolerz AT89C2051. Nie jest zbyt dokładny ale takie miał założenia. Jeśli się na...
Tu nie ma żadnej filozofii. Ja co prawda programuję na ATmega16 i procedura wygląda tak: void generator_PWM(unsigned int wypelnienie) { TCCR2 =0x69; //tryb FAST PWM, bez preskalera, zeruj OC0 gdy porownanie = TRUE; f = 16M/256 = 62,5kHz OCR2 = wypelnienie; //wartosc porownywana 0..255 } Jak zrobiłeś PWM na ATmega32 to z tego co wiem...
witam dioda miga co 1 sek ( na tyle co moge zmierzyć ) ale jak napisałem program na przerwaniach T0 preskaler 256 do Timera load 250 i to x 250 to ok miga co 1s T0 preskaler 256 do Timera load 250 i to x 25 to ok miga co 0.1s T0 preskaler 256 do Timera load 25 i to x 25 to nie miga co 0,01s i do tego z zmienną częstotliwością ??? może coś z tym kwarc...
Procesory są przy sobie - żadnego z tych sposobów komunikacji nie znam - coś więcej możesz ? Zapomniałem dodać, że piszę w bascomie i chciałbym aby sposób komunikacji był przez niego obsługiwany, wykorzystuję oba timer wiec przepływ danych nie powinien też powodować z tym problemów. Myślałem o i2c - czy atmel może być urządzeniem slave na szynie i2c...
Problem rozwiąże, odmierzanie czasu przez timer, a nie przez wait czy delay (nie znam BASCOMa). Jak już ktoś wspomniał odczyt i zapis bitu na 1-wire jest dość krytyczny czasowo. Miałem z tym problem w assemblerze i ADuC841. Przerwanie od multipleksowania wyświetlaczy skutecznie zakłócało transmisję. Polecam też sprawdzanie CRC, żeby ustrzec się przed...
Poszukam nowszej wersji Bascoma, w której działa polecenie encode i mam nadzieję że zadziała to wszystko bo już zaczynam się denerwować. Przeciesz to tylko przełącznik. Na przerwaniach mi niby jakoś tam działał ale to nie to czego oczekiwałem, a przerwania na timerze nie chce robić bo w programie nie mam za dużo wolnego czasu na to. Nie chce ryzykować...
Kolego WADER_669 ja doskonale rozumiem jak ma działać to urządzenie. 1.Nadaje lewą diodą Ir z częstotliwością 36kHz odczytuje tsop-a i jak coś odebrał to zapalam diodę sygnalizacyjną. Tak samo robię z drugą stroną. I do tego miejsca program działa dobrze. 2.Nadaję lewą i prawą diodą i odczytuje czy tsop coś odebrał, jak odebrał to zapalam lewą i prawą...
Witam. Pytanie odnośnie kompilatora Bascom AVR. Załóżmy, że w programie wykorzystuję dwa przerwania. Pierwsze pochodzi od nóżki Int0, drugie od przepełenienia Timer 1. Czy (i kiedy) w procedurze przerwania powinienem stosować wyłączanie przerwania na czas jego obsługi? Niby Bascom udostępnia gotowe disable interrupts (wyłącza cały system przerwań) oraz...
Witam. Jestem początkujący jeżeli chodzi o mikrokontrolery. Chciałbym prosić kogoś bardziej doświadczonego o sprawdzenie poprawności mojego programu. Działanie: Sterowanie 3 silnikami BLDC i 1 serwo za pomocą PWM. uC otrzymuje przez UART literę oznaczającą funkcję, następnie ma ją zrealizować. Silniki podłączone będą przez regulatory modelarskie, a...
http://obrazki.elektroda.pl/3637756900_1... http://obrazki.elektroda.pl/6313868300_1... Zrealizowałem w tym roku swoje postanowienie jeszcze sprzed zeszłej zimy i zrobiłem sobie wreszcie własny sterownik pieca CO. Na początek pytanie "dlaczego"? Otóż oryginalny dostarczony z piecem przede wszystkim miał 6 poziomów nadmuchu...
Nigdy w przerwaniu nie użyłem "wait" i nie użyje. Od tego są timery w AVR aby z nich korzystać ;)
Witam W prockach dopiero raczkuje. Robię obrotomierz do samochodu (choć można zastosować to wszedzie). Oparłem to na atmega16 bo taki akurat teraz mam, ale docelowo ma byc na 2312.Na razie jest wszystko w fazie testowej na biurku, ale założenia są takie: na kole zamachowym umieszczam siakiś czujnik, podaje to na układ formowania impulsu, z którego będę...
nic panowie nie czytacie :P ładuje watrością nie 65000 tylko 55000 a to różnica :) Napisałem ze usiłuję uzyskać przerwanie 10ms przy kwarcu 8MHz w drugim poście. Jeśli chodzi o ustawiania portów itd to pomijam takie rzeczy żeby nie zaciemniać. Z tym że: Panowie na ten moment nie jest to problemem zupełnie ponieważ timer nie odpowiada nawet bez początkowego...
Witam, dopiero zaczyna zabawę z mikro-kontrolerami i mam problem O tyle o ile nie mam problemu z napisaniem programu zegaru opartego o wysw. LCD czy to na Timerach czy też opartego o kwarc zegarkowy. To Z wyświetlaczem 7seg LED mam problem nie do rozgryzienia Widziałem, ściągnąłem i próbowałem stworzyć coś z projektów na elektrodzie ale nic mi nie wychodzi...
No widzisz tak tego nie ustawiałem (pisze w bascom-avr). Jak pisałem w bascom 8051 to ustawiał i zerował to co trzeba i przyjmuje ze w avr również tak będzie. Sprawdzę to i jutro sie odezwę czy pomogło. pozdrawiam
Nie. Timer1 jest używany jako podstawa czasu, SECONDTICKS mówi jak często pojawia się przerwanie od timera 1. Użycie któregokolwiek z trybów PWM zmieni np. wyzeruje timer1 i odbieranie DCF nie będzie działało poprawnie. Możesz wykorzystać inny timer z PWM, albo wykorzystać nowy mikrokontroler Atmega168, gdzie timer0 ma też PWM.
No wlasnie. czyli tak jak robie to ja. Timer generuje przerwanie co 1s. Zwieksza zmienna o 1. Wcisniecie jakiekolwiek klawisza jest rowniez sygnalem do wyzerowania tej zmiennej i cykl sie powtarza az do momentu, gdy zmienna osiagnie zadana wartosc. Oczywiscie reczne wychodzenie z menu jest tylko i wylacznie uwarunkowane klawiszem ESC. Ta zmiena symuluje...
Ma być: [...] If Pina.6 = 1 Then [...] Mieniłem tak jak napisałeś, faktycznie ruszył dalej wykonuje pomiar ale dzieje się to samoczynnie bez pojawienia sie na pinie 6 stanu wysokiego, chociaż w kodzie jest zaznaczone żeby robił pomiar dopiero gdy pojawi się '1' na pinie 6. Owszem, ja też przeczytałem że zmieniłes, ale nie jest wiadomo...
Korzystając z Waszych wskazówek przerobiłem program Niby teraz wszystko działa, jednak czy aby na pewno to jest poprawnie. Mam wątpliwości,. trochę błądzę jak dziecko we mgle.. Nie jest poprawnie. Zabierz ten "Waitms" z petli 'Do...Loop' (zupelnie tam nie jest poptrzebny), a w to miejsce wstaw poprawne obliczenia czestotliwosci. Frq. jest obliczana...
Witam, poniżej zamieszczam kod z Bascoma mojego sterownika BMS, w tej chwili kontroluje temperaturę, czas, Rs232, LCD 2x16. Obsługa z klawiatury lub pilota RC5, w obecnej chwili rozwiajm go o dostęp przez internet. zajmuje ok 8kb pamięci więc w A162 będziesz miał jeszcze drugie tyle pamięci. Ja kożystam z A32 Pozdrawiam. PS. daj znać jak zakończysz...
Witam, zbudowałem duży zegar z pasków Ledowych, sterowany przez Atmega16. Napisałem do niego program sterujący, który niby działa ale ma 2 mankamenty. 1. Zegar wydaje się działać niedokładnie pomimo dodanego zewnętrznego kwarcu 16MHz. 2. Segmenty które w danej chwili powinny być wyłączone (np środkowy przy wyświetlaniu 0) nie wyłączają się do końca,...
W zasadę działania programu nie wnikałem ale błędy jakie znalazłem to: 1. Masz zadeklarowaną Funkcję Sharp_Odczyt natomiast w programie wywołujesz funkcje Sharp_Odczyt1 i Sharp_Odczyt2 które nie są zadeklarowane. Proponuję funkcję Sharp_Odczyt przerobić tak: Function Sharp_odczyt(byval Kanal As Byte) As Word Stop Timer0 Sharp_odczyt = Getadc(kanal)...
Z tego co wiem "PIN Change Interrupt" ma np. Atmega168 i Atmega 328. Atmega 32 - jakoś nie widzę takiej możliwości. Proszę o poprawienie mnie, jeśli się mylę. Oczywiście zawsze można skorzystać z tych specjalnych pinów - INT0, 1 czy 2 lub zasymulować taką kontrolę stanu pinu w zwykłym przerwaniu - np. timera.
Ja używam takich kodów do odblokowania tych pinów, zaraz po instrukcji konfiguracji zegara programowego: 'odblokowanie pinów PC6 i 7 dla procesorów atmega16/32: Tccr2 = 0 Assr = 0 Timsk = 0 Tifr = 0 Oczywiście wszelkie dalsze konfiguracje innych timerów powinny znaleźć się po tym kawałku kodu.
Tak oczywiscie reset podciagniety. Okrojony do minimum program: $crystal = 7372800 $regfile = "m168def.dat" Config Aci = Off Config Lcd = 40 * 2 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.0 , Db7 = Portb.1 , E = Portb.4 , Rs = Portb.5 Config Timer1 = Timer , Prescale = 64 On Timer1 Timer1_int Config Pinc.4 = Input '...
Witam,. Mam następujący problem: Przetwornik analogowy na ADC pin 1 Przetwornik częstotliwość na Timer0 max232 1uF Kwarc 8Mhz i atmega16L Na kablu ze złączkami BNC mam połączenie atmega -> przetwornik czestotliwosci (2 kolumna). Wydaje mi się, że wszystko dobrze zlutowane oraz nie ma przerw w kablu BNC. Kabel mam 50 Ohm. Podczas wysyłania danych na...
Zbudowałem sobie taki oto układ termometru i zegara oparty na atmega16 i wyświetlaczu lcd. I wszystko działa jak należy ale nie do końca. Temperatura wyświetlana na lcd strasznie skacze po różnych wartościach w przeciągu paru sekund tzn. jak np. w pokoju jest 20 stopni to on wskazuje raz właśnie te 20 raz 19 czasami 21 albo 14 15 czy 16 stopni celcjusza....
Witam serdecznie. Konstruuje coś co może kiedyś będzie centralką alarmu i mam problem z obsłużeniem czujników ultradźwiękowych. Zakupiłem jedne z najtanśzych para odbrionik nadajnik. Wszystko podłączone wg. schematu. http://obrazki.elektroda.pl/2395810000_1... Ponizej kod programu: $regfile = "m16def.dat" $crystal = 8000000...
Wiec tak, po pierwsze _delay_ms(100) to wcale nie jest 1s. Mając opóźnienie czasowe w przerwaniu INT0 nie jest to dobre rozwiązanie, a jak przerwanie będzie przychodzić częściej jak 10ms? Namiesza Ci się troszkę;] W przerwaniu INT0 zwiększaj tylko zmienną impulsy i ustaw jakąś flagę, a w programie głównym po wykryciu ustawionej właśnie tej flagi wykonaj...
Którą wersję Bascoma używasz? 1.11.8.1 Nic nie poradzę że pod ustawieniami ATMega16, ATMega161, ATMega162 nie działa. Pod ATMega161 licznik ożył ale nie generowały się przerwania. Dziwne - ale prawdziwe. A jak zamiast start TIMER0- wpiszesz do rejestru TCCR0 CS02=1, CS01=1 a CS00=0-to będziesz miał lepiej. Być może by zadziało... albo i nie bo wydaje...
Mam prosty program licznika oparty na wyświetlaczu led. Program nie dokonuje przerwań z timerów. Czy może ktoś jest w stanie rozjaśnić co jest nie tak? Czy jest możliwość, że fuse bit'y od przerwań są źle ustawione? Ten sam program wgrywając do M16 za pomocą STK500 działa sprawnie tylko wtedy, gdy w bascomie ustawie zamiast M16-90S2313 (oczywiście należy...
Właśnie że w symulatorze bascoma (wer. 1.11.7.4) też czas nie idzie?! Mam ustawiony wewnętrzny osc. 8MHZ czyli CLK3...0 = 0100 ale to nie istotne. Atmega16 może pracować z dwoma kwarcami zewnetrznymi (zegarkowym i systemowym) lub z zegarkowym i oscylatorem wewnętrznym jako zegar systemowy. Odnalazłem stronkę w wersji angielskiej, jest podobny programik...
a Error : 320 Line: 467 Poniżej fragment kodu do którego odnosi sie ten błąd ( może ktoś wyjaśni mi o co chodzi): '********** PODPROGRAM OBSŁUGI PRZERWANIA OD TIMERA 1 ********** '***************************************... 453: Przerwanie: 454: Incr Czekaj ' zwiększ wartość zmiennej Czekaj 455: If Czekaj = 50000...
Jestem początkujący w dziedzinie programowania Atmelków. Mam zamiar zrobić licznik impulsów , który w pierwszej linii wyświetlacza LCD 2*16 , będzie wyświetlał ilość impulsów , zaś w drugiej ma pokazywać ilość obrotów na minutę. Generalnie ma to rejestrować przebiegi wolnozmienne ok 1Hz nawet ciut mniej. Zaczerpnąłem kawałek kodu oczywiście z netu ,...
Nie umiem odczytać temperatur z ds18b20. Rezystor podciągający jest(4.7k), VDD i GND też są podłączone. Linia danych podpięta jest pod pb.7 Aha wyświetliłem sobie też wartości odczytanych bajtów, zarówno 1szy jaki drugi mają wartość 0xFF. podaję kod może koś znajdzie błąd. Dim Cyfra(10) As Byte Cyfra(1) = &B00000101 Cyfra(2)...
Może najpierw zacznę od tego co muszę zrobić. Potrzebuję generatora impulsów PWM, ma mieć kilka częstotliwości do wyboru z góry zdefiniowanych, po wybraniu jednej częstotliwości i naciśnięciu startu wypełnienie ma się zmieniać powiedzmy co 5 sekund o 5%. No to czeka cię zabawa z opcjami Prescaler i Pwm . Bo będzie to najprostszy sposób dla Ciebie....
Dzięki Marcin za odpowiedź. W sobotę kupiłem TowerPro SG-5010, bo tamte, faktycznie za delikatne były, jak mi sprzedawca w sklepie pokazał (prawdziwe mini) ;-) Uruchomiłem serwo bez problemów. Sterowanie sygnałem z regulatora PI zbudowanego na Atmega16. Jedynie problem mam tego typu, że przy korzystaniu z drugiego timera Timer1 (Timer0 wykorzystuje...
DZIAŁA!!! ALE MOC :) !!!!! Dwa dni męczyłem się, aby móc zmienić te bity konfiguracyjne, przez mój programator USBasp, avrstudio, atmel6studio, nakładki avrdude i wszędzie jakieś błędy w komunikacji, (dodatkowo też chciałem zobaczyć podesłany link odnośnie fusebitów http://code.google.com/p/avrmate/ , ale też errory), aż w końcu dzisiaj zainstalowałem...
Po pierwsze: zumek ma rację, a ja zapomniałem to wpisać. Po drugie: to cały program? Bo nie ma instrukcji RETURN w podprogramie "wyswietl". Inna sprawa, że w tym podprogramie ustawiasz stan niski na porcie. Ale "jedynkę" na port wpisujesz tylko na początku programu. Niepotrzebnie włączasz zagar czasu rzeczywistego (CONFIG CLOCK), jeśli go nie wykorzystujesz....
No to jest to czego szukałem. Tylko teraz pytanie: Dlaczego zawartość rejestru R0 to zawiera,a nie można odczytać z MCUCSR jak jest opisane w DSie?? edit Aaa już wiem gdzie robiłem błąd. Można odczytać WDRF moim sposobem tylko przed Config Watchdog, bo ta instrukcja czyści rejestr MCU(C)SR. Wszystko pięknie jest wyjaśnione w Helpie od wersji 2.0.1.0...
To w zasadzie "nasz"- wspólny błąd. Aref powinien iść do + lub być na wewn. napięciu odniesienia. A nie "wisieć" w powietrzu. Jak _delay jest zbyt małe to silnik gubi kroki- normalne. Silnik nie może dostawać impulsów zbyt szybko. To teraz zacznę Cię straszyć: Nie pomogę Ci w C- ale podam czego należy unikać w każdym języku. używanie _dalay w C lub...
Zacząłem walkę z dwoma modułami RFM12b. Oba moduły podłączone do ATMega16 w sposób opisany w PDF: nIRQ -> INT0 (PD2) nSEL <- SS (PB4) SDI <- MOSI (PB5) SDO -> MISO (PB6) SCK -> SCK (PB7) Moduły są 868MHz, uP taktowany kwarcem 16MHz. Nie bardzo rozumiem konfigurację modułów a różne (niby działające) przykłady są przeważnie albo w C (nie...
Jeszcze jedno pytanko: Config Timer0 = Timer , Prescale = 64 Powyzsza linijka generuje mi nastepujacy blad: Error : 96 Line : 33 Prescale value must be 1,8,64,256 or 1024 $regfile = "m16def.dat" 'dyrektywa dla mikrokontrolera ATmega16 $crystal = 8000000 'częstotliwość taktowania 8 MHz Ddra = &B11110000 'PA.7-4 wyjscia wybierajace wyswietlacz,...
Witam. Napisałem taki program .............. W moim programie po kolei załączają się rożne tryby migania diody a ja chciałbym żeby wciskając raz switcha załączał się pierwszy tryb później po wciśnięciu załączał się drugi tryb i aż tak do czwartego trybu. Pozdrawiam, Masz prawdopdobnie zadanie zmieniać tryby migania (4 tryby) jednej diody z użyciem...
Jeśli nie wykorzystujesz tych samych pinów co kwarc zegarkowy to nic się nie będzie gryzło... O ile dobrze pamiętam wystarczy podpiąć kwarc 32,768kHz bez kondensatorów pod TOSC1 i TOSC2... Raz po uruchomieniu uC odpalasz timer2 w trybie asynchronicznym i tylko włączasz albo wyłączasz przerwanie od przepełnienia... Ustawiasz preskaler tak żeby przepełnienie...
Zainstalowałem AVR Studio4 i lecę od początku z google i pdf na temat ASM i AVR Powiedzcie chociaż czy w dobrym kierunku zmierzam? Bo jak w złym to odpuszczam i daje sobie spokój, pobawię się migającymi diodami w Bascomie. Tam gdzie nie ma komentarza to nie wiem co to znaczy i co robi ale było w pdf lub innych opisach, jeżeli ktoś może mi wyjaśnić instrukcje...
Jest jeszcze przerwanie PCINT wyzwalane dowolnym zboczem. Wejść PCINT jest zdecydowanie dużo, zatem można reagować nie tylko na dwa przerwania INT0/1. Fakt, nie wszystkie AVRy to mają. Co do programowej obsługi to trzeba skanować klawiaturę w krótkich odstępach czasu i porównywać stan bieżący z poprzednim odczytem. Niestety czas musi być dość krótki...
atmega16 timer timer atmega16 bascom atmega16
wieża buczy philips amplituner denon przyciski panelu jakie zelazko
zasilacz huntkey audio analizer
O-ringi pompy paliwa Audi A6 C5 2.4 - wymiana i materiały Przerwa wymiany danych na CAN bus w rowerze elektrycznym