A może wyłumaczyć mi ktoś tak jaśniej niż whelpie bascoma ;) co to jest ten prescaler i co on dzieli. Może tak po kolei jak twój program widnieje: 1. Jeżeli PORTB jest przeznaczony do obsługi LCD to nie konfiguruj go w ogóle w stylu jaki podałeś w pierwszym poście. Config Portb = &B11111111 : Portb = &B11111111 ===> źle!!! Może to powodowac zakłócenia...
http://obrazki.elektroda.pl/6514394200_1... Chciałem przedstawić prościutkie urządzenie, służące do ułatwienia pomiaru czasu. Na zawodach samochodowych, w których biorę również udział do pomiaru czasu wykorzystywany jest chronometr, do którego należy podłączyć fotokomórkę na linii START i drugą fotokomórkę na linii META. Jednakże nam...
Chyba nie potrzebujesz odliczać dokładnych czasów, więc najlepiej wyliczyć ile przepełnień licznika potrzebujesz przy danej częstotliwości i danym preskalerze. f=fosc/p f - częstotliwość taktowania licznika fosc - częstotliwość oscylatora p - preskaler T=1/f t=(c*x)/f t - czas odmierzany c - pojemność licznika x - ilość przepełnień ostatecznie: x=(t*fosc)/(p*c)...
Zrób tak: 1 licznik do odmierzania czasu, przerwanie co np 25ms 2 licznik do zliczania impulsów Jeżeli nastąpiło przerwanie np 25ms, to zlicz liczbę impulsów. W taki sposób masz dokładniejsze odmierzanie czasu, funkcja wait do tego się nie nadaje. Przeanalizuj sobie ten temat: http://www.elektroda.pl/rtvforum/topic16... a potem dodaj to co napisałeś...
Witam! Zrobiłem zegar na w/w uC przy użyciu czterech siedmoisegmentowych wyświetlaczy. Są one sterowane w sposób statyczny z pomocą buforów i odświeżane raz na sekundę, ale nie to jest przedmiotem mojego postu. Chodzi o to że udało mi się uzyskać dokładnie 1s (sprawdzałem z użyciem stopera odmierzając godzinę). Program zajmował wtedy 33% zawartości...
Już dosłownie walę głową w mur. Dokumentację przeczytałem 1001 razy, google 2 razy przepatrzyłem całe i nic. Chcę wysłać korzystając z hardware-owego USI dane. Żadne i^2c. Po prostu zwykłe, jednokierunkowe wypluwanie danych. W necie nie ma podstawowego przykładu użycia tego trybu. Jednak do rzeczy. Skąd wiem, że nie działa? Debugger (standardowy z AVR...
Witam, nie jestem elektronikiem ani programistą (dopiero staram się nauczyć). Interesuje mnie napisanie programu pod mikrokontroler Attiny2313 żeby działał następująco: zadanie sygnału będzie następowało za pomocą dwóch inputów oraz dodatkowo gdy PINB2 zostanie wciśnięty dłużej niż 3s PIND3 zmieni się na aktywny natomiast gdy później wciśniemy PINB1,...
Witam! Od niedawna zmagam się z problemem którego nie mogę rozwiązać, dlatego zwracam się do was z prośbą o pomoc.A więc tak: potrzebuję zrobić odmierzanie czasu.Zamysł jest taki: taktuję Timer0 (8 bitowy) zegarem 4Mhz bez preskalera.Licznik przepełnia się po 256 taktach zegara czylo flaga przepełnienia ustawiana jest co 64us.Następnie wywoływane jest...
Witam Mam problem z napisanym programem na attiny 2313, program może jest prosty ale dopiero co się uczę programowania mikroprocesorów w Bascomie.Program sam w sobie działa ale jest problem z drganiami na przełącznikach,switche mam podciągnięte do gnd,diody katodami do gnd anodami do procka.Czytałem o funkcji debounce i o timerach ale narazie timery...
Witam Mam pewien problem z tym kodem If Alarm = 2 Then Goto Alarmowanie Alarm = 0 End If to wszystko działa. Zmienną definiuję następująco: dim alarm as byte Nie mam pomysłu co robię źle.
Witam, Próbuję uruchomić zegarek na procku ATtiny2313. Problem w tym że zegarek (stoper) działa za wolno - nie chodzi tu o precyzyjne odmierzanie czasu ale dziesiątki sekund zmieniają sie z prędkością sekund. Program jest z mikroprocesorowej oślej łączki z edw. Tam użyty był at90s2313, ale jeżeli dobrze wyczytałem w nocie katalogowej to timer0 w obu...
Witam, jako, że w szkole nie mam programowania nowych uc postanowiłem się tego sam nauczyć. Zainspirował mnie projekt prędkościomierza, więc wybrałem go. Jest to mój pierwszy program i dlatego też chcę zapytać czy ma on szanse na poprawne działanie. Sygnał z czujnika to sygnał z hallotronu, który odbiera sygnał co 1/6 obwodu koła (czyli 0.25m). Reszta...
Witam Mam problem z kodem do silnika krokowego, otóż wszystko działa jak należy, jednak czasami coś się wiesza i silnik krokowy zatrzymuje się ,a za 2s znowu działa jak należy. Proszę o pomoc [syntax=basic4gl]Dim Przycisk As Byte , Kropy As Byte Config Portb = 255 Portb = 255 Config Portd = &B1111100 Portd = 127 Config Timer0 = Timer , Prescale = 1024...
Witam! Ze względu na niedokładność funkcji waitms(); postanowiłem uruchomić licznik TC1 w ATTINY2313. Ma to być obsługa pilota (prawdopodobnie JVC). Więcej danych: - ATTINY pracuje z częstotliwością 1MHz (wewnętrzny oscylator) - TC0 jest już zajęty innymi działaniami (w czasie obsługi pilota TC0 nie musi pracować) - czas, który chcę odczekać to 14700us...
Witam! Poniżej przedstawiam skrócony kod mojego programu: #include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 10000000 #include <util/delay.h> char znaki[10]={48, 49, 50, 51, 52, 53, 54, 55, 56, 57}; //znaki ASCII: 0 12 3 4 5 6 7 8 9 //__________________________POMIAR______... volatile...
przerwanie timera wpływa na polecenia z rodziny Wait - powodują one, w zależności od częstości wydłużenie czasu oczekiwania, dlatego trzeba w takim wypadku odmierzać czas używając timera ;-)
Ściągnij datasheet ze strony producenta i otwórz na stronie 23. Masz tam tabelkę do ustawienia bitów CKSEL3..1 (w Twoim przypadku to będzie 110) a na stronie 24 masz tabelkę do ustawienia bitów: CKSEL0 i SUT1..0. Musisz sam zadecydować jak je ustawić w zależności od Twoich potrzeb. Od tych bitów zależy czas startu mikrokontrolera. Pamiętaj, że bit zaprogramowany...
Niebardzo wiem jak mialbym to zrobic z poziomu BASCOMu! Rzeczywiscie uC sa nowiutkie dzis je pierwszy raz programowalem. Nie znam sie na tym zbyt dobrze wiec prosze powiedz dokladnie co mam ustawic i gdzie zeby czas byl odmierzany prawidlowo
Po dodaniu rezystorów podciągających działa już wyświetlacz i dioda:) Jednak dalej układ nie odmierza czasu
Witam. Dzięki, że się pochyliłeś nad moim problemem. Aktualnie przerabiam płytkę, która była robiona dla TON1(B0,B2,B4),TON2(B1,B3,B5) dla wcześniejszej wersji programu. Są na niej filtry TT i łatwiej poprzecinać ścieżki, niż przelutowywać elementy. Pierwsze spojrzenie na Twój kod pokazuje, że pętle decrementacji są krótsze, co pozwala na większą precyzję...
Popatrz na MCP3202. To przetwornik 12-bitowy 2 kanałowy. [url=http://cubloc.com/download/etc/MCP3... Kiedyś robiłem projekt na MCP3201 (wersja jednokanałowa w/w przetwornika). Współpracowało to z ATtiny2313. Zegar był generowany "na piechotę" poprzez zmianę stanu na nodze kontrolera, odstępy czasowe odmierzane NOP'ami - i to działało bez...
Witam Na zaliczenie projektu postanowiłem wykonać zegarek z kilkoma dodatkowymi funkcjami. A że miałem z góry określony typ mikrokontrolera muszę korzystać z ATTINY2313. Program odmierzający czas wczoraj skończyłem wszystko działało jak należy. Po dodaniu zewnętrznego kwarcu 4Mhz, włączyłem cały układ żeby sprawdzić czy poprawnie odmierza czas. Jakieś...
Tak,oczywiście ze zamiast waitms muszą by warunki żeby procesor mógł odmierzać czas . Natomiast zawsze nie rozumiałem sensu flag .
Więc sugerujesz ze problemem może być odmierzanie czasu? Może bez zbędnych komplikacji zmodyfikuje odmierzanie tak for(int i=0;i<100;i++) { _delay_ms(10); } dla jednej sekundy?
karol75 przecież płytka jest jednostronna a poza tym z tego co zauważyłem elementy smd są tańsze:) Co do zegarka wykonanie jest na poziomie jedyne co bym zmienił to tego 4017 w smd. Jak ma się kwestia dokładności odmierzanego czasu?
Ten preskaler czyli jak sie domyślam [Divide clock by 8] to zauważyłem jak ładowałem program z 90s2313 na Attiny2313 i licznik jakoś dziwnie czas zaczoł odmierzać. Czyli jak obecnie mam ustawione 4 Mhz na zewnętrznym kwarcu to jak przestawię na internal oscilator 4Mhz to będzie bez zmian dla programu?
jak zrobić żeby przerwanie od timmera 0 w atmedze8 było taktowane kwarcem zegarkowym(tzn. podłączam kwarc w miejsce xtal 1,xtal2 i skąd timmer 0 będzie wiedział ze ma być taktowany takim kwarcem) i jak dobrać preskaler itd żeby po zapełnieniu licznika odmierzana była 1s używam programmer's notepad.
Podaje program z komentarzem. ............ Ps. Nie ładowałem do licznika wartości bo potrzebuje dwóch pełnych przeładowań. W programie jest zupenie nie ważne ile tych przepełnień wystpuje; istotne aby rachunek odmierzanych odcinków czasu był zgodny z zamierzonym. Skoro jesteś zmuszony zliczać przepełnienia (co jest rzeczą absolutnie normalną), więc...
Witam! Zbudowałem sobie zegar na Attiny2313 oraz LCD 2x16. Czas "próbuje" odmierzać PCF8583 ale mu to nie wychodzi. 1. Dlaczego PCF8583 nie działa dokładnie ? na 1h <> 4 min błędu! spieszy. Układ działa z kondensatorem 27pF do 1 pinu oraz VDD. Jak to ustawić ? 2. Jaki jest najdokładniejszy zegar RTC ? Widziałem, że w DIY zegarach ludzie stosują...
Niby tak jak wykasuje je całkiem to czas odmierza ale bardzo krótko daje stan wysoki na ledy i prawie ich nie widać . Chyba mój algorytm jest do bani :(.
Ta pętla nie jest konieczna. Dodałem ją żeby przyciski działały cały czas. Bo jak byś napisał Waitms 1000 to przez całe 1000ms przyciski by nie działały. A tak w pętli co raz masz sprawdzenie przycisków i odmierzanie czasu 10ms. Czyli łączenie te 1000ms i tak uzyskasz a przy okazji przyciski będą normalnie działały.
(at)marco47 Nie rozumiem twojego pytania. (at)janbernat Timer1 służy do odmierzania 1 sek. Po tym czasie następuje przerwanie, w którym liczba zliczonych impulsów (przez timer0) przepisywana jest do zmiennej wynik.
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...
paavo91 Podkreślam że działanie musi być natychmiastowe i nie zależne czy przycisk wcisnę na moment czy wcisnę i przytrzymam. .............. ,......jak to rozwiązać. Zastosuj konstrukcję 'DEBOUNCE' w połączeniu z "Toggle Switch" jak dla przyładu przełączania/załączana świateł głównych: [code][syntax=basic4gl] $regfile = "attiny2313.dat" $crystal =...
Witam od jakiegoś czasu próbuję w Bascom napisać zegarek (lub coś co precyzyjnie odmierza czas), ale niestety nie wychodzi mi to, mógłby mi ktoś pomoc udzielić wskazówki bo już sie powoli gubię
Przymierzam się do zrobienia komputerka do samochodu. Jego głównym celem ma być obliczanie chwilowego i średniego zużycia paliwa. Nie wiem czy mi się to uda ale chcę wykorzystać kontroler ATTiny2313 i tu mam problem - potrzebuję zliczać czas wtrysku i ilość impulsów z czujnika ABS lub impulsatora na skrzyni, potrzebuję też odmierzać czas... i tu mam...
Witam. Temat już był poruszany, lecz ja nie znalazłem na moje pytanie odpowiedzi. Czy aby Attiny2313 był kompatybilny z at90s2313 wystarczy ustawić fusebit c - divide clock by 8 disable i to już wszystko czy gdzieś jeszcze coś zmienić. Zastosowałem rezonator kwarcowy 4MHz. Po takiej zmianie jak wyżej nie zauważyłem różnicy w odmierzaniu czasu, lecz...
Najprościej i najtaniej - kawałek procesorka (ATTiny11, ATTiny2313) i krótki programik badający wejścia i odmierzający tę minutkę (najprościej by wyszło pewnie w BASCOMie). W wersji CMOS lub TTL trzeba dać dwa zatrzaski, dwie bramki XOR z wejściami dołączonymi do wejść (XY) i wyjść zatrzasków (wykrywanie zmian sygnału). Wyjścia bramek XOR przez OR na...
Witam , po przerwie , Nie, w zależności od szacowanych obrotów wybierasz metodę pomiaru, w której wykorzystujesz jeden (dowolny) timer, lub oba w której jeden odmierza czas a drugi zlicza impulsy. Ta ostatnia jest alternatywą do tej którą zastosowałeś lecz czas jest mierzony timerem a nie przez processor instrukcją Wait . Ta druga metoda polega na pomiarze...
to może wykorzystasz częsc programu która odpowiada za odmierzanie jednej sekundy np dla zwykłego zegarka pozostaje tylko przelicznie dla danego kwarcu. projektów zegarków troche jest. tak sobie mysle ze problem z pomiarem tzn że silniczki maja taką samą prekdkość może byc zbyt krótki czas pomiaru czyli jedna sekunda w czasie której np dla wartości...
tak jest w bascomie i koniec, nic na to nie poradzisz prawdopodobnie czas potrzebny na przeliczenie ile porezeba instrukcji na 1 uS jest porównywalnie duzy z czasem 1uS dlatego było by to bez sensu. jeśli chcesz zrobić programowane PWM to użyj przerwania licznika do odmierzania czasu i całłą obługe zrób w przerwaniu. ja tak czasami robie gdy potrzebuje...
Pisałem ostatnio zegar na attiny2313 również popędzany z 8Mhz. Ponieważ musiałem ograniczyć się do 8bitowego licznika wykorzystałem: prescaller 64, zliczanie do 250 w trybie z maksymalną wartością licznik w rejestrze OCRxx i generowanie przerwania przy przepełnieniu. Otrzymałem generowanie przerwania z częstotliwością 500Hz. Teraz tylko programowy podział...
Timer0 i timer1 używają tego samego preskalera. Dlatego instrukcja prescale=64 zmienia warunki dla funkcji getrc5. Zajrzyj do noty katalogowej ATtiny2313 i nie pisz głupot więcej. Dodano po 14 Odmierz20ms1: 'funkcja obsługi serwa1 Timer1 = 65286 'przy wartosci 65286 timer1 bedzie generował przerwanie co 2ms Incr Licz2ms1 'zwiększ licznik zliczający...
Można spróbować to zrobić na bramkach i ewentualnie przerzutnikach 'RS', albo 'D'. Tylko tego trochę dużo wyjdzie. Bramki: myślę, że z 2 bramek 2-wejściowych i 2 bramek 3-wejściowych można zbudować układ 2 przerzutników 'RS', do którego podłączy się 2 przyciski, i on zapamięta wciśnięcie przycisku i który to był; 3 takie układy, i do tego trzeba dodać...
Napisz jeszcze, na czym polega problem, bo na razie wygląda na to, że napisałeś kod do szybkiego migania diodami i diody szybko migają. A tak ogólnie - do odmierzania czasu używa się timera, a nie pętli, zwłaszcza, gdy czas wykonania kodu silnie zależy od wartości zmiennych. Przy takiej deklaracji zmiennej delay kompilator może usunąć Twoją pętlę opóźniającą.
Oto program który napisałem $regfile = "attiny2313.dat" 'rodzaj mikrokontrolera $crystal = 8000000 '8MHz Dim Pozycja1 As Integer 'zmienna określająca położenie serwa1 Dim Pozycja2 As Integer 'zxmienna określająca położenie serwa2 Dim Czas1 As Integer 'zmienna pomocnicza do odmierzania czasu Dim Czas2 As Integer 'zmienna pomocnicza do odmierzania...
Jeśli przerwania nie są wykorzystywane w programie to od bidy te WAIT jest w miarę dokładnie (na tyle na ile zegar trzyma) ale zdecydowanie lepszym rozwiązaniem jest używanie timerów do odmierzania czasu. W momencie włączenia przerwań dokładność WAIT drastycznie spada. Najlepiej zapomnij o WAIT i naucz się timerów. WAIT można spokojnie i bezpiecznie...
Czas odmierza się oczywiście timerem. Możesz nastawić timer na 18 ms, dobierając odpowiednio do częstotliwości procesora preskaler i wartość rejestru porównania. Możesz też zaprogramować timer na zgłaszania przerwać np. co 1 ms i odliczyć do 18 w procedurze obsługi przerwania, po czym programowo zmienić stan wyjścia. Zacznij od poczytania w dokumentacji...
Witam, Mam problem z obsługą timerów w Attiny2313. Korzystam ze środowiska Atnel studio 6. Przechodząc do rzeczy, napisałem sobie kiedyś program w Basomie, w którym odmierzałem czas za pomocą Timer0. Poniżej fragmenty kodu odpowiedzialne za konfigurację tego timera: [syntax=basic4gl] Config Timer0 = Timer , Prescale = 256 Load Timer0 = 45 On Timer0...
Witam Rezonator jest potrzebny do tego aby "napędzać" cały mikrokontroler. Układ rezonansowy składa się w tym przypadku z rezonatora kwarcowego oraz dwóch kondensatorów ceremicznych. Rezonator kwarcowy zapewnia dużą stabilność parametrów w czasie. Jeśli nie potrzebujesz dużej dokładności w odmierzaniu odcinków czasu to nie musisz tego kupować. Attiny...
Przy projektowaniu używam kalkulatora chociaż to akurat można policzyć na palcach. Jeśli dobrze pamietam to impuls powinien się zawierać między 1ms a 2ms a servo stoi na środku przy 1,5ms. Niemniej daje to 1ms którą chciałbś podzielić tak by móc sterować servem. Załóżmy że chcesz to podzielić tylko na 100 części. Jedna milisekunda ma 1000us Podzielona...
Wklejam kod. [syntax=basic4gl]'ATtiny2313 mruga dioda ustawienie portów. $regfile = "ATtiny2313.dat" $crystal = 10000000 Config Lcd = 16 * 1a Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , Rs = Portd.4 , E = Portd.5 Config Portd.6 = Output 'podłączenie diody pin nr 11 Config Timer0 = Timer , Prescale = 1024 Dim...
A propos 1 i tego co napisał kol. slx: http://mikrokontrolery.blogspot.com/2011... Swoją drogą odmierzanie czasu za pomocą delay - rozumiem, że to tylko do testów? Jeszcze uwaga dot. F_CPU - nie definiuj w kodzie z tych powodów: http://mikrokontrolery.blogspot.com/2011... Stosuj ISR():...
Też myślałem, że to proste ale ciągle robie coś nie tak. Działało to tak: Przerwanie co około 96 us. Sprawdzam czy nie ma zera, jeśli jest to wyłączam triak. Odmierzam sobie np. 5ms i włączam triak. Niby proste, ale problem był w tym że na początku regulacji (do około 40% była płynna regulacja, przy następnym kroku był przeskok do około 60% a potem...
Wydaje mi się, że najpierw powinno być „uruchomione” odliczanie tych 0,1 sek, wyzwalane pierwszym pikiem z „paczki”. Potem trzeba odczekać te 0,1 sekundy na zanik „szumów” i zacząć zliczanie w czasie 0,9 sek. Ilość zliczonych pików podzielona przez czas da mi częstotliwość. Wynik ma się utrzymywać na wyświetlaczu...
Oczywiście, że pomieszałeś, bo pod PD3 jednocześnie masz podłączone sterowanie anodą wyświetlacza i przycisk - jak wciśniesz przycisk, to odpowiednia cyfra wyświetlacza będzie zawsze aktywna... Użyj Timer1 w trybie CTC do odmierzania 0.01s - przy F_CPU = 1MHz chcesz mieć przerwanie z f=100Hz czyli odliczasz do 10000-1. To będzie za mała częstotliwość...
Prostszym językiem to będzie tak. Ponieważ masz 2 wyświetlacze, wyświetlasz cyfrę na pierwszym wyświetlaczu, później go gasisz i wyświetlasz cyfrę na drugim. Żeby nie było widać migania cyfr trzeba to robić 100 razy na sekundę, albo szybciej. Procesor więc musi zatrzymywać się 100 razy w ciągu sekundy i zapalać wyświetlacze na przemian. W tym celu należy...
Spoko, tylko to jest na ATmega128. Co do kart pamięci to musiałbyś napisać obsługę sam. Generalnie poczytaj notę katalogową. //inicjalizacja Timera 0 jako generatora PWM void Timer0_PWM_mode() { DDRB |= (1<<4); TCCR0 |= (1<<WGM00) | (1<<WGM01) | (1<<COM01) | (1<<CS00);...
odmierzanie czasu odmierzanie atmega odmierzanie długości
kadett digital philips regulacja głośność wgrać mapę
Tuya SmartLife-EE19 Wi-Fi Sensor: Local OTA Access, Temperature/Humidity Detection, and Soft AP Configuration Czy kocioł na pellet powinien posiadać uziemienie?