atmel.com nie działa ? ;-) http://atmel.com/dyn/resources/prod_docu... TOIE0: Timer/Counter0 Overflow Interrupt Enable When the TOIE0 bit is written to one, and the I-bit in the Status Register is set (one), the Timer/Counter0 Overflow interrupt is enabled. The corresponding interrupt is executed if an overflow in Timer/Counter0 occurs,...
Nie włączyłeś asynchronicznego typu pracy timer2 przykład: http://mikrokontrolery.blogspot.com/2011...
Ja do obslugi klawiatury uzywam przewaznie kodu, ktory jest w plikach w zalaczniku. W głownej peti programu musisz umiescic wywołanie Key_Service(); i zadbać o to, aby w przerwaniach od timera odpowiednie zmienne byly deinkrementowane.
Umieść kod w znacznikach syntax - będzie szybciej i łatwiej ocenić.
No to dobrze... uC taktowany jest najniższą dostępną z wewnętrznego RC częstotliwością 1MHz... Ustawiam prescaler na 1 i mam przerwanie co 256us... Czy nadal powinienem coś wpisywać do TCNT0...?.?.?
Przecież ATmega może działać na 8 MHz na wewnętrznym oscylatorze. Jeśli nie zdążysz z obsługą przerwania, po prostu "zgubisz" przerwanie. W trybie PWM przy 8 MHz nie będziesz miał z tym problemu.
Witam. Mam pytanie jak obliczyć czas przerwania od licznika T0 w mikrokontrolerze Atmega8. Gdy preskaler=1, licznik zaczyna liczyć od 0, oraz mikrokontroler działa na wewnętrznym oscylatorze (1MHz)??
No, taktowanie wewnętrznym oscylatorem 8MHz
.... problem wynika z tego, że pin powinieneś podciągać do vcc, inaczej cały czas masz stany nieustalone czyli dodaj do inicjalizacji: DDRD &= ~(1<<PD3);//pin jako wejście PORTD |= (1<<PD3);//podciąganie wewnętrzne
Tego nie widziałem. Znalazłem za to informację że dotyczy to rezonatora pracującego jako generator wytwarzający główny sygnał zegarowy: http://obrazki.elektroda.net/9_123515576... A po drugie, akurat w ATMega8 jest błąd w krzemie i te wewnętrzne kondensatory nie działają (tzn. FuseBit ich nie włącza). Użycie rezonatora jako źródła sygnału dla...
Witaj. Da radę ogarnąć to wszystko na atmedze? Zobacz co potrafi mniejsza od niego ATmega88 (prawie to samo co ATmega8): [youtube]http://www.youtube.com/watch?v=... Generuje wszystko łącznie z sygnałem wideo i dźwiękiem :) To kwestia poprawnego podziału zadań i wykorzystania wewnętrznych układów oraz przerwań. Szczegóły: http://www.linusakesson.net/scene/craft/
Po pierwsze jakie czasy chcesz obliczać i jakie przerwania po co ??? To jest bascom nie assembler, deklarujesz na wstępie programu prędkość kwarcu a kompilator troszczy się o resztę tj. dajesz deklarację $regfile = "m8def.dat" $crystal = 12000000 Po drugie, procedura obsługi wyświetlaczy LCD (mowa tu o alfanumerycznych HD44780) jest w BASCOM zaimplementowana...
Wynika z tego że wewnętrzne oscylatorki są kiepskie. Tak, by być pewnym transmisji należy stosować zewnętrzne kwarce.
Jeżeli stabilność samego rezonatora kwarcowego jest dla danego zadania za mała, to oczywiście żadne rozwiązanie zależne od niej nie da pożądanego efektu. Wtedy należy użyć zewnętrznego generatora o dużej stabilności. Wykorzystują one specjalnie dobierane rezonatory pracujące w znacznie bardziej rozbudowanych ale i o wiele stabilniejszych układach. Przy...
Po małych zmianach działam na czymś takim. Pomimo taktowania z wewnętrznego kwarcu nie widać efektu. Jakiegokolwiek. [syntax=c]/* * RealTimeClock.c * * Created: 2013-11-17 01:46:48 * Author: Piotr Pabian */ #include <avr/io.h> #include <avr/interrupt.h> void init_RTC(void) { //ASSR = 1<<AS2; //Enable asynchronous mode TCCR2 = (1<<CS22)|(1<<CS21)|(1<&l...
symulator bascoma jest bardzo dokładny i liczy co do taktu. jeżeli program opiera sie na przerwaniach timera to należy włączyć okienko "Slim Timers" , wtedy symulacja trwa trochę dłużej ale bierze pod uwagę przerwania timera. co do compare1a to jest to rejestr poruwnawczy timera1. co takt zegara jest on poruwnywany z zawartościa timera (czyli licznika)...
Najłatwiej to zrób tak: Wszystkie przyciski podłacz do pinów procka, daj podciągnięcie za pomocą rezystorów wewnętrznych ,oprócz tego za pomocą diod zsumuj te sygnały ,a nastęnie zsumowane sygnały daj na wejście przerwania np INT0. Musisz to zrobić tak że przyciśnięcie któregokolwiek przycisku spowoduje zmiane (spadek napięcia ) na wejściu przerwania...
Wojtek - wchodzisz tutaj: [url=http://www.frank-zhao.com/cache/avr... z kalkulatorem 16MHZ z preskalerem 1024 oznacza że: - 1 sekunda nastąpi po 15625 cyknięciach timera - przerwanie następuje przy przepełnieniu jeśli wybierzesz OVERFLOW, ale może tez nastąpić przy COMPARE, od tego zależy jaką wartość wpiszesz do timera (czy odejmiesz...
Włącz co najmniej wewnętrzne podciągnięcie. Gdzie masz konfigurację przerwania, czym jest wyzwalane ? Polecam ujemne zbocze(jak rozumiem, switch do masy ?).
Jaka jest maksymalna częstotliwość pracy kwarca wewnętrznego Atmegi8? ATmega nie ma w środku kwarc u , tylko oscylator RC, to tak gwoli ścisłości. Mam ustawione 4Mhz i kiedy ustawiam prescaler w timerze 16bitowym na 64 (TCCR1B|=1<<CS11|1<<CS10;) tak aby przerwanie spowodowane przepełniniem timera było wywoływane mniejwięcej co 1s 4000000/64/2^16...
Gdy już usuniesz wewnętrzną pętlę do..loop to zwróć uwagę, że stan przycisku będzie sprawdzany raz na 60s. Możesz zrobić sprawdzanie np. tak (co 1 sek.): dim x as byte ... do 'sprawdź przyciski if x=60 then x=0 toggle ... end if wait1 incr x loop end Albo wykorzystać timer lub przerwanie.
W ATMEGA8 od rezonatora 32768Hz trzeba podłączyć kondensatory jakieś 33p idące do masy, bo te wewnętrzne nie działają. Przynajmniej tak mi się wydaje. Rpal, wyjaśnij mi tej kod w obsłudze przerwania bo nie pojmuję: TCNT2=0x0A;
Rzeczywiście to pomogło. Zastanawia mnie, dlaczego jak licznik był w trybie normalnym wywoływane było przerwanie... Bo przerwanie jest od porównania. Gdy TCNT1 = OCRA1 to jest wywoływane przerwanie. A wytłumaczysz mi dlaczego OCR1AL ma wynosić 124, a nie 125? Bo tak jest napisane w datasheet. Zresztą zauważ że taka sytuacja jest sensowna. Zwróć uwagę...
zdecydowałem się na zastosowanie uC aby wyeliminować efekt falowania wody (a tym samym podnoszenie i opadanie włącznika pływakowego co skutkowało kilkunastoma krótkimi włączeniami pompy przy każdym dolewaniu wody). Nie wystarczyło zastosować filtr RC? Dodaj na wszelki wypadek rezystor 10kΩ podciągający RESET do Vcc. Przy takich urządzeniach jak...
1. Poczytaj ogólnie o timerach. 2. Poczytaj o trybach timerów, Tobie radziłbym CTC. 3. Poczytaj o przerwaniach. 4. Z Timera co sekundę będziesz wysyłać przerwanie. 5. Ustaw pin z przełącznikiem jako wejście. 6. Podciągnij wewnętrzny rezystor do pinu albo daj jakiś rezystor po drodze - nie zwieraj bezpośrednio do masy. 7. Ustaw port z diodą jako wyjście....
Jak dla mnie to przede wszystkim zamiast deley() wykorzystać jakiś zew. zegar RTC usypiać procka i wybudzać przerwaniem z RTC Nie trzeba używać zewnętrznego RTC - wystarczy podłączyć kwarc i użyć przerwania z wewnętrznego timera. Nie wiem, jak w przypadku Arduino, ale zastosowany w nim mikrokontroler to chyba ATmega8, więc jest taka możliwość (o ile...
Potrzebuję odliczać czas z przedziału od 10ms do 99 godz. Zrobiłem to w taki sposób że ustawiony czas zamieniam na ms (liczba 4 bajtowa) i zliczam ilość przerwań od timera ustawonego na przerwanie 1ms. Wszystko fajnie tylko czas mi się rozjeżdza gdyż dokladność kwarcu jest ok 1%. Czy można jakoś zwiększyć stabilność wewnętrznego kwarcu (ATmega8)? Jaki...
No dla mnie tym następnym krokiem był przerzutnik T :) Również polecam :) Potem, sugeruje proste przerwania zewnętrzne, timer (tu duze pole do popisu, mozna sobie zrobić na nim mruganie diody, przyciskami sterowac częstotliwość), potem sterować jasnością z PWM. Dalej proponuje pobawić sie wewnętrznym eepromem, przydaje sie w dalszej nauce, potem zewnętrzny...
Diody masz podpięte bezpośrednio pod porty ATmega? Jeśli tak to lepiej dołóż sobie oporniki aby nie spalić wyjść ATmegi. Bezpośrednio przy procku daj kondensator 100nF. Przed stabilizatorem np. 1000uF, a za stabilizatorem 100u (to i tak za dużo, ale lepiej więcej niż za mało). Zliczanie zrealizowałbym w taki sposób: - Odpalić któryś z wewnętrznych timerów...
Buduję prosty sterownik na atmedze 8, chcę obsługiwać klawiaturę w przerwaniach od timera0 ale atmega nie widzi procedury obsługi przerwania i resetuje się. Jeżeli zatrzymam timer albo wyłączę przerwanie timera, albo wyłączę globalnie przerwania to nie resetuje się. Kod procedury obsługi przerwania (funkcje do LCD są w pełni sprawne, nawet gdy ISR jest...
Witam! Musisz wykorzystać wewnętrzny timer. W momencie gdy ulegnie przepełnieniu to zostanie wygenerowany sygnał przerwania i wtedy uruchomiony zostanie podprogram do zmiany stanu konkretnego pinu.
No to od razu bez szczegółowego liczenia powinieneś zrobić tak: Tak naprawdę powinieneś wykorzystać Timer2 w trybie asynchronicznym z kwarc 32,768kHz na pinach TOSC1 i TOSC2, a mikrokontroler popędzać wewnętrznym 1MHz. Innymi słowy Twój mikrokontroler będzie prawie 100% czasu spał: - w czasie zamkniętych drzwi w trybie Power Down, - w czasie odliczania...
Podepnę się pod wątek, bo temat pasuje :D atmega8 na wewnętrznym oscylatorze 8MHz i przerwanie zliczające sekundy: Config Timer0 = Timer , Prescale = 8 Load Timer0 = 100 'przerwanie co 0,1ms On Timer0 Odmierz_ms do loop end odmierz_ms: Load Timer0 = 100 Incr Licz_ms If Licz_ms = 10000 Then '10000*0,1ms=1s Licz_ms = 0 end if incr sekundy return Wszystko...
1. Jak rozpoznać czy to wersja układu na 5V czy na 3,6V? Nie ma tam jakiś charakterystycznych oznaczeń na obudowie? Ciąg literek i cyferek, żeby można było ustalić itp. Jeśli wylutowałeś to z telefonu, obstawiam na niższy zakres napięć. TWINT ma być zerowane programowo np. przez procedurę obsługi przerwania na samym jej końcu. Zerowanie ma być zrealizowane...
Witam, mam problem z ustawieniem przerwania od timera0 na atmega8, jestem początkujący jeśli chodzi o assembler... Problem leży w tym że, uP jest taktowany z wewnętrznego zegara 1MHz, i jeśli mam ustawiony prescaler na 8 czyli rejestr TCCR0 na 2 to powinienem otrzymać obsługę przerwania co 8us a na oscyloskopie otrzymałem igiełkę co 2ms;/ nie wiem co...
Na początek taka uwaga: Driver Atmela bazuje na przerwaniach, w związku z czym wymaga globalnego zezwolenia na przerwania, czyli ustawienia bitu I w SREG. Z tego też powodu nie można używać go (w sposób przedstawiony w przykładzie obsługi PCF8563 Kod 3. .............. Owszem, tutaj również się program nie zawiesza. Ale też nic nie odczytuje. To, że...
No dobrze ale : DDRD &= ~(1<<DDD3); //pin PD3 jako wejście PORTD |= (1<<PORTD3); //wewnętrzny pull-up co to jest DDD3 i czy nie powinno tam być cyferki? ( jak i zamiast portd3)
To pewnie jest nowy procesor z wewnętrznym taktowaniem 1MHz bo ma włączony bit CKDIV. Jak to odptaszkujemy to będzie 8MHz i wszystko się zgodzi.
mikro = 0.001 [mili] mikro = 1 / 1000 [mili] czyli jedna milisekunda(ms) ma tysiąc mikrosekund(us). Mam pytanie: czy to działa z metodą wysyłania kwadratowej fali? Bo ja chcę zrobić pilot który będzie wysyłał parę komend, ale nie wiedziałem jak zmodulować sygnał. bardzo bym prosił o potwierdzenie tego sposobu. A co do wysyłania tylko przez określony...
Na ostatnie pytania odpowiedź standardowa: potrzebna jest stabilizacja i filtracja napięcia zasilania mikrokontrolera. Tematów o tym zagadnieniu też tysiące. Wewnętrzny pull-up nie spali ci optotriaka. Czasem może paść raczej port, kiedy jest przeciążony.
Można i tak lecz chciałem zamknąć wszystko w jednym uC i wykorzystać wewnętrzny RTC Atmegi. Żeby zwolnić któryś timer wystarczyło by, odbiór Rc5 zrealizować w przerwaniu INT0 albo INT1 jak wcześniej wspomniał kolega Mariuszek15 pozdrawiam
...Nóżka procka raczej nie jest upalona bo daje sie sterować, więc sam juz nie wiem. Włącz wewnętrzny lub przylutuj zewnętrzny np. 10k0 pull-up(rezystor podciągający do VCC) na tym pinie i zobacz co się będzie działo. Piotrek
Wewnętrzny zegar jest na tyle mało dokładny, że aby można było nim coś zmierzyć, należało by ustalić jego dokładną częstotliwość porównując z jakimś wzorcem, po czym zapisać poprawkę do osccal albo uwzględnić to w czasie przepełnienia t1 - a i tak dokładność nie będzie duża ze względu na wachania częstotliwości. Warto poczytać w dokumentacji jaką dokładnie...
To można tłumaczyć niedokładnością wewnętrznego kwarcu, temperaturą, napięciem zasilania.. . 51/50 ~ 2% błędu. możesz zmienić OCR1A z 31250 na 31875, powinno pomóc.
Aha, nie przyszło by mi do głowy, że bity mogą być o różnej długości, ale teraz taka analiza ułatwia dużo napisanie programu. Po tym starcie każde zbocze opadające załączy wewnętrzny timer i przy kolejnych przerwaniach na zboczu opadającym wartość timera będzie porównywana z jakąś liczbą. Jeżeli jest mniejsza to 0, a jeżeli dłuższa to 1. Oczywiście...
Wywal oba wewnętrzne rozkazy do loop, bo się na nich zatrzymuje gdy masz wciśniety klawisz, chyba dlatego mryga. A tak, doda lub odejmie wartość i pętla główna leci dalej... Niepotrzebne będą goto.
Kolego SZA a można wiedzieć które PCB masz u siebie bo już wyszło tyle wersji że ciężko stwierdzić o którym mowa a co do wsadu, może pomoże ten co ja mam. http://www.elektroda.pl/rtvforum/viewtop... fusbity powinny zostać "fabryczne" Kolego miszczo997 jakie masz wartości rezystorów R9 i R10? Może problem leży po stronie OP07CN,...
Ten RTC ma wyjscie 32768Hz, a ja potrzebuję mierzyć jednostki czasu nie koniecznie związane z minutami i godzinami, musiałbym dorabiać obsługe I2C, przekalkulować zmienne, sporo niepotrzebnej roboty, a tak puszczm megę na wewnętrznym i Timer2 liczy z generatora DS3231 dając przerwanie.
Cześć Attiny26 może przyjąć przerwania od każdej nogi, robisz licznik od jakiegoś wewnętrznego timera i zliczasz od 0 do 255, jeśli doliczysz do 255 to włączasz alarm, liczysz oczywiście na tylu zmiennych naraz ile Ci potrzeba. Teraz dodajesz do tego przerwania od czujników, jeśli przyjdzie przerwanie to zerujesz odpowiadającą mu zmienną i znowu ją...
Co najmniej 3 błędy popełniłeś. Pierwwszy to włączasz przerwanie Uart Data Register Empty, a nie wstawisz chociaz reti pod wektor obslugi tego przerwania. Tu na pewno program się wykracza i nie wiadomo co procesor zrobi, najprawdopodobniej RESET. Drugi to włączenie sterowania sprzętowego. Co prawda w przypadku odbierania to nie ma znaczenia, ale w przypadku...
Jedno USB jest do tego uC a drugie wyjście USB będzie do innej płytki też z uC tylko że zasilanie będzie pochodziło z tej płytki i wszystko musi być puszczone maksymalnie jednym kablem USB czyli 4 żyłowym, ale ten pomysł to chyba tylko ja zrozumiem :D. Jaki daje na wyjściu sygnał? Jeśli daje cyfrowy to można wyokrzystać QDEC z XMEGi. Jeśli daje jakiś...
Witam mam problemy z zaprogramowaniem układu Atmega8A. Uc jest podłączany do programatora STK200, podczas próby czytania sygnatury Uc (PonyProg, ISP Programmer) wystepują błędy (Unknown Device). Ręczne ustawienie Uc na Atmega 8 (nie ma opcji 8A) też nic nie daje, podczas programowania występują błędy zapisu i operacja zostaje przerwana. Natomiast po...
Ciekawe, czytałem już te tematy. czy bez tego kwarca 32khz sie nie obejdzie? Jednak nie łapię tych timerów. Generalnie timer służy jako licznik przerwań :), wewnętrznych albo zewnętrznych na pinie TO, zewnętrzne przerwania widziane są z portu TO, a wewnętrzne przerwania generuje prescaler - wewnętrzny przerywacz "sterowany" kwarcem zewnętrznym lub...
Janbernat - teoretycznie masz rację. Taka jest teoria i wszyscy ją znamy L di/dt robi ogromne spustoszenia. Tylko że 100n to bardzo mała pojemność a indukcyjność ścieżek przy resecie jest koszmarnie mikroskopijna.To w połączeniu z rezystancją ścieżek, rezystancją switcha czy rezystancją wewnętrzną kondensatora tworzy coś co nie wzbudza ogromnych impulsów...
CHYLĘ CZOŁA - chłopie jesteś WIELKI. Kiedyś zrobiłem sopelka (plus kilka innych efektów na atmega8), ale zrobić coś takiego na attiny13 - majstersztyk. Przewkompilowałem Twoje źródła (sopelek) pod eclipse i wprowadziłem drobną modyfikację - funkcję led_on zrobiłem jako funkcja wewnętrzna w procedurze obsługi przerwania. Co się zmieniło - program z 386...
Panie Marku_Skalski ale w dokumentacji pisze że ma Bit 3 – ADIE: ADC Interrupt Enable Free Running jest ustawione w kodzie Nie udało mi się to zrobić na przerwaniu, ale zrobiłem to na dwóch podprogramach w których są umieszczone dwa ADC. Jedyna wada na wyświetlaczu miga wartość. KOD [syntax=cpp-qt] void funkcja1(void) { ADMUX = (1<<REFS1)...
Dlatego najlepszą moim skromnym zdaniem propozycją dla kol. atom1477 będzie przesiąść się z ATMega8 na jego nowszy odpowiednik ATMega88. Oczywiście cały kod będzie musiał zostać skompilowany ponownie, gdyż są pewne istotne różnice pomiędzy tymi dwoma kontrolerami. Na przykład: większa ilość wektorów przerwań, rejestry specjalne w przestrzeni IRAM...
Dodałbym, że Bascom odpowiedzialny jest jeszcze za koklusz i gradobicie. 1. M8 musi być ustawiony na pracę z kwarcu zegarkowego - FUSY. Powoduje to napędzanie M8 z generatora wewnętrznego RC 2. Trzeba skonfigurować Timer2, który jest zdolny do asynchronicznego taktowania z kwarcu 32768Hz - polecam helpa Config Timer2. 3. W przerwaniu od timera2 należy...
http://obrazki.elektroda.net/25_11981125... Witam wszystkich serdecznie ! Oto kolejny zegarek z wyświetlaczami LED oparty na ATmega8. Znowu ?? Tak, a czemu nie. Konstrukcja powstała jako odpowiedź na zapotrzebowanie na naścienny zegarek z dużymi cyframi widoczny w nocy. Wymiary całości to 180x70x18mm. Zegarek wyświetla tylko godziny i minuty,...
Przy takim programie, na wyświetlaczu pojawiają się albo same krzaki, albo znaki zapytania, a jeżeli uruchomi się, to jest samo 0... Nie zwiększa się zmienna. [syntax=basic4gl]$regfile = "m8515.dat" $crystal = 8000000 Config Portb.1 = Output 'RW LCD Portb.1 = 0 Config Timer0 = Timer , Prescale = 1024 Tccr0 = 4 Enable Interrupts Enable Timer0 on timero...
To zdecydowanie za dużo. Policzmy: 1) masz kwarc 7372800Hz 2) preskaler 64 3) timer zlicza do 0xffff taktów 4) załóżmy, że przerwanie od timera chcemy co 0.1s=100ms 5) okres zegara taktującego CPU -> 1/7372800Hz = 0.000 000 135 634s (zaokrąglone) 6) 64*0.000 000 135 634 = 0.000 008 680s 7) 100ms/0.000 008 680s = 100 000us/8,680us = 11 521 (znowu zaokrąglone)...
Witam, Od jakiegoś czasu próbuję włączyć przerwanie sprzętowe w uC ATmega8, robie wszystko zgodnie z datasheetem i nie działa :| Kto mi powie co tu jest nie tak? ; [syntax=c] #include <avr/interrupt.h> // biblioteka do generowania przerwań sprzętowych #define F_CPU 8000000L #include <avr/io.h> #include <util/delay.h> int licznik =...
Dzieki Atom1477 miałeś racje chodziło o fusebit divide clock by 8. Teraz waity odliczają sie poprawnie .program tez chodzi ok. tylko te przerwania które miały być co sekundę sa teraz wyzwalane według oscylatora wewnętrznego a chce zeby były jak w 8 z kwarcu 32768 czy Config Timer2 = Timer , Prescale = 256 , Async = On jest nieprawidłowa konfiguracją...
Wlasnie dlatego stosuje sie przerwania, jak procek ma cos innego do roboty to one i tak wystapia. Jesli ma wystapic pozniej przy pracy synchronicznej, to przy asynchronicznej tez wystapi pozniej. A co do kwarcu zegarkowego, przy zegarze 1MHz tez da sie odmierzyc dokladnie jedna sekunde :) Według moich doświadczeń błąd odmierzania czasu za pomocą wewnętrznego...
Jeżeli masz układ, w którym zaświeca się LED, to sygnał wyjściowy jest sygnałem cyfrowym (świeci - nie świeci). Dobrze byłoby zadbać o to, by ten sygnał miał poziomy napięć odpowiednie dla mikroprocesora - do sprawdzenia w opisie danego mikroprocesora, dla Atmega8 '1' ma być między 0.6Vcc a Vcc+0.5V, a '0' między -0.5V a 0.2Vcc. Jeśli podasz taki sygnał...
1) czy jest konieczne stosowanie kondensatorów. Jeśli są potrzebne to jak podłączyć kondensatory, czy równolegle do każdego z przycisków (czyli 64 kondensatorów) czy może jest jakiś inny sposób na to. Moim zdaniem nie ma takiej potrzeby. 2) czy jest konieczne stosowanie rezystorów podciągających. czy przy porcie gdzie wystawiam czy tam gdzie odczytuje....
Rozumiem, że użyć mam po prostu zegara wewnętrznego? Aktualnie mam podpięty kwarc 16MHz, bo przy wewnętrznym 8MHz wyświetlacze nadal migały. Dodano po 2 Tfu, co ja piszę.. (przemęczenie). Ogólnie cała akcja multipleksowania ma działać na 800Hz? Do multipleksowania wystarczyłoby ci nawet taktowanie 1MHz z wewn. oscylatora. To żaden problem. Multipleksowanie...
Mam w swoim urządzeniu taki patent jak proponuje lotnick. Atmega8 na wewnętrznym oscylatorze 8MHz, dioda schotky za stabilizatorem 5V i kondensator podtrzymujący 100uF. Przy zaniku napięcia wywoływane jest przerwanie w którym zapisuję do eeprom cztery bajty (zmienna typu single). Nie przeprowadzam jakichś dodatkowych zabiegów programistycznych ograniczających...
A co to za teoria? Jak najbardziej pin ustawiony jako wejście podciąga się za pomocą wewnętrznego pull upa. Coś tu ci się poknociło.
Witam Czytam, czytam i nie mogę wyczytać jasnych odpowiedzi na poniższe, ważne dla mnie pytania. 1. Mam ATMegę8-16PU, która ma domyślnie ustawioną częstotliwość na 1MHz. Czy zmianę częstotliwości (na 2, 4 lub 8MHz) spowoduję ustawiając odpowiednio bity konfiguracyjne CKSEL? Pytam aby się upewnić. 2. Jak do powyższego pytania odnosi się rejestr OSCCAL?...
NIe mogę w ty procesorze uzyskac rzadego wewnętrznego przerwania (timer0, urxc itp) jedyna co chodzi dobrze to przerwania zewnętrzne (int0). Proszę o jakieś wskazówki (moze fuse bity są źle ustawione?).
Witam serdecznie, Doczytałem ostatnio to czego nie doczytałem wcześniej, temat mi się znacznie bardziej rozjaśnił. Potrzebuję aby ktoś lepszy potwierdził co ustaliłem: Do budowy zegara użyję: Timer2 AtMega8 taktowany asynchronicznie z oscylatora wewnętrznego (low freq. osc.) stabilizowanego zewnętrznym kwarcem 32,768kHz podłączanym pod piny TOSC1 i...
znalazłem bardzo interesujący opis !! http://wkretak.pl/readarticle.php?articl... i już teraz mam pytanie czy dobrze rozumiem, przerwanie możne być wywołane wewnętrznie albo zewnętrznie i teraz zewnętrzne to poprzez te porty INT0 INT1 a wewnętrzne mogą być wywoływane na przykład cyklicznie poprzez użycie timera i w czasie kiedy się przepełni lub...
Więc może wkleję trochę kodu. I2C_ini: ldi R16, (1<<TWEN)|(1<<TW... out TWCR, R16 ldi R16, 50 sbr R16, TWGCE out TWAR, R16 ldi R16, 32 ; FOSC 16+2*32*4^(TWPS10)= 100KHz out TWBR, R16 ldi R16, 0b11111010 out TWSR, R16 ret (...) in R16, TWCR sbr R16, TWSTA sbr R16, TWINT out TWCR, R16 rt: in R16, TWSR...
Charakter projektu: - uczę się :-) - miniaturowa zabawka (załóżmy breloczek do kluczy) - 1 przycisk (MAGIC BUTTON w skrócie MB) do obsługi całości - generuje dźwięki w zależności od sposobu przyciskania MB - bez wyświetlaczy diod itp. - zasada działania podobna do psa: zawołasz go to się z Tobą bawi do momentu gdy przestaniesz, chwilę czeka i jeżeli...
To co pisze kolega atom to jedno, drugie to pewnie standardowy błąd - korzystasz w wewnętrznego generatora RC 8 MHz, a nie kwarcu? To masz problem, ten generator nie jest kalibrowany z dokładnością, ani nie ma stabilności wystarczającej do wykorzystania go do taktowania transmisji asynchronicznej RS232. Uważaj, bo zaraz Mirekk36 napisze coś odwrotnego...
To może jeszcze inaczej - nie próbowałem tego na trzeszczących stykach, ale myślę że może działać. AVR ma moduł Input Capture Unit. Idea jest taka że sygnał przychodzący z zewnątrz powoduje zatrzaśnięcie licznika i zgłoszenie przerwania. Sygnał wyzwalający przechodzi też przez wewnętrzny filtr, a do tego nie ma opóźnień związanych z wejściem w przerwanie...
tmf: Mam też świeżą wiedzę o cenach i wydajnościach układów 32-bitowych. O ile wiem, na dzisiaj jedynie ATtiny13 i ATmega8 (czyli dwa zabytki) są tańsze od 10-krotnie od nich szybszych Cortexów, z tym, że Cortex konkurujący z Attiny13 będzie miał 4 KiB ROM i 1 KiB RAM oraz 2 UARTy i raczej będzie tańszy od ATtiny13 (realnie za 3 miesiące). Porównajcie...
BINGO !!! Dzięki :) Teraz świeci stabilnie tak na wewnętrznym generatorze RC, jak i kwarcu. Jak zacząłem pisać ten program, to na początku resetowałem preskaler, ale potem rozbudowując program i nie widząc różnicy, zrezygnowałem z tego, żeby zminimalizować czas trwania przerwania. Bardzo dziękuję :)
Witam w NOWYM ROKU! Układ złożony ale mam kolejny problem. Przerwanie od ADC Chcę w przerwaniu od ADC umieścić funkcję pomiar() jednak tam nie działa i nie wiem dlaczego. Jeśli funkcja pomiar() jest w main nie ma problemu, ale wtedy ADC nie jest właczony w trybie free running ani nie mam obsługi przerwania od ADC. Dla przypomnienia ATMEGA 8 + LM35 W...
Używasz kwarcu zegarkowego 32768 Hz podłączając go do TOSC1 i TOSC2. Program ma wyglądać mniej więcej tak: -ustawiasz bit AS2 w rejestrze ASSR (taktujesz licznik 2 kwarcem) -ustawiasz bity CS20 i CS22 w TCCR2 (preskaler 128, wtedy będzie generować przerwania co sekundę) -ustawiasz bit TOIE2 w TIMSK (zezwalasz na przerwania z tego licznika) -uruchamiasz...
Dave_SG dzięki za metodę, ale... nie działa :( Słusznie mówisz, że nie jest dla mnie ważne, aby synchronicznie przejść z jednego trybu taktowania na drugi. Ja bym tylko chciał, aby to taktowanie w ogóle się rozpoczęło. Sprawdziłem oscylator, jeszcze raz dla pewności przełączyłem fusebitami taktowanie ATmegi na niego i działa. Pięknie i wolno, po czym...
Cześć wszystkim. Napisałem parę miesięcy temu programik w BASCOM do urządzenia, które ma możliwość odczytu pamięci EEPROM i wysłania jej zawartości przez RS232 do PC. Urządzonko wróciło do mnie niedawno ze względu na pojawiające się nieraz błędy podczas transmisji. Program używa tylko instrukcji PRINT i nie używa przerwań. Przerwania globalne wyłączone....
Sprawdź ustawienia mikrokontrolera. Znaczy bity konfigurujące. Domyślnie kontroler ustawiony jest do pracy z wewnętrznym generatorem taktującym RC. Aby korzystał z kwarcu należy przeprogramować rejestry konfigurujące. Odsyłam do dokumentacji kontrolera. Poza tym precyzyjny timer najlepiej zrobić na przerwaniu.
Uruchom timer, koniecznie tak doliczony, żeby nie wprowadzać dodatkowych błędów ewentualnymi ułamkami w ilości impulsów na sekundę/minutę. Potem w przerwaniu zliczasz minuty/sekundy/cokolwiek i odmierzasz czas. Można też zastosować kwarc zegarkowy podłączony do pinów TOSC1/TOSC2 (XTAL) i z niego czerpać sygnał bardziej precyzyjny niż z normalnego sygnału...
Witam Jeśli idzie o programowanie uC AVR, to jest to temat rzeka i na temat którego, można by zrobić wykład seminaryjny :D. Od czego napewno warto zacząć, to ściągnięcie sobie tzw. datasheeta ATMega8(L) i zerknąc na lewą kolumnę *.pdf'a, gdzie odrazu można zauważyć, że ATMega8 na na pokładzie: - 3 porty wejść lub / i wyjść B, C, D , - wewnętrzny oscylator,...
Witam, Musisz przeładowywać timer zaraz zgłoszeniu przerwania, wtedy błąd jest najmniejszy. W Twoim przypadku najpierw zmieniasz stan portów, później czekasz i w końcu ładujesz timer - w tym czasie timer też liczy, a więc pomiar czasu jest niedokładny. "Wyższa szkoła jazdy" to odjęcie od wartości ładowanej do timera czasu, który upływa między zgłoszeniem...
BlueDarco, no fajnie, każesz gościowi pobierać prąd ze źródła napięciowego zaznaczając tylko jeśli rezystory nie są za małe Skoro to ma być klawiatura rezystancyjna to robisz tak: 1. Konfigurujesz źródło napięcia odniesienia na napięcie zasilania procesora. 2. Górny koniec drabinki podpinasz pod to samo napięcie, którym zasilany jest procesor. Masz...
Wstawiam kod zmodyfikowany wg Waszych wskazówek. Proszę o wytkniecie błędów :) Modyfikacje: 1. Uruchomienie konwersji ADC w trybie free-running i przeniesienie do pętli głównej. 2. Wyrzucenie przerwania od przepełnienia Timera0. 3. Zastosowanie sprzętowego wymuszenia zmiany stanu na pinie OC2 w przerwaniu od detektora zera. Wartość ładowaną do OCR2...
widze 2 problemy: 1. czy to nie obciąży za mocno procesora jak co 5ms będzie mi wskakiwał w przerwanie? Dodam, że nie jest to jedyne przerwanie, obsługuję jescze pozostałe 2 timery oraz int 0,1. 2. Może marudzę ale precyzja 1,7 sekundy to za mało, bo zegar "ucieknie mi o 5 minut w pół roku. Dodano po 48 podniosłem częstotliwość wewnętrznego oscylatora...
Dioda ci nie gaśnie ponieważ w ISR(TIMER2_OVF_vect) sprawdzasz czy licznik jest równy działko a przecież wiadomo,że jeżeli jesteś w przerwaniu od przepełnienia licznika TCNT2 to TCNT2 = 0 bo właśnie się przekręcił licznik i została postawiona flaga przerwania od przepełnienia. Zgaszenie nigdy nie nastąpi. Wróć do wersji gdzie w przerwaniu gasisz diodę...
Witam, mam pytanie odnośnie timera w atmega8. Zdefiniowałem w programie dla Timer2 tryb pracy CTC i bez preskalera (TCCR2 = _BV(WGM21) | _BV(CS20)) oraz generowanie przerwania przy zliczeniu do 4 (OCR2 = 4). Nie dokonywałem żadnych zmian przy zegarze wewnętrznym z którego korzystam, zatem z tego co wiem ma on częstotliwość domyślną 1MHz. Przerwanie...
Kolego, przy tym kwarcu strasznie będzie Ci się to wolno rysowało. Nie lepiej podłączyć 16MHz i w przerwaniu od Timera wyliczyć sekundę? Autor postu zapewne będzie wykorzystywał kwarc 32.768kHz do odmierzania czasu w trybie asynchronicznym Timer2, a mikrokontroler ustawi np. na 8MHz z generatora wewnętrznego. Jeżeli tak zrobi, to jest to prawidłowo,...
Czy stan wysoki na tych wyprowadzeniach może być z takiego zakresu jak podałeś (0.2 - 1.0 s)? Stan wysoki na tych wyprowadzeniach ma się utrzymywać przez czas dobrany doświadczalnie po stworzeniu całego układu. Lecz będzie on wybrany z przedziału 200ms-1s. Prąd cewek elektromagnesu ma być dobrany tak by magnesy zawsze działały z pełną, możliwą do uzyskania...
O wewnętrznym zapomnij. Kup taki który ma napisane 4,194304 MHz (ale nie 4,19E coś tam bo to nie to samo). Do tego normalne zewnętrzne kondensatory jak w dokumentacji. A i fusów nie zapomnij przestawić. Z taki kwarcem prescale na /64 i tajmer 1 przepełnia ci się sam co 1sekundę (przerwanie). O tym już tu było. To samo tyczy się c2051 - są odpowiednie...
Znalazlem cos takiego ustawiony tryb 8 bitowy, napiecie odniesienia wewnetrzne. Uruchomione przerwania od przetwornika, AVCC zasil tak jak na stronie 203 pdfa, jak uzywasz wewnetrznego zrodla odniesienia to AREF przez kondensator do masy, AGND jak najblizej masy mierzonego napiecia #include <avr/io.h> #include <avr/interrupt.h> #define F_CPU...
Witam Chciałem uzyskać pracę asynchroniczną (licznik sterowany kwarcem zegarkowym, procesor generatorem wewnętrzym). Napisałem prosty program (miganie diody LED co 1s): $regfile = "m48def.dat" ' plik danego mikrokontrolera $crystal = 8000000 'częstotliwość generatora wewnętrznego Config Portb.0 = 1 'wyjście dla LED Portb.0 = 1 Enable Interrupts 'odblokowanie...
Witam. Mam problem. Zrobiłem generator jak na rysunku poniżej: https://obrazki.elektroda.pl/4869239100_... Potrzebuje mierzyć w czasie rzeczywistym częstotliwość jego pracy. Chcę zrobić na Atmedze8 którą posiadam. Podłączyłem do niej wyświetlacze siedmiosegmentowe i napisałem w C ich sterowanie. Moja pierwsza próba: Najpierw próbowałem...
jeśli chcesz sprawdzać program w wielu miejscach to zastosuje flagi ustawiane w punktach kontrolnych a ustawienie tych flag sprawdzaj w procedurze obsługi Watchdoga. Możesz wtedy sprawdzić obecność w wielu punktach i wyzerować (lub nie) timer, z wyzerować wszystkie fagi. Wtedy procedura nawet dobrze jak byłaby obsługiwana w przerwaniach zegarowych...
teraz zatrzymujesz timer po wejsciu do przerwania? to jak dla mnie zupelnie bez sensu juz. Ale wlasciwie dlaczego musisz go za kazdym razem przeladowywac? Uzyj funkcji match moze lepiej. A co do bitow kalibracji oscylatora to mozna to zrobic w ISP Progu niema potrzeby robienia tego programowo (przypuszczam ze da sie w Bascomie dostac do pojedynczych...
arduino przerwania wewnętrzne atmega8 przerwania atmega8 przerwania timer1
paski ekranie cienkie telewizor toshiba 26el933g fronius licznik energii
mercedes vaneo zwiększenie pamięci mikrokontrolera
Lokalizacja czujnika temperatury w silniku 1.9 TDI Dwusiarczek molibdenu w silnikach turbinowych: właściwości i ograniczenia