Timer2 nie ma 'edge detektora', więc na którym zboczu miałby zlicza impulsy? Timery działają, dlaczego miałyby nie działać? Widocznie jakoś producent zrealizował tę możliwość. Rzecz w tym że w tym trybie, wejście dostosowane jest do typowego oscylatora 32,768Hz, więc pozostałe parametry są niezbyt istotne, i mogą się dziać różne rzeczy. ;) Zrobiłem...
Jak np mam kilka innych procedur które zabierają dużo czasu. Np pomiar ds18b20 albo wyświetlanie na LCD a chciałbym je wykonywać co pewien ściśle określony czas.
zobacz na stronę http://www.avrbeginners.net/ Dobrze udokumentowane przykłady i opis dziania AT90S i ATMEGA Timery,UART,rejestry itp.
Witaj. 1. Nie znam VMLAB, ale czy prawidłowo definiujesz F_CPU? 2. Czy symulator nie potrzebuje osobnej definicji częstotliwości do prawidłowego określania czasów symulacji? Tak jest w symulatorze w Atmel Studio. 3. Volatile: http://mikrokontrolery.blogspot.com/2011... Posklejałeś ten program z kilku - no ale każdy kiedyś zaczyna...
W tym kodzie jest błąd: Load Timer0 = 250 jest niepoprawnie zapisane bascom nie krzyczy błędem ale ta składnia nie działa. Powinno być Load Timer0, 250 Ta funkcja ładuje do timera wartość 256-wartość, czyli w twoim wypadku 6.
kolejny temat, na ktory odpowiedzia jest 'volatile' - bylo o tym milion razy. 4\/3!!
Dzięki teraz działa wszystko działa
Skoro już używasz timera, to zrób to na timerze :) Najprościej tak, że ustawiasz timer w tryb CTC, procedura obsługi przerwania działa tak jak to wcześniej opisałem. Jeśli chcesz uzyskać przyśpieszenie po przytrzymaniu klawisza to zmieniasz tylko wartość rejestru porównania w trybie CTC na mniejsza, w efekcie kolejne przerwania będą przychodzić szybciej,...
Czy RTC (zegar czasu rzeczywistego) używający Timera 2 w trybie asunchronicznym , działa nawet wtedy gdy wyłączone sa przerwania globalne ? ... kwarc, preskaler oraz Timer2 nie potrzebuje przerwań ale to nie wystarcza do zrobienia całego RTC to wystarcza do zrobienia przerwania co 1 sekundę a reszta zegara musisz zrobić programowo i to właśnie na przerwaniu...
Czy komuś udało się uruchomić prostą obsługę od przepełnienia TIMERA 2 w Atmedze 8. Mi się udało.
Po pierwsze nie podoba mi się zapis: Pinc.1 = not Pinc.1 Powinno być raczej: Portc.1 = Not Portc.1 Albo jak ktoś się bardzo uprze: Portc.1 = Not Pinc.1 Ale ogólnie do rejestru Pinx raczej nie zapisujemy. Ponadto... zegar 4MHz, dzielnik w timerze przez 256, timer0 (8 bitowy) ładowany wartością 250.... to daje podział przez 6*256 = 1536. To częstotliwość...
Ile trwają procedury Measurement_DS18B20() oraz Measurement_SHT11()? Najlepiej pokaż też je. Takie coś się może dziać się w momencie, jeśli przerwanie od timera przychodzi w momencie działania funkcji dtostrf, jeśli uart działa z większą prękością to prawdopodobnie rzadziej trafia w tą funkcję. Najszybciej poprawić to można poprzez wprowadzenie jakiejś...
Jak ustawiać preskalery według tabelki z #27 podanej przez excray .Jak wygląda preskaler 32 i 128 jak to się ustawia. W internecie jest taki preskaler , TCCR1B |= (1<<CS12)|(1<<CS10); // preskaler = 1024 Jak czytałem preskalera 32 i 128 nie obsłuży Attiny 2313 i Atmega 8. Co obsłuży wszystkie preskalery podane w tej tabelce. Bo patrzysz...
(at)jareklnx Przez ponad 40-lat pracy z elektroniką, uszkodziłem poprzez ESD tylko jeden układ. Atmega 8, układ ogólnie działa. Da się odczytać i zaprogramować, jednak pobiera za duży prąd i się grzeje. Ponieważ pracuje raczej krótko (timer naświetlarki UV do płytek) to nie zmieniałem na nowy.
Dziękuję kol niveasoft !!! Działa świetnie!! Config Timer0 = Timer , Prescale = 1 , Timliłoer = 34 - chyba to mnie zmyliło bo czytałem że trzeba na 26kHz timer do odbiornika IR ustawić
Twój problem nie wynika z priorytetu przerwań tylko braku umiejętności prawidłowego ich wykorzystania i zastosowania biblioteki która jest źle napisana . Zazwyczaj dzieje się tak gdy użytkownik w przerwaniu umieszcza całą procedurę obsługi bufora , wyświetlacza lub innych peryferii lub po prostu timer odmierza krótszy czas niż trwa obsługa przerwania...
ATMEGA88 jak i ATMEGA168 ma wewnętrzy preskaler sygnału zegarowego który jest domyślnie włączony. ATMEGA 8 go nie ma.
W tej chwili dodałem do if(kb_key) lcd.backlight(); a do if(timer_nieaktywnosci>CZAS_BRAKU_AKTYWN... lcd.noBacklight(); i DZIAŁA ... a zapomniałe zapytać z czego można wyczyścić dotychczasowy kod żebym czegoś nie sknocił.
(at)tmf - podejrzewam, że pobór jest całego układu w tym podświetlenia LCD więc może pobierać 0.2A; Hero - czy procek się grzeje? Czy masz watchdog timer wykorzystywany? Czy masz BOD?
Nie podoba mi się twoje rozwiązanie. Ja bym to zrobił tak - timer odmierzający takty w rytm podstawowego okresu PWM (czyli przerwania np. 1kHz). Teraz zamiast tych porównań z licznikami, wrzuć wartość licznika do rejestru compare register. Dzięki temu masz przerwanie po przepełnieniu timera (nowy okres) - w tym przerwaniu inicjujesz wysyłkę danych po...
Nie wiem jak w nowych wersjach BASCOM'a, ale w starych nigdy nie użyłem Start timer0 i jakoś wszystko działało. Teraz przerzuciłem się na C, bo lepiej się panuje nad wszystkim. Przeczytaj dokładnie helpa od twojej wersji i co po czym powinno być. Ciężko powiedzieć co się może dziać z BASCOM'em w tej sytuacji, nie widzę błędów (ale dawno nie miałem styczności...
Niestety wbudowana w bascoma funkcja do odbioru RC5 może działać tylko na timerze 0 lub 2 (koniecznie musi być to timer 8-bit) lub na timerze 1 (lub 3 - nie wiem czy działa) w trybie ICP. Przejrzyj helpa bascoma pod hasłem Config RC5.
Ja mam taki program zrealizowany na Atmedze8. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 40 $framesize = 40 Config Portb.1 = Output 'wyjscie triak Triac Alias Portb.1 Config Rc5 = Pind.7 'rc5 pin timer0 Dim Level As Word 'poziom sciemniania 1 - 20 Dim Timer_val As Word 'wartosc timer1 dla sciemniania Dim Command...
Co 3.88us wywołujesz przerwanie od przepełnienia timera. A przetwarzanie ADC w pętli while trwa 0.12ms- czyli 120us. Czyli podczas tej pętli pojawi się wielokrotnie przerwanie od timera0. A jeśli się pojawi podczas sprawdzania warunków tej pętli to moga się dziać dziwne rzeczy. Jedna instrukcja przy 8Mhz trwa 0.125us. Czyli obsługa przerwania powinna...
Programuję mikrokontroler Atmega 128 w Bascomie i mam problem z ustawieniem tego trybu dla timera3. Posiada on trzy wyjścia na których mogę ustawić PWM, jednak nie potrafię tego zrobić. Ustawiając PWM na timerze 1 wszystko działa. Bascom podświetla PWM1a oraz PWM1b na niebiesko natomiast z PWM1c nic się nie dzieje, tak samo dzieje się z timerem3. Bardzo...
jak miałem kompatybilność z atmega 103 ustawioną to działało na odwrót Timer 1 działał a 3 nie jak w fusebitach zmieniłem to Timer 3 działa a 1 nie...
...Czyli zumek ma rację... Niestety , zumek nie miał racji , bo błędnie założył (patrząc tylko na fragment w 1-szym poście) , że prescale jest równy 1. Teraz by sie zrehabilitować , bardziej się przyłożył :D Biorąc pod uwagę , że We2 cały czas jest równe 1 , wyliczył że zmienna Czas_otwarcia , zostanie inkrementowana w tej pętelce , 148000 :!: razy...
Halogeny też będą zabronione ?? a co do projektu, właśnie zakończyłem projekt na uczelnie gdzie wykorzystuję sterowanie halogenem. jest to zrealizowane w ten sposób, że mam 100 poziomów jasności (0-100%). Sterowanie fazowe oczywiście i triak załączany impulsem. Logicznie, program działa tak: 1) system detekcji zera (transoptor) wykrywa moment w którym...
Wielkie dzięki! O to właśnie chodziło! Pięknie i prosto. Da się, da się no da się odpowiedzieć normalnie? Wszystko działa jak należy piękne dzięki oby więcej takich dobrych ludzi na elektrodzie.
Wydaj mi sie że brakuje ci polecenia => gate=internal Sprawdź: Config Timer1 = Timer , Gate = internal, Prescale = 1 Enable Interrupts : Enable Timer1 Aha, jeszcze => Start Timer1 hmmm... nie ustaliłeś trybu pracy licznika a instrukcja Load jest dla timera w trybie z automatycznym przeładowaniem
Mnie się udało odpalić wake-up timer, ale nie potrafie jeszcze kontrolować czasu co jaki RF się budzi. nIRQ działa, w chwili obecnej odbiór danych mam zrealizowany własnie za pomocą przerwań.
Miałem chwilę więc chciałem napisać szybko program na Aduino Mega2560, ale potem sobie przypomniałem, że tam mikroskopijny kwarc a błąd przy 16MHz dla 115200 jest za duży. Wziąłem więc Mega128 bo była wolna i pod ręką. Napisałem program w którym przez Charmatch odbieram string "1234567890" po odebraniu Entera. Żeby było uczciwie to jeszcze odpaliłem...
bascom często ma problem z zaawansowanymi trybami pracy przetworników , timerów itp często nie działa to tak jak powinno.
Tak patrzę i na moje oko to włączyłeś przerwanie timera, ok ale timerem 1 generujesz pwm i chcesz też używać jego overflow? Do tego wstrzymujesz przerwanie na odczyt z ADC. Mi się to nie podoba. Zostaw timer 1 jako PWM, a weź sobie np timer 2 do generowania przerwania overflow i powinno byc ok.
Bufor zawierający informacje wyświetlane na matrycy to plansza[][]. Mógłbyś mi przybliżyć co oznaczają przerwania timera? A co do kodu to to niestety/stety działa ;p Tylko że diody świecą się słabo.
Pojutrze rok szkolny się zacznie to ze szkoły coś wypożyczę, więc nauka pójdzie od przodu, a co może być nie tak, że nadal timer nie działa? Jak zrobiłem tak jak mi tadzik kazał to działał drugi a 0 już nie ;/
Witam, mam dosyć nietypowy problem , otóż gdy chcę zaprogramować sobie Atmegę 8/ 88P (w obu przypadkach dzieje się tak samo) to po próbnym odpaleniu wyświetlacza 7-segmentowego napotkałem problem a mianowicie: Jeśli chcę ustawić jakikolwiek preskaler w Timerze 0 to funkcja delay przestaje działać, obojętnie czy wstawie tam 1ms czy 1000. Po prostu program...
Przejrzałem już chyba wszystko na sieci (łącznie z notą oczywiście) i wszędzie podają taki sposób ustawiania timera: adres 0 <- 4 (lustawiony bit 3 włącza timer) adres 7 <- 0 (zerowanie na wszelki wypadek licznika - tu układ zlicza) adres 8 <- B01000010 (konfiguracja timera) adres 15 <- 10 (zapis odmierzanych 10ciu sekund) Udało mi się zliczyć...
Timer w XMEGA ma specjalny tryb QDEC, w którym działa jak dekoder enkodera. Także jest to robione całkowicie sprzętowo i nie ma tu żadnych analogii do ATMega.
A skąd wiadomo, że działa akurat na 8kHz? A widzisz sie pomyliłem bo Atmega8A myślałem że on działa na 8MHz a standard to 16MHz wiec w rejestrze (1 << CS10) Timer ustawia 1:1 wiec sygnał może być 16kHZ jak atmega ma 16MHz..
Dopisz jeszcze tak: Config Timer1 = Timer , Prescale = 1 lub Prescale=8 lub Prescale=64 Domyślnie chyba atmega ma wyłączony dzielnik czyli nie podaje sygnału zegarowego na licznik. A w ogóle działa Ci ten transoptor, program dochodzi do wyświetlania na LCD?
Mam jeszcze pytanie: czemu przy dodanym kondensatorze 470uF atmega po odączeniu zasilania "ścina się" i jak zaraz podłącze zasilanie to nie działa. Włączyłem układ BOD na 1.8 V ale np. jakbym chciał zasilać atmege z 2 V to by była w stanie resetu bo w dokumentacji pisało ,że działa BOD max. do 2.4 V.
Zatrzymywanie timera poprzez wyzerowanie preskalera to normalny sposób jego wyłączenia określony w dokumentacji :) Ok, zgoda. Pomijając przerwanie, pomińmy je. To je pomiń w programie, a nie teoretycznych rozważaniach. Innymi słowy kol. Andrzej__S pokazał Ci gdzie masz podstawowy problem. Zmień więc koncepcję i dopiero gdy ona nie będzie dziać poprawnie...
Program zajmuje 50%. Może i jest źle napisany ale działa.. Ja bym to stwirdzenie troche skorygował; Program działa tak jak jest napisany!... bo - "Jest jeszcze jeden problem." Co jakiś czas temperatura podskakuje o 10 stopni a czasami nawet do 200 podskoczyło co spowodowało zbędne załączenie przekaźnika. Z czym jest problem? Popatrz na pracę timera0,...
W tym momencie nie mogę; ale podłączyłem poprawnie zasilanie bo świeci się dioda na sterowniku, i jedną nózkę sterownika do masy, a drugą do pinu 11 w Atmedze... Nie możesz mieszac 'zwykłej' numeracji pinów mega8 z numeracją przyjęta w Arduino. Te numery nie pokrywaja się !!! Pin 11 dla Mega8 jest PD5 lub alternatywne wejście Licznika/Timera1 (w Arduino...
Ok, to już jest bardzo pomocne. Rzeczywiście takie podejście może rozwiązać mój problem. Napisałem część programu według Twojej propozycji, proszę o sprawdzenie, czy to ma sens. [syntax=c]#define F_CPU 8000000UL /*czestotliwosc na 8MHz*/ #include <avr/io.h> /*biblioteka avr*/ #include <string.h> /*biblioteka napisy*/ #include <stdio.h>...
Jeśli myślisz o dalszych efektach- zmianach w programie- to waitms jest rozwiązaniem tymczasowym. Jak najszybciej zacznij się uczyć o timerach i przerwaniach. Dopiero z nimi można sprawić że procesor działa jak Ty chcesz- a nie jak on chce.
Zamiast zadawać pytania, poszukaj na nie odpowiedzi w dokumentacji - przeczytaj, jak działa timer w trybie PWM z limitem w ICR1. Ani okresu, ani wypełnienia nie ustawiasz w procentach, a w cyklach zegara. Zmiana jednego nie ma wpływu na drugie.
A co ma się dziać jak w pętli DO...LOOP jest nic.Jakieś INCR coś.
I Atmega działa na 16MHZ No i wszystko jasne :) Jeśli się w obliczeniach nie pomyliłem to Twoje przerwanie wykonuje się z prędkością blisko 80kHz, a programowy timer dzieli to na 50 (taka wartość przekazywana z pętli głównej) więc docelowo twoja dioda miga z PWM w rytmie prawie 1,6kHz... może być trochę ciężko zauważyć to miganie :)
czyli RS musiałby działać z szybkością co najmniej 1 Mb/s Sprawdziłem organoleptycznie: działa stabilnie przy ciągłym strumieniu przesyłanych danych - przynajmniej na Atmega 168PB. Oczywiście połączenie USART -> USB. Pierwotne pytanie było o pomiar częstotliwości. Podana metoda dwóch timerów jest też dla pomiaru częstotliwości. Jak by Kolega sprawdził...
Pomijając jak działa ten program to źle się do tego zabrałeś. Jak chcesz w sposób wiarygorny liczyć impulst >240kHz, jeśli ATMega jest taktowana np. 8MHz? To daje ci zaledwie 33 takty pomiędzy przerwaniami. Należy mierzony przebieg podać na wejście XCK timera, tak, żeby timer sprzętowo liczył impulsy, a przerwanie z drugiego timera wykorzystać do odmierzania...
A no widzisz. Ja nie mam zwyczaju pytać o cokolwiek producentów bo oni mają zwyczaj sobie olewać takie pytania. No ale szkoda. Inne pamięci szło jakoś wysterować. Nawe SDRAM w roli SRAM się da podłączyć (ATMega ileśtam z wbudowanym sterownikiem RAM. A odświeżanie w przerwaniu Timera ;) niezłe kombinowanie z adresowaniem ale działa). A EDO/FPM są o wiele...
Czyli gdzie jest znak = ma być , ? wszędzie? Zegar mam na 8MHz.Już zmieniłem. Bit 103 jest na zero, watchdog na jeden zrobiłem tak $regfile = "m128def.dat" $crystal = 8000000 Config Pina.0 = Output Config Timer 0 = Timer , Prescale = 256 On Timer0 Odmierz_1s Dim Licz_8ms As Byte Enable Interrupts Enable Timer 0 Load Timer0 = 250 Do Loop End Odmierz_1s:...
(at)up Sprawdziłem na stronie atmela ,że ten µC ma 32 kB Flashu i już mi nie szkoda tych 2 kB, bo to nie jest dużo. http://mikrokontrolery.blogspot.com/2011... Nie korzystam z Atmel Studio tylko z Eclipse. A i wywaliłem to z pętli głównej. Obliczanie średniego wyniku(z 1024 pomiarów)...
W praktyce działa albo nie. Zadaj sobie proste pytanie - gdyby każda ATMega działała na 18 MHz, to myślisz, że dział marketingu Atmela nie ogłosiłby całemu światu, że M128 działa na 18 MHz! Te 16 MHz raczej nie dali przez skromność.BTW, twój problem nie wymaga "większego" procka tylko wyższej częstotliwości taktowania timera. Czyli jest dokładnie taki...
Witam. Mam zestaw opisany jak w temacie. Programator STK200. Pojawił mi się problem który nawet trudno wytłumaczyć. Próbowałem juz nawet z drugim ATmegą i tak samo się dzieje. Nadmienię że do układu dołączam oscyloskop Hamega - sprawny i dokładny. Napisałem program z wykorzystaniem Timera T0 - odmierza zadany czas i zapala diodę po czym przy następnym...
Żeby nie było - można w bardzo prosty, wręcz rewelacyjny sposób ;) może nie przewidzieć ile zajmie stos - ale przewidywania nie są trudne jak pisali już niektórzy w tym temacie. - nie trzeba też zaraz kupować jakichś płatnych kompilatorów ;) używać debugerów skomplikowanych programatorów itp .... za to wystarczy taki najzwyklejszy w świecie "monitor...
Pomyśl, jaką wartość będzie miał licznik po zliczeniu 65536 impulsów? Z jakiego powodu uważasz, że Twój program powinien wtedy uznać, że impulsów było 65535? Wydawało mi się, że pomoc, jakiej oczekujesz - to wskazanie błędów w programie. Tymczasem Ty sprzeczasz się, sugerując, że ewidentny błąd, który popełniłeś, błędem nie jest. Nie pokazałeś wersji...
Witam, Mam problemz AtMega z tematu. Ustawiam konfigurację Timerów wg manualki: tryb CNC; prescaler; zezwolenie na przerwania CompareMatch. Po ustawieniu tego odblokowuję przerwania przez "sei();" i.. procesor się resetuje. Dodam też, że taki sam kod działa bez problemów na AtMega 16/32/64. Czy przy pisaniu kodu na te procesory (324/644/1284) trzeba...
Dzięki Dowiedziałem się właśnie, że każdy ciąg znaków string kończy się znakiem 0 i zawsze trzeba przewidzieć o jeden bajt więcej niż potrzeba. Na razie wszystko działa więc ruszam z dalszymi funkcjami. Pozdrawiam wszystkich udzielających się w temacie, gotowe urządzenie ze wszystkimi szczegółami opisuję u umieszczę na mojej stronie. Dodano po 15 W...
To fakt, że brakuje czasów martwych czy wyjść komplementarnych, ale te kwestie da się obejść. Natomiast w tej chwili bardziej rozchodzi mi się o kwestie programowe czyli sam algorytm. el2010tmp Piszesz, że atmega ledwo wyrobi się z generowaniem sygnałów. W moim algorytmie to ona praktycznie nic nie robi bo wszystko dzieje się w Timerach, stąd mój wątek...
Poboru prądu nie potrafię zmierzyć, gdy próbowałem, ekran przestawał cokolwiek wyświetlać (i tak działa poniżej napięcia nominalnego). AtMega przez większość czasu nic nie robi nawet w czasie jazdy, wchodzi w tryb nieaktywny, a budzą go jedynie przerwania z sensorów, przycisków i timera. Podejrzewam, że największym prądożercą jest ekran, a potem rezystory...
Witam Na atmega8 program działa idealnie lecz na atmega 16 nie działa timer2 w ogóle nie zlicza nie mogę go uruchomić.. Czy na atmega16 uruchamia się go innaczej niż na atmega8. [syntax=basic4gl]$regfile = "m16def.DAT" $crystal = 1000000 $baud = 1200 Config Timer2 = Timer , Async = On , Prescale = 128 On Timer2 Zegarek Enable Interrupts Enable Timer2[/syntax]...
Nie denerwuj się. PWM to nie jest żadne rozwiązanie dla krokowców. One potrzebują impulsów, a nie wypełnienia-PWM-Pulse width modulation. PWM jest dla sterowania silnikami DC grzałkami itp. A ty masz silniki krokowe. Nie jestem na tyle dobry w programowaniu żeby ci pomóc. Może inni. Ale o sprzęcie to mam pojęcie. Nie próbuj sterować silnikami krokowymi...
(at)nproton = Fuse bity ustawione są standardowo. Nic w nich nie zmieniałem, gdyż jest to Atmega 1284(bez P) i nie mogłem nigdzie w necie znaleźć do niej odpowiedniej konfiguracji. Bałem się wgrywać te od wersji P, aby nie zablokować sobie uC. Częstotliwość to na pewno 1MHz. Timer działa prawidłowo. (at)kamyczek - to, że nie działa to wiem ;) Tylko...
Witam Spotkałem się z następującym problemem. Korzystam z generacji częstotliwości przy użyciu obydwu kanałów Compare. Niestety otrzymuję zupełnie losowo (przynajmniej w moim postrzeganiu) synchronizację 2 przebiegów. Raz są zgodne raz są w przeciwfazie. Czego nie konfiguruję lub konfiguruję źle że tak się dzieje? [syntax=vbnet]Config timer1 = timer...
Hejka Podświetlanie już działa na zadany czas ;-) faktycznie znalazłem błąd w kodzie. Jednak teraz gdy załącze podświetlanie i program ma się wykonywać przez dany czas, to nie działa mi pomiar temp z DS18B20. Jak usunę pomiar, to program działa normalnie, wykonuje wszystkie podprogramy. Doszedłem do tego, że przerwanie powoduje, że komenda 1Wreset nie...
W trybie CTC nie musisz się martwić o ładowanie nowej wartości to timera, bo dzieje się to samoczynnie. Musisz jedynie na początku programu wpisać przy jakiej wartości timer będzie się resetował wpisując do rejestru OCR2 wyliczoną wartość. Przy 8 bitowym timerze proponuję ustawić preskaler na 1024 zaś do OCR2 wpisać 124 (124 czyli zliczanie do 125)....
Świecą się wszystkie, bo program działa "za szybko". Polecenie WaitMs nie używa timera, tylko czeka określoną ilość taktów, aby ta ilość była prawidłowa, kompilator musi "znać" taktowanie procesora. Na raz ma się świecić tylko jedna dioda, tylko co "chwilę" kolejna - przy odpowiednio małym czasie da to efekt świecenia wszystkich diod jednocześnie.
Sprawa jest następująca, zaprojektowałem na ATMega mały system który używa kliku przerwań sprzętowych a mianowice INT0,INT1, oraz przerwania timera Timer0,Timer1. Dodatkowo program (w C) obsługuje przetworniki ADC oraz DAC podłączone pod magistralę SPI. Generalnie wszystko działa OK ale czasem pojawiają się nieprawidłowe wartości napięć na wyjściu przetworników...
Nadal nie rozumiesz o czym koledzy piszą. Przeczytaj sobie co to są przerwania, co to są i po co są timery. Twój program powinien być taki że w pętli głównej procesor śpi, a w tle w timerach i na zewnętrznych przerwaniach dzieje się cała reszta. Timer mierzy czasy, a przerwania zewnerzne powodują wybudzenie i reakcje procka. Jeżeli masz 8 potencjalnych...
Problemik z PWM i Przerwaniem Timera. Czy możliwe jest żeby PWM sobie działał, a Timer generował normalne przerwanie? Z tego za zauważyłem to nie bardzo. TCCR1A = (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0); //8bit PWM, phase correct TCCR1B = (1<<CS12) | (1<<WGM12); TCNT1H = 0x57; TCNT1L...
Kurdę no przerwanie jest wywoływane co 310us a to jest bardzoooo wiele cykli zegara na to by mogła się wykonać cała pętla while, cały czas nie rozumiem czemu na atmega 16 działa a na atmega128 nie chce działać :/ sprawdzałem bity ustawiające timer i przerwanie, są one takie same dla mega 16 i 128 więc nie wiem w czym jest problem :( Ten program działa...
ldi r16,0xA0 out OCR1AL,r16 ldi r16,0xFF out DDRB,r16 main: rjmp main problem w tym że zmieniasz te stany tylko raz, potem w pętli nie robisz nic... powinno moim zdaneim być main: ldi r16,0xA0 out OCR1AL,r16 ldi r16,0xFF out DDRB,r16 rjmp main edit: ups, nie doczytałem że chcesz wykorzystywać timer... więc nie wiem czy moje rozwiązanie problemu...
Dziękuję za wsad, szykuj się na falę krytyki innych ludzi dlaczego tak a nie inaczej napisałeś obsługę przycisku itp. Odwagą jest dzisiaj wstawić program na elke. Moja kostka (5x5x5) działa na podobnej zasadzie, klatki wszystkich efektów(łącznie 21) mam w tablicy, ale mam multipleksowanie na timerze, do tego piętra można zastosować jako wskaźnik wysterowania...
nie wiem czy to odpowiedni dział. Ta Twoja atmega wystarczy aby zrobić w CAŁOŚCI bariere, nie potrzeba do tego NE555. W TSOP chodzi o to aby dioda cyklicznie zaświecała sie z częstotliwością TSOPa- to zrobisz na jednym timerze Co do "dzikich" stanów odbiornika. Wymaga on filtru zasilania- przynajmniej w postaci rezystora i kondensatora A tak w ogóle...
Zastosowałem rozwiązanie oparte na mikrokontrolerze z rodziny ATmega + zmodyfikowany przez Briana Lowa szkic autorstwa Bena Buxtona. Wyjście na 2 mikroprzekaźniki. Działa bez zarzutu. Jest debouncing, nie ma gubienia impulsów. Układ działa nawet przy "wariackim" kręceniu pokrętłem enkodera (choć nie do tego został stworzony). W przyszłości: - przepisanie...
dodatkowo zliczam 250 czyli 250 * 250 = 62500 poprzednio jak mialem Atmege8 i 16 MHz mialem tak Config Timer0 = Timer , Prescale = 64 On Timer0 Sekunda Sekunda: Load Timer0 = 250 Incr Jednostki_czasu If Jednostki_czasu = 1000 Then 'mam sekunde Jednostki_czasu = 0 End If i odliczało dokładnie 1 sekundę ale chyba masz racjębo układ nie działa (nie...
Timer 1 potrafi działać w trybie CTC tak, że przy zauważeniu równej wartości licznika z rejestrem OCRA może sam zmienić ci stan jednej końcówki procka zwanej OCR na przeciwny. Włącz sobie taki tryb - to wtedy będzie ci to działać automatycznie - czyli bez procedury obsługi przerwania , w pełni sprzętowo. Aby to zrobić zaprogramuj bit COM1A0 czyli TCCR1A|=(1<<6)...
W zależności jak ustawie taktowanie od 8 do 1 MHz to jego precyzyjność wzrasta o dziwo, jeśli uruchomię timer 0 to działa i tak za wolno przy 8MHz około 20 razy za wolno a przy 1 MHz około 4 razy za wolno. Z czego to wynika to nie jestem pewien, ale na kilku portach jest cały czas napięcie 1.8V a powinno być 0.
Witam. Jestem w trakcie wykonywania projektu. Sterowanie PWM-owe ogniwem peltiera załączanym mostkiem typu H, z sprzężeniem zwrotnym na czujniku PT100 odczytywanym z ADC. Pierwsze kroki to budowa układu, z odczytem ADC, kalibracjom i skalowaniem. Zrealizowałem, i działa. Gdy zacząłem pisać kod z timerami zakończył się schody. Dlaczego wyrzuca mi błąd...
Właśnie co do DAC mam pytanie. Gdyż atmega8 sama w sobie ma tylko ADC a czy działa to w odwrotną stronę. Chcę aby atmega mi podawała poziom napięcia na wyjściu np aby sterować tranzystor ale nie Zatkany Nasycony tylko płynnie. Muszę mieć zewnętrzny przetowornik cyfrowo analogwy? Ja jestem na niskim poziomie dopiero poznałem dość znacznie timery i teraz...
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...
Rzeczywiście ma być to urządzenie realizujące fazowe sterowanie mocą obciążenia zasilanego z sieci trójfazowej 3x400V. Dedykowane obciążenie to wentylatory z silnikiem trójfazowym. Regulacja grupowa niestety odpada - testowałem ją na jednofazowych wentylatorach (strasznie buczy i szarpie). Ale może trzebaby przeprowadzić testy na trójfazówce... Głównym...
Polecenie w skrócie brzmi: Napisz program w asemblerze i w C, który wczytuje z tablicy kolejne liczby (bajty) i wyświetla je na diodach bit po bicie. Po każdym kolejnym bicie należy odczekać 5ms, dodatkowo po każdym bajcie należy odczekać 50ms. Wykorzystać przerwania licznika (timera). W asemblerze już napisałem i działa, natomiast w C zdziwiło mnie...
Właśnie o to mi chodziło. Przeglądałem to polecenie w wersji [syntax=c] Config Clock = soft [/syntax] ale tam była informacja, że potrzebny jest Timer, a ja już wolnego nie mam. Wystarczyła zmiana nazwy podprogramu do odczytu czasu i dopisanie zmiennych tak, jak Kolega podał i już. Działa jak trzeba, czyli przy odczycie karty SD w komputerze jest poprawna...
A specjalnie do tego projektu kupiłem mega32, bo 16 ma za mało pamięci i nawet wywalając całą resztę, zostawiając tylko timer, main-a i dwie funkcje, nie dał się dziad wgrać. Jak już kupiłem 32 to się okazało, że nie działa. Przed zakupem kolejnego AVR może zapytam, czy macie jakieś propozycje kodu, który faktycznie działa do tego, co już posiadam?...
Impulsator nie do końca działa elegancko z powodu kompromisu z przyciskami. Impulsator i przyciski działają jednocześnie i to jest OK w miarę. To znaczy, że masz źle napisany program. Obsługa enkodera + przycisków w przerwaniu timera powoduje, że nic się nie może gryźć i wszystko powinno płynnie działać. Te impulsatory to napradę fajna sprawa i niesamowicie...
#include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> char s[] ="0101011010101010101010101010"... static volatile unsigned int a; SIGNAL (SIG_OVERFLOW1){ TCNT1H = 0xd9; TCNT1L = 0x99; PORTB=s[a++]&0x01; if(a==27)a=0; } int main(void) { DDRB=0xff; TCNT1H...
Akurat na Hack a Day jest trochę artykułów o XMEGA. Generalnie można je traktować tak jak ATMega, z tym, że masz np. 8 timerów, 4 SPI, 4 I2C, 4 USARTy itd. Generalnie wszystko co mają, mają w stosunku do wcześniejszych AVR lepsze. Np. lepiej rozwiązany zegar, masz RTC, DMA, które mocno odciąża procesor, event system, który umożliwia realizację złożonych...
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)...
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...
1) Ale zauważ że ten Bitwait nie zawiesi programu. On przecież czeka na linii do której jest podpięty czujnik IR TSOPxxxx. Bez nośnej 36kHz program natychmiast wyjdzie z Bitwaita. Żeby go zawiesić trzeba by nadawać IR w nieskończoność. Jakakolwiek transmisja ma to do siebie że wcześniej czy później da stan wysoki, a w przypadku pilota będzie to max...
Niestety Bascom jest niedorobiony. Ilez to ja niekiedy spedzilem czasu bo cos mi nie chodzilo. Co wersja to inny blad. W jednej wersji nie chodzily mi np. timery na Atmega 16, prescaler blednie sie ustawial itp. Warto jest podgladnac rejestry i sprawdzic czy aby Bascom nie wpisal tam glupot. Jesli wpisal glupoty a to najczesciej jest przyczyna probowac...
Witam Serdecznie Na początek kod: [syntax=c]#define F_CPU 4000000UL #include <avr/io.h> #include <avr/iom128.h> #include <util/delay.h> #include <avr/interrupt.h> volatile uint8_t i=0; int main(void) { DDRA = 0xFF; ASSR &= ~(1<<AS0); TCCR0 |= (1<<CS01) | (1<<CS02); TIMSK |= (1<<TOIE0); TCNT0 = 131;...
Oj tam oj tam ;) mogę podrzucić szklaną kulę ;). Ale do rzeczy. Procesor Atmega 1284p. docelowo pewnie będzie inny. Rc5 na razie nie ma. Taktowanie 16MHz. Zrobbiłem w ten sposób: [syntax=vbnet]n=s MOD 2 if n=0 then printbin &h1b;38 print kropki; else printbin &h1b;38 print " "; end if[/syntax] Znalezione gdzieś na forum Elektrody. Niby działa ale nie...
Potrzebuję czterech PWM i dwóch wejść odmierzających długość impulsu o zakresie od 1 do 2 ms. Pytanie czy atmega 8 się wyrobi czy muszę brać 16 . I jak rozumiem z wszystkich postów muszę pwm zrobić programowo bo potrzebuję pozostałych timerów do pomiaru impulsów. I pytanie o oscylator wewnętrzny czy mogę go użyć czy lepiej kwarc bo zależy mi na wielkości...
Ile bitów wystawia atmega na adc? Czy potencjometrem chcesz ustawiać ilość kroków do wykonania? Jest to możliwe, kiedyś pisałem sterowanie ofsetem(Planeta 6 głowic po 32 silniki na głowicy), z potencjometru brałem od 0 do 1024 i wysyłałem odpowiednią ilość impulsów. Tak ja radzili - sterowanie timerem. Ja zrobiłem tak, że impulsy do drivera wysyłam...
Witam Kolegów. Mam mały problem. W zasadzie mój problem polega na tym, że działa coś co moim zdaniem nie powinno działać. Napisałem prosty kod na obsługę timera w ATmega 32. Prpgramik ma generować na 1-szym pinie PORTA sygnał o określonej częstotliwośći. Kod jest następujący: #include <avr/io.h> main() { DDRA=255; //ustawienie PORTA...
dziać timer timer dziać szybka timer atmega przerwa
kabel drzwi kierowca puszki światło zamontować światło zapchany ekspres
electrolux plyta indukcyjna electrolux plyta indukcyjna
Samochód gaźnikowy sam dodaje gazu po rozgrzaniu – przyczyny, diagnostyka, Weber, Pierburg