bierzesz pod uwagę nie to przerwanie. zobacz czasy dla TIMER/COUNTER1 OCR1A Compare Match
Pewnie że nie będzie działać, ustawiłeś Preskaler =256 a więc przy zegarze 16MHz przerwanie od Timer0 będzie pojawiać się z częstotliwością 62500 razy na sekundę. (16000000/256 = 62500). Zalałeś modem zapytaniami o CSQ i biedny nie ma czasu na odpowiedź.
Nie rozumiem jak przerwanie od licznik 8 bitowe mialoby przeszkadzac w dzialaniu pozostalych przerwan czy calego programu.. Przerwanie np przy 16Mhz bedzie generowane 62500 /preskaler na sek od licznika 8 bitowego, a zajętość (stan CLI) procesora oceniam na ponizej 1 uS co chyba nie wplynie na pozostale zadania procesora.
Tak się nie robi. Myślę że ten timer się parę razy przepełni zanim obsłuży LCD. Ustaw timer tak aby wywoływał przerwanie przy danej wartości i w tym przerwaniu dodawaj jakąś zmienną o 1 i czyść licznik.
Działa. Pewnie o czymś zapomniałeś na wstępie. Mój działający kod: .include "m128def.inc" .cseg .org0x0000 rjmpreset ;skok po resecie systemu .org0x0018 rjmpdata ;skok po wykryciu zgodności reset: ldi r16, high(RAMEND) out SPH, r16 ldi r16, low(RAMEND) out SPL, r16 rcallKONFIGURACJA_TIMER1 sei loop: nop rjmploop ;......
Czyli najmniejszy okres wyniesie 20us a najdłuższy 1s. Rozwiązaniem jest pół-softwerowy PWM ze stałym wypełnieniem. Potrzebny Ci jest do tego tylko jeden Timer. A w jaki sposób chcesz ustalać tą częstotliwość? Przy zegarze 16MHz (może tem uC tyle osiągnąć?) to Ci daje 160 operacji na jedno przerwanie zegara. Powinno się udać :-).
Kwarc 16MHz pewnie ma dokładność rzędu 50ppm. Czy to dużo czy mało to sam musisz zdecydować. Da się znaleźć specjalne rezonatory o mniejszej tolerancji. 20 albo 10ppm. Opóźnienie w przerwaniu nie ma znaczenia jak obsługa przerwania będzie dobrze napisana. Po protu powstanie wtedy przesunięcie fazy. Ale to przesuniecie będzie stałe. Dodatkowo w mojej...
A wewnętrzny pull-up włączony? Bo objaw jest typowy dla programu, w którym włączone jest przerwanie zewnętrzne, a wejście wisi w powietrzu, choć program jest prosty i nie ma w nim obsługi przerwań... Ustaw w pętli niech samo zwiększa wartość zmiennej i obserwuj czy dalej są zakłócenia.
W kodzie jest sporo błędów. Nie do końca jestem pewien, czy rozumiem, o co chodzi, ale jeśli przerwanie INT0 jest od przycisku, to nie ma prawa działać poprawnie, a przyczyna efektu, który obserwujesz, leży w operacjach na zmiennej b. Takie przerwanie po wystąpieniu musiałoby być blokowane przy pomocy timera na jakieś 30 ms, co jest znacznie bardziej...
Bascom nie da sobie z tym rady, C też nie da rady bez wstawki assemblerowej, W wartym 5zl ARM klasy STM32F030F4P6 masz 5 kanałów DMA którymi ogarnąłbyś problem tak po prostu. A z czego Ty chcesz te DMA wyzwalać? W przerwaniu bez wstawki assemblerowej też sobie z tym nie poradzi. Coś nie chce mi działać, wgrałem z kompilowany hex do procka i restartuje...
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...
No to trzeba je oprogramować tak, aby nie bruździło... czas obsługi przerwania ok. 1-2 µs (przez wstawkę asemblerową) chyba nie zrobi na transmisji 1Wire większego wrażenia ? Przy 8 MHz mamy do dyspozycji 8 cykli zegarowych w czasie 1 µs, a przy 16MHz - 16 cykli zegarowych. reti zajmuje 4 cykle, cbi / sbi po 2 cykle, ewentualne nop pomiędzy...
W bascomnie ciężko zrobić LED + Ds18b20 wszytko psuje Waitms 750. Zwiększ do 8 a jak możesz do 16MHz kwarc. A od kiedy to musimy czekać 750ms nie robiąc nic innego? Od czego mamy timery? Przepraszam najmocniej Kolegę, ale jeśli Kolega tego zrobić nie potrafi to: 1. Nie oznacza że się tego zrobić nie da - ja nie potrafię zbudować komputera klasy PC...
\ 1. Rozumiem, że ustawienie odpowiedniej częstotliwości da mi czas, który jest mi potrzebny? Tak, program z tego postu demonstruje rejestry i bity których odpowiednie ustawienie spowoduje daną częstotliwość przerwać timerów, a w konsekwencji odpowiednią częstotliwość wysyłania tekstu / migania diodą, jednak obecny ustawiony czas jest przykładowy, nawet...
Nie, to są odmienne procesory. Ściągnij ze strony www.atmel.com datasheety obu procesorów i możesz porównać (jak i poczytać o samej atmedze) W zasadzie z tej rodziny masz wybór pomiędzy (wszystkie procesory maja 28 wyprowadzen i ten sam układ końcówek, różnią się detalami): atmega8 - standard, pracuje do 16mhz atmega8l - wersja low voltage, pracuje...
nie wiem czy o to chodziło bo nie mam na czym uruchomić tego programu (tzn. mam Bascom ale nie mam zestawu '51), ale wg mnie dopiero ten program zadziała: $crystal = 16000000 '$default Xram $large Dim Cyfra(12) As Byte Dim Jedn_sekund As Byte Dim Tempo As Byte Config Timer0 = Timer , Gate = Internal , Mode = 1 Th0 = &Hd8 ' Tl0 = &Hd7 ' =10025 cykli...
Cześć, mam problem ze startem zewnętrznego kwarcu 16 MHz w STM32F030K6T6. Nota katalogowa mówi, że akceptuje on oscylatory z przedziału 8 - 32 MHz. Przy kwarcu są oczywiście dwa kondensatory 15 pF. W domyśle chciałbym uruchomić PLL x3, żeby mikrokontroler pracował z prędkością 48 MHz. Zmienna HSEStatus zostaje ustawiona na 0 po wygaśnięciu timeoutu...
a jesli powiem ze tak tez próbowałem tylko ze odczyt z kodów z rc5 trwa z przerwą 600ms która musi byc pomiedzy odczytem a konwersją temperatury z ds1820 :( Jakoś nie widzę problemu. Przecież Int0 ma wyższy priorytet niż DS. Jerśli istnieją jakieś konflikty to należy zablokować przerwanie Int0 na czas inicjacji DS'a i odczytu temperatury. W trakcie...
Witam. Mam dziwny problem z kwarcem zegarkowym. Mam działający program działał dotychczas na kwarcu 2mhz podłączonym oczywiście do XTAL1 i XTAL2. Dziś postanowiłem zamienić go na 32768khz. Jedyna zmiana w fuse-bitach to CKSEL teraz jest 1001 oraz SUT teraz: 00 . Niestety pony prog przestał w ogóle wykrywać procesor nie da się zmienić ustawień! Procesor...
http://obrazki.elektroda.pl/7329866000_1... Miernik częstotliwości o całkiem niezłych parametrach, bo potrafiący mierzyć częstotliwości od 1Hz do 10MHz (9,999,999Hz) z rozdzielczością 1Hz w całym zakresie. Idealny do generatorów funkcyjnych lub jako zwykły miernik. Do tego tani i prosty w wykonaniu, z ogólnodostępnych części, a małe wymiary...
http://obrazki.elektroda.pl/9114516200_1... Autorski projekt wyłącznika zdalnie sterowanego za pomocą pilota RC5. Cały układ kontrolowany jest za pomocą mikroprocesora z rodziny AVR, ATtiny2313. Na uwagę zasługuje zasilanie układu bezpośrednio z sieci elektroenergetycznej o napięciu 230V, zrealizowane przez zasilacz bez transformatorowy....
http://obrazki.elektroda.net/74_12536950... Witam Chciałbym przedstawić swój kolejny projekt. Prezentowany układ jest uniwersalnym systemem uruchomieniowym dla procesorów AVR. Zaprojektowałem go wspólnie z kolegą (k.moron(malpa)tlen.pl) w oparciu o wspólne przemyślenia i problemy jakie napotykaliśmy przy budowaniu innych urządzeń. Płytka nie...
https://obrazki.elektroda.pl/2040620700_... Przedstawię tu spontaniczny projekt który został zrobiony w jeden dzień - dwukanałowy ściemniacz pasków LED oparty na PIC12F1612, zbudowany przy wykorzystaniu części z elektrośmieci. Oprócz PICa mój ściemniacz będzie korzystał z pamięci EEPROM do zapisu stanów jasności - jest to niezbędne,...
http://obrazki.elektroda.pl/2645142000_1... Sterownik diod LED został wykonany w celu automatycznego lub zdalnego sterowania oświetleniem LED w zależności od jasności w danym pomieszczeniu. Układ sterowania oparty jest o mikrokontroler ATmega16/ATmega32 firmy Atmel, który w zależności od oświetlenia w danym pomieszczeniu steruje jasnością...
http://obrazki.elektroda.pl/9589280700_1... HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC...
http://obrazki.elektroda.pl/8244095700_1... Chciałem przedstawić bardzo prosty akustyczny odstraszacz kun do samochodu zbudowany w oparciu o Arduino Pro Mini (ATMega 328P) oraz moduł przetwornicy step-down na układzie MP1584. Inspiracją do konstrukcji był używany dotychczas analogowy odstraszacz akustyczny zbudowany w oparciu o układ...
Tylko jest tego rodzaju problem iż atmega taktowana zegarem 16mhz przy preskalerze 8 i 8 bitowym liczniku minimalny czas jest w porządku (0,5us) maksymalny natomiast 128us więc dalej musze inkrementowac w przepełnieniu zmienną . Dodatkowo z tego co widze input capture przypisany jest tylko do timera1 ja go używam do innych celów (2 kanałowy pwm). Poradziłem...
https://obrazki.elektroda.pl/6692889600_... Od jakiegoś czasu czułem potrzebę sterowania komputerem za pomocą niestandardowej klawiatury. W wielu przypadkach, takich, jak emulatory starych komputerów i sterowanie urządzeniami za pomocą klawiatury, można przypisać funkcję programu do klawisza na klawiaturze. Na przykład komputer ZX...
Dzięki za odpowiedzi. Schemat zasilania wygląda tak. Zawiesza się procesor u1, który znajduje się na drugiej płycie podłączonej do zasilacza 30cm szarej taśmy. https://obrazki.elektroda.pl/9335085400_... Na tę chwilę nie potrafię określić czy procesor zawiesza się na skutek włączenia czy wyłączenia, cewki stycznika czy styków (obciążenia)...
Wejście w przerwanie może trwać przy 16MHz ponad 2us (jak przerwanie jest rozbudowane), więc to nie problem, ale może być użyte przerwanie od USART, którego obsługa zajmie np 15us (podaje dość długie czasy, najczęściej są krótsze). Można śmiało przyjąć, ze jeśli wystarczy rozdzielczość na poziomie 100us nie ma konieczności używania sprzętowego przechwytywania.
Triangle Deluxe - Zaawansowany system oświetlenia http://obrazki.elektroda.net/26_11981998... Przedstawiam mój kolejny bardzo długo zresztą wyczekiwany projekt. Jest to jak dotąd największe z moich przedsięwzięć wykonane zupełnie samodzielnie od początku do końca. Jest też najdroższe gdyż z grubsza licząc kosztowało ponad 1000zł. Wstęp. Było...
Coś mu się odwiesiło i działa te moje i wasze ;) Tak zapytam jeszcze bo mi coś to nie wypaliło zbytnio czy jest możliwość zmiany częstotliwości w "locie"?? Bo projekt zakłada super kondensatory do podtrzymywania "danych" na ile się da, i tak pomyślałem jeszcze by wydłużyć czas to, 16MHz zasilanie musi być powyżej 3,8V a gdybym tak uśpił na 4MHz to wtedy...
Nie pasuje to, że nie wrzuciłeś ani jednego kawałka kodu. Wielokrotnie w DIY nie udostępnia sie kodów, bardzo często do projektów w rodzaju miganie diodą. Dlaczego więc ja miałbym udostępnić kody? Mając doświadczenia z pomocą na forach rozumuję tak: Gdy potrzebuję pomocy, najczęściej jestem tylko naprowadzany na trop i pewnie tak by było gdybym otworzył...
Temat dość dawno nie ruszany, ale mam dodatkowe pytanie. Jeżeli Atmega1280 ma kwarc 16MHz to czy w świetle powyższego znaczy, że zewnętrzne przerwanie INT0 może być wywołane nawet 16 razy na mikro sekunde? us Czy to oznacza, że czas trwania imp. wyzw. moze być faktycznie poniżej 1 us?
Nie pokazałeś schematu więc nic nie doradzę może poza przeglądnieciem [url=http://mikrokontrolery.blogspot.com... odnośnie minimalnego podłaczenia procesora. Napisz programik testowy dla timera1 z preskalerem 256 i zmianą stanu pinu portu w przerwaniu. Dla kwarcu 16MHz przerwanie wystąpi co około 1 sekundę. Jak to...
Szkoda czasu na przeładowanie Timera jeśli może on pracować w trybie CTC. Ustawiasz raz i zapominasz. Poniżej przykładowy kod dla 50Hz ze stałym wypełnieniem (zakomentowane) lub regulowanym. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 16000000 Config Portb.1 = Output Led Alias Portb.1 Config Portc.5 = Output Freq Alias Portc.5 '### Ustawienia...
Witam Mam atmege 128au -wersja 16Mhz (albo 20?) W bascomie można ustawić max 8MHz, podanie większej wartości nic nie zmienia - sprawdziłem oscyloskopem sygnał generowany przez przerwanie od timera. W jaki sposób ustawić 16 (20) MHz? Przeniosłem z Układy programowalne.
Przerwania wcale nie są złe tylko dlatego że tobie się na nich nie udało. To trzeba zrobic w assemblerze. Ale nawet przy taktowaniu 16MHz nie podzielisz częstotliwości większej niż powiedzmy 1MHz. Ja bym walną to na Timerze w trybie CTC. I ustawił Timera tak żeby generował sprzętowo sygnał na swoim pinie IO. Będzie i szybkie i proste. Wtedy przy taktowaniu...
Witam, Nie będę zakładał nowego tematu. Mam podobny problem. Atmega 2560 + 16Mhz. Przy tym ustawieniu timera przerwanie powinno być generowane co 0,5s. Natomiast jest generowane co 1s. 256/16000000= 16us*65536=1,048576s 65536-31250=34286 co daje 0,5s [syntax=basic4gl] $regfile = "m2560def.dat" $crystal = 16000000 Config Portg.5 = Output : Portg.5 =...
soki jeszcze pytanie w sterowniku wykorzystujesz obsluge przerwan czy tylko podpiales ten pin? czy jako przerwanie podajesz step z lpt? Pytam bo mnie przy 16mhz gubi kroki i jakies dziwne szarpania przy niskich posowach wlasnie ze step2cnc. Z tego co mi przekazal tworca programu wypelnienie impulsow sterujacych jest 50% wiec uznalem ze niekonieczne...
Atmega jest taktowana zewnętrznym kwarcem 16mHz. Dzieląc 16Mhz przez 32kHz wychodzi mi około 488 cylki. Poza tym nie ma znaczenia czy kod w przerwaniu zajmuje 3 linijki czy 100. Przerwanie wykonuje się dokładnie tyle razy. Zegar na tym zrobiony ma błąd mniejszy niż 1 sec na dobę więc nie ma mowy, że uC nie wyrabia.
Ale w czym problem? Wpuszczasz sygnał z DHT na wejście timera i mierzysz czasy trwania impulsów - to b. proste. Timer zgłasza przerwanie capture przy zmianie poziomu na linii danych. To jest rozwiązanie problemu, a nie pisanie kodu, który programowo odlicza czas i wyklucza możliwość robienia czegokolwiek innego podczas transmisji.
Kolejne pytanie: Wg. noty atmegi16 wektor przerwania od przepełnienia timera0 (Timer0 OVF) znajduje sie pod adresem $012 natomiast w symulacji i rzeczywistym środowisku przerwanie działa tylko gdy skok do niego jest ustawiony pod adresem $030 (taka wartość ląduje w liczniku rozkazów w momencie wystąpienia przerwania). Czego nie wiem co deklaruje niewłaściwie...
Witam. Pracujesz na wewnętrznym oscylatorze z PLL co daje 32MHz ale . Timer już nie jest taktowany zegarem 32MHz ale 16MHZ FOSC/2 = TCY . Kolejna rzecz to to że chcesz aby przerwanie występowało co 125ns co przy tej częstotliwości taktowania timera jest nie realne. Przecież obsługa przerwania też trwa ileś tam cykli . Po testuj w symulatorze a w szczególności...
Slave`y są taktowane 16MHz bo takie miałem tam wlutowane kwarce (płytki były gotowe). W Masterze użyłem już 8MHz ale przy tym taktowaniu prędkość 38400 to już prawie maksimum. Oczywiście adresy mogą być zmiennymi oraz pamiętane w Eeprom, jednak chyba nie przemyślałeś tego nadawania im adresów. Prościej było by napisać jeden wspólny kod dla wszystkich...
Przebrnąłem przez timery zobaczymy z jakim skutkiem, proszę o zweryfikowanie mojej pracy. Wybrałem tryb licznika CTC. Podział zegara taktującego 16Mhz przez 8 o daje nam taktowanie 2Mhz. Więc maksymalne opóźnienie będzie mogło wynosić 20 000 'zliczeń' licznika. Przerwanie pochodzące od układu wykrywającego zero wyłączy pin do którego będzie podpięty...
Do tego nie sa potrzebne dwa liczniki. Wystarczy jeden. Przy kwarcu 16MHz cykl maszynowy trwa 750ns. Do 16 bitowego licznika ladujesz 65535 - 53333 i otrzymujesz przerwanie dokladnie co 40ms. W tym przerwaniu przeladowujesz na nowo licznik oraz zwiekszasz o 1 zmienna. Gdy zmienna ta osiagnie 25 bedzie to znaczyc ze wlasnie minela 1 sek. Wtedy musisz...
To zwiększ do 16Mhz a bedziesz mial do dyspozycjie 3200 taktów na przerwanie o ile sie nie myle a to masa rozkazów. Dodano po 5 Wszystko jasne sprawdz czy nie masz przebiegu na innej nóżce. I skasuj obsługe przerwania oraz zezwalanie na przerwanie bo z jedejstrony ty chcesz sprzetowo generować a z drugiej strony programowo wiec zdecyduj sie. Sygnał...
Używam Timera1 z Atmega164P w trybie CTC, Atmega ma kwarc 16MHz, interesujący kawałek programu wygląda tak: Konfiguracja Timera: void Timer1_Init(void) { DDRD |= (1<<PD7); // PD7 wyjście PORTD |= (1<<PD7); // PD7 <= 1 TCCR1B = (1<<WGM12)|(1<<C...
W projekcie masz 16MHz a pisałeś o timer0. Najbliższym kwarcem, który łatwo można kupić będący najbliżej wartości będącej potęgą liczby 2 jest właśnie ten kwarc. Dzieląc 14745600 przez 2 będziesz miał całkowite wyniki do 16-tego dzielenia włącznie. Przy kwarcu 16MHz skończysz zaledwie na 10-tym dzieleniu. Najlepszym rozwiązaniem jest kwarc zegarkowy...
jak by kogoś interesowało to mam przyładowy program do wyświetlania obrazu zapisanego w pamięci ram(32k) na procesorze ATMega8515. program jest napisany w bascomie ale przerwanie odświeżające jest w asemblerze. na kwarcu 16Mhz da rade odświeżyć 70 razy sekunde i zostaje mu jeszcze troche na obróbkę danych ale ogólnie do bardziej złożonych programuw...
Witam, Piszę program w C. Procek ATmega8 taktowany zewn kwarcem 16MHz i fusy oczywiście przestawione prawidłowo. 1. Ustawiam sobie Timer2 w tryb CTC 2. Ustawiam preskaler na 8 3. Ustawiam OCR2 na 20 4. Odblokowuję przerwanie CompareMatch dzięki czemu uzyskuję przerwanie co 10us w przerwaniu mam zmienną (licznik) którą inkrementuję do 999 i znowu na...
atmega16 16mhz usbasp 16mhz bootloader 16mhz
oporność głośnik fabia diody ipconfig ipconfig flushdns
vaillant atmovit vaillant atmovit
Magellan RoadMate 1210 – działanie GPS i mapy w Polsce 2024, wsparcie, aktualność Licznik motogodzin w wózku Linde 0009460759 nie działa