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...
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 Ostatnio zająłem się nauką programowania procesorów i postanowiłem napisać program zegara. I oto i on Ddrd = &B1111100 Portd = 127 Ddrb = 255 Portb = 255 Config Timer0 = Timer , Prescale = 64 Enable Interrupts : Enable Timer0 On Timer0 Zegar Dim Liczsek As Word , Liczsekz As Byte , Liczwys As Byte Dim Setmin As Byte , Dziemin As Byte , Setgodz...
Udało mi się to poustawiać. Procesor korzysta z zewnętrznego kwarcu 4Mhz. Program wygląda tak Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte , Maxi As Byte Dim , Godzjed As Byte , Godzdzies As Byte , Mux As Byte , Migaj As Bit , Uniwers As Byte Config Portb = 255 : Portb = &B255 : Config Portd = &B1111100 : Portd...
No więc Timer chodzi na 1MHz. Kwarc masz 8MHz ale preskaler to 8 więc wychodzi 1MHz. Przerwanie od Timera następuje co 5000 cykli (mniej więcej bo trochę zajmuje zdjęcie rejestrów ze stosu). Czyli 1000000Hz / 5000 = 200Hz Tablica ma 64B ale z tego co widzę to siedzą w niej dwa okresy. Czyli tak praktycznie to ma 32B. Więc okres rozkłada się na 32 próbki....
Właśnie zaczynam zabawę z programowaniem mojego układu i chciałem nauczyć się wykonywania pomiarów czasu ale prawdopodobnie mam źle skonfigurowanego timera. Przejrzałem sporo tematów tutaj i nie tylko, czytałem datasheeta i dalej tego nie rozumiem. Program jak na razie ma mierzyć czas po jakim pojawi się impuls na porcie D i wyświetlać rząd wielkości...
Witam! Mam następujący problem. Jak ustawić prescaler i licznik aby odmierzyć 1 sekundę. programuje w bascom-ie, procesor attiny2313 zegar 1MHZ. Wspomagam się książką Wiązani, ale tam jest przykład dla atmegi8 i w pewnym momencie występuje stwierdzenie,że przy 8mhz jeden cykl zegara wynosi 125ns. To stwierdzenie jest dla mnie kluczem do zrozumienia...
Witam. Korzystając z płytki testowej zaprogramowałem układ AT90S2313 tak by pełnił funkcje najprostszego zegara i tak sie stało. Jednak gdy to samo chciałem zrobić z układem ATTINY2313 korzystając z tego samego kodu układ odmówił posłuszeństwa, a konkretnie obraz zaczął migać i czas był opóźniony o kilka sekund. Można to zrobić zwiększając częstotliwość...
Tutaj popełniasz dosyć poważny błąd. Po odebraniu pierwszego bajtu zatrzymujesz transmisję na SPI na stosunkowo długi czas potrzebny na przesłanie tego bajtu poprzez USART. Nie to jednak jest najgorsze. Po dokładniejszym przeanalizowaniu noty ADIS16100 zauważyłem dwa dosyć ważne problemy. Pierwszy to taki, że stosunek czasu trwania stanu wysokiego...
Próbuję to uruchomić z timerem, tylko że niezbyt chce to ruszyć. Tak jakby, timer nie ruszał. [syntax=c] //#define F_CPU 1000000L #include <avr/interrupt.h>// Definicje nazw pinow układu #include <avr/io.h> #include <util/delay.h> #define cbi(sfr,bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) #define sbi(sfr,bit) (_SFR_BYTE(sfr) |= _BV(bit))...
Witam, Miałem zamiar zrobić zegar na Attiny2313, wiedziałem, że najgorzej będzie z wyświetlaniem. Pomęczyłem się trochę i udało się, tylko teraz stoję przed większym problemem (przynajmniej dla mnie). Gdy zdefiniuję Timer0 lub Timer1, wtedy na wyświetlaczach pojawia się odwrócone AA:AA. Dlaczego tak się dzieje? Co zrobić aby działało? Zamieszczam listing:...
No masz rację złego słowa użyłem :p Ale jak dam rezonator zewnętrzny to wtedy timer bedzie dokładniejszy? To rozwiąże problem? Już rozumiem o co Ci chodzi z tym preskalerem :D rzeczywiście nie spojrzałem na to z tej strony, czyli w tym czasie moge miec duzo wiecej instrukcji żeby tylko trwały mniej niż 255 cykli nie? A co do datasheetu to juz studiowałem...
Kolego dondu: deklaracja zmiennej licznik: unsigned long int licznik=0;//zmienna globalna licznik Fuse bity ustawione prawidłowo (temat wałkowany setki razy).Zegar definiowałem początkowo w ustawieniach konfiguracyjnych AVR Studio, później gdy zaczęły się problemy przez #define F_CPU. Do mirekk36: Timer sprzętowy działa bardzo dobrze i precyzyjnie....
OK, myślałem że mnie ktoś wyręczy , ale ... :( Dodaję komentarze: $regfile = "attiny2313.dat" $crystal = 4000000 Config Portd.5 = Output 'musi być ustawiony jako wyjście , by można go podłączyć do przerzutnika OC0B Ocr0b = &H37 'wartość obliczyć tak:$crystal/(36000*2) 'Powyższa wartość nie musi być taka jak wychodzi z wyliczenia...
markus_wolff - wszystko się zgadza bo preskaler jest nastawiony na clk/64 - czyli przerwanie timer1 co sekunde jj - dzięki , na pewno dziś poczytam john_t - przecież już doszliśmy z kolegą markus_wolff , że ustawienia bitów w pony prog są dobre ( bo 1 tzn - unprogrammed, co w pony prog daje pustą kratkę w przeciwienstwie do 0 - programmed - czyli haczyk)....
Niestety nie działa od razu na 8MHz bo ustawiony jest podział przez 8 tzw. CKDIV8 więc działa na 1MHz. Oczywiście że można działać na wew. oscylatorze ale jest on nie dokładny zwłaszcza jeśli robisz zegarek na timerze lub korzystasz z UARTA. Na pocieszenie powiem że da się podciągnąć jego dokładność a jak to zrobić to znajdziesz [url=]tu.
Witam, tak jak napisałem w temacie - piszę programowy pwm na attiny2313. Program działa w oparciu o przerwania od przepełnienia timer0. Timer0 ustawiam w normal mode. Fusebity daję na wewnętrzny oscylator 8MHz (bez dzielenia). Z moich obliczeń wynika, że przy rozdzielczości 256 powinienem uzyskać częstotliwość 8MHz/256 = 30kHz (ok), a mierzona oscyloskopem...
Hi All, Posiedzialem troche nad tym ukladem poszukalem troche w necie i moge powiedziec ze udalo mi sie w koncu uruchomic ten zegar, ale jest jedna rzecz ktora psuje caly efekt - a mianowice kolumna wyswietlajaca jednostki minut nie wygasza calkowicie diod, efekt jest taki, ze nawet gdy koluma jednostek minut powinna pokazywac 0 (czyli wszystkie diody...
Teraz chyba wreszcie zrozumiałem te timery, wreszcie zaczęło to mieć sens i działa tak jak ja chcę. Myślałem że użycie prescalera automatycznie powinno wystartować timer a włączenie globalnych przerwań załatwi sprawę, nie wiedziałem że trzeba jeszcze osobno włączyć timer. Dobrze myślałeś!... Ustawienie prescalera na każdą wartośc różną od zera startuje...
Witam, napotkałem na pewien problem przy budowie dużego zegara LED opartego na module RTC i procesorze AVR Attiny2313, w związku z tym liczę na waszą pomoc. Układ przedstawiony jest na załączonym zdjęciu, jest to klasyczne rozwiązanie z tym, że gotowy moduł wyświetlaczy jaki posiadam jest dużych wymiarów stad konieczność zasilania jednego segmentu napięciem...
Witam. Zaprogramowalem mikrokontroler tym programem: $regfile = "attiny2313.dat" $crystal = 4000000 Config Pinb.3 = Output Config Timer0 = Timer , Prescale = 256 On Timer0 Odmierz_1s Dim Licz_20ms As Byte Enable Interrupts Load Timer0 = 156 Enable Timer0 Do Loop End Odmierz_1s: Load Timer0 = 156 Incr Licz_20ms If Licz_20ms = 100 Then Licz_20ms = 0 Toggle...
Nie chce zakładać owego tematu wiec napisze w starym.Napisałem taki soft do zegarka miałem pod ręka tylko polski help do bascoma i soft do innego zegarka tylko na AT89C405. Proszę o pomoc i wyrozumiałość ponieważ bascoma znam bardzo krotko. Nie wyświetla tego co powinien na początku widać cyfry odlicza sekundy potem się coś rypie i już nic nie wyświetla.Z...
Trzeba wykorzystać timer, zliczający imuplsy zegarowe. Jeśli zegar będzie pochodził z kwarcu to dokładność będzie taka sama lub lepsza niż z dedykowanego układu RTC, jeśli z wbudowanego generatora to dokładność będzie taka sobie, ale może zadowalająca. Następnie trzeba przeliczyć impulsy timera na godziny, minuty i datę. Tu prosta matematyka się kłania....
Witam! Mam dość nietypowy problem z AVR-kami. Ostatnio używałem Timera na ATTiny2313. Ustawiłem preskaler /256, kwarc 8MHz, timer 16bit w trybie porównania i przerwanie. Wartość do porównania była ustawiona na ok. 31250. Ostatecznie powinienem otrzymać przerwanie z częstotliwością ok. 1Hz. To zwiększało licznik i on był wyświetlany. I tu pojawił się...
Kombinowałem trochę z tym zegarem, ale najgorsze jest ustawianie drugiej linii, bo zegar działa w pętli, i nie wyświetla w drugiej albo migocze szybko. Zostawiłem go na razie, bo kończę zegar na IW-18. Dziś skończę obudowę do IW-18, i zabieram się znowu za ten drugi. No i się wziąłem. Poskładałem taki kod jak niżej: [syntax=basic4gl]$regfile = "m32def.DAT"...
Ad 1. Skaczesz po procesorach, ze trudno nadążyć :) ATtiny2313 nie ma TOSC, bo nie ma Timera2 pracującego asynchronicznie, Możesz oczywiście zrobić własny generator i podłączyć do T0, ale wtedy uśpisz ATtiny jedynie do trybu Idle przez co będzie zużywał sporo prądu. Ale jeśli to nie jest projekt zasilany z baterii, to nie ma znaczenia. Ad 2. i 3. Ad...
Mam nadzieję że to nie pójdzie do kosza: $crystal = 4000000 '4MHz $regfile = "attiny2313.dat" Config 1wire = Portd.5 Config Timer0 = Timer , Prescale = 64 On Timer0 Przerwanie0 Enable Interrupts Enable Timer0 Start Timer0 Porta = 0 Portb = 0 Portd = 0 Config Porta = 0 Config Portb = 0 Config Portd = 0 '**************************** 'Zmienne...
wielkie dzięki spróbuje Dodano po 5 mój program program działa tak ze wykonuje zadanie i daje odpowiednią liczbę np.1 i powraca na początek później robi to samo i daje 2 i tak w kółko a multipleksowanie jest na timerze0 jeśli zmienna wyniesie =0 to wyświetlacz z jednostkami jeśli 1 to dziesiątki więc funkcja case chyba ty nie pasuje ale zrobiłem to...
Jak już pisałem nawet jeśli go nie wyłączyłem po inicjacji to nie liczy NIC ponieważ sygnał zegarowy pojawia się dopiero po linijce strt = 0 wtedy załącza się układ i pind.0 = 0 , potem liczy dopóki pind.0 = 1 (zależy od kondensatora) . Gdy na pind.0 pojawia się 1 , pojawia się równocześnie na clock enable preskalera (aktywowany stanem niskim) który...
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. Kwartz ( quartz/kwarc) zegarkowy podłączony do m8...
Szkoda że tak łatwo się zniechęcasz. Ja mam taki problem z zegarkiem , że po podłączeniu kwarcu zegarkowego do XTAL w atmega8 zaczął chodzić dokładnie ...tylko 2 razy wolniej. Wie ktoś jak to naprawić ?? Już wiem co jest nie tak chyba. Timer1 jest 16-bitowy >liczy do 65536 potem następuje przepełnienie. A kwarc zegarkowy "liczy" do połowy tego(32.768Khz)....
Witam, Męczę właśnie kod do sterownika serw. Na chwilę obecną jest to coś takiego: (wartościami zmiennych stan i zegar się nie przejmujcie, ostatecznie będę inne. Procek ATTiny2313, taktowany wewnętrznym zegarem 8MHz) #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> // definicje SIGNAL, INTERRUPT// Następnie deklarujemy...
Nie spełniają? Najdroższy cyfrowy tam przedstawiony kosztuje 224,- Kč -> mniej niż 30 Zł. Ale mniejsza z tym, bo Twoje żądanie potrzebuje aż 96 załącz/wyłącz cykli na dobę. A tu będzie z takimi zegarami problem. Co do dokładności zegara na procku, to albo jakiś RTC albo moduł DCF albo da się też takim podobnym kodem: $regfile = "Attiny2313.DAT"...
Dzięki bardzo zrobiłem to na timerze odliczanie zamiast wait 1 ale jaka dac wartosc w timer1 aby odmierzało co sekunde albo co minute jest jakis wzor aby to obliczyc?? przycisk działa wiekie dzieki $regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował Dim Jedn As Byte...
Ja właśnie wyczaiłem fajną róznicę na korzyść ATtiny2313A. Mianowicie do USI dodano dodatkowy bufor odbiorczy, czyli np. przy realizacji SPI nadaje się "po staremu" wpisując do USIDR, natomiast odbierać mozna "po staremu" czytając z USIDR bezpośrenio po odebraniu danych, bądź wygodniej - czytając z bufora USIBR - nawet w trakcie transmisji. Co ciekawe...
Konstrukcja jest pod adresem: Coś mi się wydaje, że wyświetlacze są typu wspólna katoda (a nie WA - jak na schemacie i w wykazie elementów). Tak, przepraszam za pomyłkę-jakoś anodę z katodą pomyliłem. Oczywiście, wyświetlacze z wspólną katodą tam mam. Myślałem, że wciąż rozmawiamy o Bascomie ;) Mój program został napisany w Bascomie Widzę mnóstwo ekspertów......
Zgadzam się z wypowiedzią, że można tu zastosować większy wyświetlacz LED, wybór obecnego był podyktowany jedynie ekonomią. Z czytelnością wbrew pozorom jest nieźle. Odnośnie wewnętrznego zasilacza, taki był świadomy zamysł. Mam w gratach kilkanaście zasilaczy wtyczkowych, więc to żaden problem, zastosować jeden z nich lub upchnąć te elementy zasilające...
Ten dziwny tytuł to propozycja wykorzystania modułu wyświetlacza z prostych nieco przestarzałych tunerów Echostar DSB-616 lub DSB- 717. Zapewne u niejednego elektronika (lub jego znajomego) taki tuner leżakuje na dnie szafy. Moduły różnią się wyposażeniem. Oprócz oczywiście procesora ATtiny2313 i 4xLED 7SEG, ten drugi posiada kilka przycisków, dodatkowy...
Tryb CTC to tryb pracy timera, w którym przerwanie (od porównania, nie przepełnienia) jest wywoływane na skutek zrównania się wartości timera z rejestrem OCRA timera (jest o tym w dokumentacji do attiny2313). Moje wytknięcie jest raczej przypuszczeniem. Jeśli ów redaktor sprawdził, upewnił się, że wartość do timera jest wpisywana w dopuszczalnym zakresie...
Witam. Przejrzalem CALE forum w poszukiwaniu rozwiazania mojego problemu. Probowalem wszystkiego co bylo podane w postach. Mam problem z polaczeniem tn2313 z ds18b20. zegar: kwarc 4MHz (testowalem juz na wew 1-8MHz bez rezultatow - ckdiv8 konfigurowalem poprawnie 1dis 0 en) podlaczam do portu d pod rozne piny. Od strony programowej tez powinno byc all...
A co z fusebitami? I ustawieniem np. parametrów zegara? >>> jacobsek - na początek kup raczej at90s2313. Pozdr. N. A ja polecam tiny2313 - ma więcej rejestrów timerów i ma wewnętrzny zegar - mniej roboty w projektach.
No właśnie zmieniłem CLKDIV8 na 1 czyli nie zaprogramowane i wreszcie zaczęło działać ale nadal przy ustawieniach TIMERA jakie podałem w programie nie odlicza mi 1s ale około 3s natomiast przy takich ustawieniach: zegar 12MHz prescaler=1, Load Timer1 = 65000 i zliczaniu 200 Dla Timera1 przy taktowaniu 12MHz aby uzyskac 1sec. bez kombinowania zliczania...
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...
Witam! Próbuję zrobić czujnik temperatury z ustawianym alarmem do pieca CO na ATtiny2313 i czujniku DS18B20. Niemal wszystko jest cacy, układ mierzy temperaturę, wyświetla ją na wyświetlaczu 7 segmentowym, odczytuje zapisaną wartość alarmu i alarm włącza. Problem zaczyna się, gdy chcę zmienić temperaturę alarmu. Do nastawiania temperatury mają służyć...
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...
Dziękuję serdecznie za odpowiedzi. Przepraszam że nie wspomniałem o zegarze który ustawiony jest na 8MHz. Sprawdzałem w fuse bitach odnośnie dzielnika i okazało się że w m8 nie istnieje tak jak to były np w attiny2313. Dziękuję za pomoc koledze landy13 rzeczywiście bit ten jest w innym rejestrze, moje niedopatrzenie. Po zmianie wszystko ruszyło. Pozdrawiam...
Zbudowałem sterownik silnika krokowego na parze L297 i L298.Steruje sie to standardowo sygnałem DIR-kierunek, ENABLE-załączenie silnika,H/L -praca krok półkrok, CLK -impulsy zegarowe sterujące szybkością pracy krokowca. Sterownik działa , wypróbowany na generatorku NE555 jest OK. Przyszedł czas na sterowanie tego z procka.Sama baza zbudowana jest z...
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...
Chyba mój algorytm jest do bani :(. Chyba tu masz zupełną rację. Po piersze: Czy na prawdę taktujesz processor rezonatorem 20 MHz włącznie ze odpowiedno zaprogramowanymi fuse bitami? Jeżeli tak to praktycznie nie masz możliwości skonfigurowania timera0 aby nim odmierzyc 8 ms pomijajac reszte błędnych rachunków. Nawet przy prescalerze 1024 nie będzie...
Dziękuję za odpowiedź. Oczywiście o volatile pamiętałem, a cały środek przerwania w C mam już napisany tylko tutaj nie wrzucałem. Problem z dziwnym działaniem programu już rozwiązałem. Okazało się, że przyczyną nie był timer tylko brak dodania break w pętli switch. Tak banalna rzecz, że aż mi głupio :D W każdym razie dziękuję za pomoc. Dodano po 2 Pozwolę...
Witam. Nadmieniam, że czytałem już kilka wątków i stosowałem metody rozwiązania problemu, jednak nie pomogło mi to;/ Do rzeczy - buduję samochodzik zabawkę, sterowany pilotem w kodzie RC5. NIestety bezskutecznie. Odbiornik podczerwieni - tsop1736, zasilanie podpięte przez szeregowy rezystor 220omów i kondensator 100u. W pierwotnej wersji, wyjście odbiornika...
Tzn. program może przejść do następnej linii w trakcie rozświetlania tylko nie wolno mu zmieniać nr diody w tym czasie. Od tego włąśnie jest zmienna "Go", która przyjmuje wartość zero jeśli dioda już jest w pełni jasna lub ciemna. Ustawienie tej samej zmiennej (czyli podanie jedynki dla "Go") jest sygnałem że aktualny nr diody ma znowu wygaszać (lub...
zrobilem schemat zegarka na lcd alfanumerycznym 24x2 na attiny2313 i nie dziala schemat i program sciagnelem z tej strony: na tej stronie uzyty jes at90s2313 ja uzylem attin2313 i lcd 16x2 a ja uzylem 24x2. nie zmienialem kodu a compliwoalem w avr studio. Progamuje przez stk200/300. tutaj jest kod ;***************************************...
Po długich bojach ustawiłem w końcu timer1 w tryb CTC wyniki podam jutro, Teraz mam nową prośbę w jaki sposób można zoptymalizować ten kod źr, ponieważ jest tam masa różnych "niepewnych" i pamięcio-żernych rozwiązań oto kod po dodaniu CTC #include <avr/io.h> #include <avr/interrupt.h> const unsigned char znaki[10] = {0xC0,0xE7,0x89,0x83,0xA6,0x92,0x90...
Musisz sam wygenerować przebieg zegarowy - jeśli Twój Tiny jest Masterem. Po prostu załaduj rejestr danych i w pętli 16 razy ustaw bit USITC w stan 1. To wygeneruje przebieg potrzebny do przesłania 8 bitów. Możesz też skorzystać z przerwań jakie generuje Timer0, ale to wymaga ustawienia innego trybu za pomocą USICS1..0.
Bity 7-4 sterują diodami, 3-0 tranzystorami npn. 0b00101000 oznacza że ma się zapalić pierwszy segment czyli dziesiątki godzin, i druga dioda znacząca "2". Godzina z jaką zaczyna zegar to 23:28. Warunek sprawdza czy dodana właśnie sekunda zmieniła godzinę na 24, jeśli tak to zmienia godzinę na 00. Po kompilacji z "-Os" przerwanie jest w tablicy przerwań...
Teraz powinno być dobrze Zależy, co rozumiesz przez "dobrze". Jeśli chodzi o to, czy ten program będzie działał zgodnie z Twoimi założeniami, to musisz sam jakoś przetestować, bo ja nie mam czasu na szczegółowe analizy. Nie znam zbyt dobrze Eclipse i nie wiem, jakie ma możliwości symulacji, ewentualnie pozostaje skompilowanie, zaprogramowanie mikrokontrolera...
Udało mi się znaleźć fajny kod z opisem programowego pwm-a od RedLina. Przerobiłem go trochę na moje 7 kanałów. Domyślnie był na 3. Wygląda na to jakby mikrokontroler się nie wyrabiał, ale nie jestem pewien. Jak można byłoby to zoptyamlizować ? Odnośnie korekcji jasności świecenia, jak mógłbym ją tutaj doimpementować :)?
Szanowny Panie (at)tadeko9 , przepraszam za mój poprzedni, faktycznie szorstki, ton. Co złego to nie ja :D W pierwszym poście dołączył Pan taki kod: Dlatego dołączam od razu ten dla powyższego kodu. [syntax=avrasm]2: $regfile = "attiny2313.dat" 3: $crystal = 4000000 4: $hwstack = 40 5: $swstack = 16 6: $framesize = 32 7: 8: Config Portd.2 = Input :...
Zrób tak, jak Ci radzi przemek20 - ustaw timer w tryb CTC i daj przebieg na PB.4. OCR0A użyjesz do określenia zakresu zliczania licznika, czyli twoje 250 (albo 249, bo nie pamiętam kiedy następuje reset timera). OCR0B ustaw na taką samą wartość. Sposób zachowania się portu ustaw na "toggle OC0B on compare match" i już masz generator. Jak wszystko ustawisz...
Witam Na wstępie zaznaczam, że AVR-ami zajmuje się dopiero od tygodnia :). Mam problem jak w temacie. Potrzebuję aby timer 1 (16 bitowy) liczył od ustalonej wartości początkowej, a po wystąpieniu przepełnienia wygenerował przerwanie i się zatrzymał. Potrzebuję odliczyć 25ms. Attiny taktowany jest zegarem 16MHz, dzielnik częstotliwości dla timera 1 ustawiłem...
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...
tak na wstępie - to teraz aż przyjemnie patrzy się na twój kod Dzięki mirekk36, staram się wcielać w życie dobre rady bardziej doświadczonych. Też myślałem, że problem polega równoczesnym zajściu dwóch przerwań, ale nie zależnie od tego jaki czas przerwania ustawie .MACRO Czas_licznika push acc ldi acc, INT(((at)0)*CZESTOTLIWOSC_uP...
K_o_n_r_a_d , rozumiem. Nie potrzebuję aż tak dużej dokładności na zakres obrotu serwa jaką przypuszczałem. Problem tkwi w uzyskaniu tych 50Hz z zegara 4MHz. Sam preskaler nie jest w stanie tego uzyskać. W jaki sposób to zrealizować? (w tym przykładowym programie opóźnienie "Waitms 5" dałem jako przykładowe - zupełnie przypadkowe). Waitms 5 w żaden...
Witam! Po próbach wyszukania włąściwej odpowiedzi postanowiłem zapytać kolegów o następujący problem - muszę dosyć precyzyjnie wygenerować przerwanie w Bascomie , używam do tego timer0 i odpowiedniego przerwania on timer0. Dziwny dla mnie jest fakt że programik : on timer0 etykietaprzerwania .... etykietaprzerwania: portb7 = not portb.7 timer0 = 200...
To proste: Aby odczekać sekundę to przy zegarze 1Mhz musisz odczekać 1 000 000 cykli. Możesz użyć do tego preskalera (1,8,64,256,1024). Jesli chcesz odmierzyć sekundę to musisz użyć preskalera 64 (256 i 1024 nie wchodzi w gre ponieważ jeśli podzielimy 1 000 000 przez te liczby to nie wychodzi liczba całkowita). I tak przy preskalerze 64 timer musi zliczyć...
Witam! Napisałem program, który ma liczyć ile czasu trwał impuls i jaki jest odstęp między nimi. Problem wygląda tak, że mocno przekłamuje, ponad 2x i nie wiem z czego to wynika. Pomysł był taki, aby za pomocą przerwania od zrównania licznika uzyskiwać czas, czyli jedno przerwanie to u mnie 10µs. Gdy pojawia się impuls, ogólny czas między impulsami...
Witam. Składam sobie zegar z termometrem na Attiny2313 i DS18B20 lecz mam problem z ujemną temperaturą. Do odczytu temperatury używam programu kolegi "Elektrooonik" ponieważ zajmuje najmniej kodu co jest tu dla mnie ważne i z 1-Wire styczność mam pierwszy raz więc wpierw wolę mieć jakiś przykład. Program Oryginalny do pomiaru temperatury wygląda tak:...
Tak na szybko - 8000000/8/28= w przybliżeniu 35714 kHz (czujnik, który podałeś spokojnie to obsłuży). Ustaw zegar na 8000000, Prescaler 8, a Counter odświeżaj wartością 242. Dlaczego 242 ?, bo 256-242=14. Dlaczego wynikiem ma być 14, a nie 28 ? Jeśli w przerwaniu użyjesz Toggle PortX.Y to z urzędu częstotliwość na pinie będziesz miał dwa razy niższą,...
No tak. Biorąc pod uwagę konstruktywną krytykę poprawiłem program , ustaw TCCR0B o którym zapomniałeś w kodzie (CS01) Tutaj nie wiem o co chodzi. Czy TCCR0B trzeba ustawiać jak chcę wykorzystać tylko TCCR0A ? BTW, timer wypadałoby czymś taktować, a więc wybrać zegar. Jak wybrać zegar ? Na razie chciałbym użyć wewnętrznego zegara ,który jeżeli dobrze...
Przy taktowaniu procesora 1MHz jedno zliczenie tego licznika trwa 1 mikrosekundę. Sugerujesz, że cały obieg pętli - sprawdzenie warunku i inkrementacja 16-bitowego licznika przez 8-bitowy procesor zajmuje jeden cykl zegara? Do mierzenia czasu służy timer, chyba że jednostką czasu jest "obieg pętli" - wtedy oczywiście powinieneś odpowiednio podpisać...
Kwarc 32768Hz stosuje się gdy uC ma asynchroniczny timer. Taki Timer - Timer2 znajduje się np. w MEGA8. Procek idzie wtedy na generatorze wewnętrznym, a Timer2 na kwarcu dołaczonym do końcówek XTAL. Co prawda nie studiowałem całej noty TINY2313, ale sądzę, że z tym uC się to nie uda.
Witam. Mam taki mały problem i potrzebuje waszej pomocy. Pragnę zbudować ściemniacz. Jednak natknąłem się na mały problem. Otóż korzystając z płytki testowej Demo Board AVT 3500 zaprogramowałem układ Attiny2313 i podłączyłem diodę oraz MOC3043(zgodnie z schematem poniżej) pod nóżkę PD.2. Efekt był taki, że dioda świeciła poprawnie a żarówka podłączona...
Znalazłem taki kod - Attiny2313 z wewnętrznym kwarcem 8 MHz [syntax=basic4gl] $projecttime = 101 $regfile = "attiny2313.dat" $crystal = 8000000 Baud = 19200 Dim D As Word ' (0-65535) Dim T As Word Dim D0 As Word Dim T0 As Word Dim P0 As Word Dim S As Word Dim C As Word Dim D1 As Word Dim T1 As Word Reset Baro_idle 'ustaw stan niski (zalecane) I2cstart...
Witam trochę raczkuje w programowaniu uC ale do rzeczy chce zrobić wyłącznik czasowy do mojej naświetlarki program napisałem ale nie spełnia moich oczekiwań a mianowicie założenia -dwa niezależne programy pierwszy 16 sekund drugi 2 min 25 sec (działa) -edycja czasu każdego programu (działa) ale nie zapamiętuje po przejściu do innego programu :( -odzyskanie...
Mam projekt enkodera inkrementalnego który ma dwa pierścienie z polami generującymi sygnał 0 i 1. Między górnym i dolnym pierścieniem jest przesuniecie 90°. Więc tak wyglądają sygnały: Teraz tak, jedno pole na tarczy zajmuje 2°. Z racji tego że jest przesuniecie 90° mogę uzyskać rozdzielczość wynoszącą 1°. Kombinacja stanów pochodzących z enkodera jest...
ATTiny dla 20MHz (ATTiny13A) bierze ok. 8mA - 40mW, ale co istotne w trybie uspienia juz ok. 20mikroA, co jak przypuszczam daje jej istotna przewage nad ARMem, jesli aplikacja moze okresowo usypiac. 20uA to chyba przesada. Ja spokojnie sprowadziłem pobór prądu do 6uA i to przy włączonym zegarze RTC na Timerze2! Bez tego chyba można zejść nawet do 1uA....
Czasomierz dla klejarki pistoletowej Bosch PKP 18 E. Po kolejnej awarii pistoletu do klejenia na gorąco, kupiłem klejarkę firmy Bosch. Klejarka ta, wymaga siedmiominutowego wstępnego rozgrzania, aby umożliwiała właściwe klejenie. Postanowiłem zatem zrobić zegar odmierzający wymagany czas. Potem nasunęła mi się myśl, skoro odmierzy zadany na rozgrzanie...
Witam Jak wielu spotkałem się z problemem problemem kłopotliwej obsługi pilota z RC5. Po poszperaniu w necie wpadłem na ten temat. Jak się okazało wszystko na tym programie pracowało, ale nie zawsze. Kłopotem było napisanie programu "pod pilota". Oczywiście pochwała dla Sabotaz'a który problem "ruszył" Postanowiłem napisać coś co rozwiąże problemy poprzednika....
Witam jestem początkujący w programowaniu i mam taki problem, że po załadowaniu pliku na przykład prosty stoper: [syntax=basic4gl][/syntax ... Bardzo prosty zegar bez możliwości ustawiania Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte Dim , Godzjed As Byte , Godzdzies As Byte , Mux As Byte , Migaj As Bit...
Zamieszczony wcześniej kod jest sprawdzony - działa na atmega8 Również po pomyfikacjach portów działa na attiny2313 i zajmuje 65% flash, wiec jest jeszcze miejsce na jakieś "wodotryski". Używam Bascom demo w wersji chyba najnowszej: 1.11.8.7 build 001 MS windows XP SP-2 Program pod attiny2313 na płytce uruchomieniowej ZL11AVR (Płytka ZL2AVR pod megę...
Ja już siedze nad tym kolejny dzień i ciągle mam problem z tymi czasami. Próbowałem przejść na ATMEGę 32 ale to samo. Nigdy nie ma 9ms, wiem że jakaś mała różnica może być, bo to wewn. zegar. Ale chyba nie aż taka (4ms) To jest kod który wgrywam. $regfile = "attiny2313.dat" $crystal = 8000000 Config Pinb.3 = Output Config Timer0 = Timer ,...
Witam Przeglądałem sieć, trochę elektrodę i spodobał mi się projekt zegarka binarnego. Jednak większość owych projektów posiadała około 17 ledów, co moim zdaniem dodatkowo może komplikować konstrukcje zgrabnego zegareczka:P Przeanalizowałem projekty i pomyślałem ze można by zrobić taki zegarek na powszechnie znanym Attiny2313. Liczba ledów co prawda...
Tu masz program pod ATtiny2313, jeśli potrafisz programować, to też potrafisz przerobić program na ATMegę: [syntax=basic4gl]' Bardzo prosty zegar bez możliwości ustawiania Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte Dim , Godzjed As Byte , Godzdzies As Byte , Mux As Byte , Migaj As Bit Config Portb = 255 : Portb = &B255...
Poniżej zamieszam kod w Bascom pisany dla zestawu uruchomieniowego ZL11AVR. Dioda podczerwieni dołączona do Pinb.3. Chyba najważniejsze z tego, to komenda wyzwalająca migawkę: Sonysend &HB4B8F , 20 (Sony alpha korzystają z 20 bitowego protokołu SIRC) W razie pytań postaram się pomóc. [syntax=basic4gl] 'Program zegara wykorzystującego przerwania...
Witam wszystkich Chciałbym tu zaprezentować swoją konstrukcję sześciocyfrowego wyświetlacza LED z interfejsem 1wire. O tym że 1wire jest chronione patentem dowiedziałem się już po zlutowaniu płytki w trakcie pisanie program. Mam nadzieję, że zmiana protokołu komunikacji pozwoli uniknąć złamania prawa patentowego. Jeżeli nie... to jednak wykonanie 1...
Pobawiłem się dziś chwilkę programowym PWM. Jest to rozwiązanie na 8 kanałów - 25 może być ciężko pociągnąć ale oczywiście możesz próbować rozbudować program i zmienić częstotliwość zegara czy wywołania przerwań. Pierwszy to demonstracja tworzenia w zasadzie dowolnie biegnącego światła - dane umieszczamy w liniach Data (wartości od 0 zgaszone do 8 max...
Co to jest Prescale ? Timery w mikrokontrolerach AVR nie muszą być taktowane zegarem systemowym - często jest on za szybki dla potrzeb projektanta. Inżynierowie z Atmela rozwiązali ten problem, umieszczając dodatkowy (nieco ukryty) licznik zwany prescalerem. Z tego licznika otrzymujemy kilka nowych sygnałów zegarowych, z których skorzystać mogą timery....
Witam. Może od razu na wstępie zaznaczę że dopiero zaczyna przygodę z programowaniem w "bascomie" więc proszę o wyrozumiałość. Zbudowałem sobie termometr na wyświetlaczach 7seg. led na ds18b20 termometr działa poprawnie i pokazuje temp ujemną. Na wszelki wypadek jeszcze napisze jak by ktoś nie wiedział albo się nie domyślił po co użyłem aż 6 wysw led....
Po dolutowaniu rezonatora 4MHz z dwoma kondensatorami 22 pF. Program napisany w Bascom-ie.
Dzień dobry ! Sprawdź ten kod: [syntax=vbnet] $regfile = "attiny2313.dat" $crystal = 1000000 $hwstack = 8 $swstack = 16 $framesize = 32 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Porta.0 , Db6 = Portd.1 , Db7 = Porta.1 , E = Portb.3 , Rs = Portb.4 Config Lcd = 16 * 1 Cursor Off Cls Const Wartosc_timera = 131 Config Timer0 = Timer , Prescale = 8 On...
Witam :) Jako ze jest duzo pytan na forum na ktore odpowiedz padla, postanowilem ze zbiore choc troche postow do kupy, tematy dotycza glownie AVR, bo z ARMow jeszcze nie czuje sie na tyle na silach zeby robic FAQa ;) Mam nadzieje ze sie komus przyda :) Niby FAQ jest, ale dla mnie jakoś malo czytelny i chyba nikt go juz nawet nie aktualizuje ;) Jesli...
Witam! Próbuje zrobić zegar binarny wg projektu ze strony: ale jest maly problem...nie moge uzyc kontrolera jaki jest w tym projekcie (at89c2051)..mam tylko attiny2313 , czy moglby mi ktos pomoc zmienic program (bascom) tak zeby dzialal na attiny? Za pomoc oferuje 15 pkt na zachete ;) Oto kod programu: $large 'Zmienne '***************************************...
[quote="kisoft"]Witam jestem początkujący w temacie bascom potrzebuję rozwiązać problem związany z błędnym odliczaniem zaprogramowanego czasu. Program przerobiony z działającego zegara ( samo odliczanie działa dobrze), tylko chcę żeby w 20 -stej sekundzie wyjście PIND.2 zostało załączone i w 45-tej sekundzie wyłączone. Teraz działa przypadkowo w 20...
Czy wyjdziesz do pracy/szkoły o dwie tysięczne sekundy prędzej czy później to nie ma znaczenia. Zegar ma działać bezobsługowo, nie późnić się i nie nadlatywać. A że wyświetlany czas jest o kilka czy kilkanaście dziesiątych sekundy przesunięty względem czasu rzeczywistego to nie ma żadnego znaczenia. Nie bawmy się w aptekarzy . Poza tym to moje pierwsze...
Poniżej przedstawiam działający już kod nadajnika. Jest to kod pod moją wersję z wyświetlaczami LED które są multiplexowane. I tu jest jeszcze jeden drobny problem. Co do WAIT'ów, doświadczalnie ustawiłem w instrukcji "Send" opóźnienie na 6ms. Z kolei te 50ms do wyłączenia nadajnika jest nie potrzebne. Termometr nadaje normalnie. Te gdzie jest 6ms jest...
Pomimo, że jest wiele opracowań i aplikacji dotyczących tabliczki mnożenia, wykonałem własną - elektroniczną wersję mnożącą od 1-9. Projekt powstał dla ośmiolatka, który "uwielbia" grać. Pracując z tabletem lub laptopem zajmował się wszystkim, ale nie nauką tabliczki mnożenia. Nauka z papierową wersją szybko go nudziła. Na razie jest zafascynowany...
Witam, zacząłem budowę ściemniacza do "halogenów" opartego na mikrokontrolerze, narazie wybór padł na Attiny15L bo taka była pod ręką. Docelowo Attiny2313 albo coś większego. Jestem na etapie testów i niestety nie wypadły one pomyślnie. Skonstruowałem taki układ: Wiem, że Attiny15L nie jest zbyt dobrym procesorem do BASCOM ponieważ nie posiada SRAM,...
Od kiedy autor odkrył, że możliwe jest zbudowanie urządzenia wyposażonego w interfejs USB i opartego o procesor AVR, postanowił samemu takowe zbudować. Ponieważ opisy zastosowania bibliotek USBtiny i – bardziej wyczerpujący - V-USB były zbyt skomplikowane, autor postanowił stworzyć własny tutorial. Na początek nastąpi opis podstaw budowy urządzeń...
Dziękuje bardzo - już sobie poradziłem -> po poradach Zumka przemyślałem swój sposób generowania PPM i w jednym z rozwiązań generuje go sprzętowo jako PWM z Timer1. W innym rozwiązaniu, gdzie Timer1 mam zajęty (a to jedyny 16-bitowy timer w ATtiny2313) generuje go na ręcznie ale używam szybszego taktowania - 8Mhz wewnętrznego zegara stanowi minimum...