Bo WGM12 jest w TCCR1B a nie w TCCR1A. W tym momencie Twój licznik pracuje w trybie Normal i liczy do 65536 i raz na taki cykl ustawia flagę od porównania czyli co 2,09 sekundy.
Stacja Pogodowa ESP8266 + wyświetlacz T6963 https://obrazki.elektroda.pl/7068126200_... Wcześniej stworzyłem stację pogodową przy której były użyte dwa mikrokontrolery Atmega328p (arduino nano) i ESP8266 (NodeMCU) z wyświetlaczem opartym na sterowniku T6963. Na forum https://obrazki.elektroda.pl/1280939000_... Zagadnienie...
Nie wiem czy chcesz się nauczyć czy potrzebujesz program. Na początek te uwagi: 1. Nie wiem co tam robi dyrektywa $eeprom. Jest niepotrzebna w tym kodzie 2. Zmienna Ds jest zwiększana w przerwaniu niezależnie od tego czy jesteś w Menu czy nie. Tak więc po powrocie z Menu już na pewno nie zdążysz załapać się na warunek If Ds = 2 i wyzerować jej wartość....
Tutorial do avr taki znalazłem: http://avr.elektroda.eu/?q=node/8 Jak byś czegoś w sieci szukał, to raczej unikaj tutoriala z patron.net, uczy złych nawyków i jest nieco nie na czasie. Pomiar częstotliwośći na AVR realizuje się w miarę łatwo, przy wykorzystaniu timerów, jeden timer pracuje jako licznik impulsów z zewnątrz, a drugi odmierza czas, mozna...
Co tutaj przekombinowałem? Atmega32. Tryb Licznika. Celem było zapalenie i gaszenie diod co sekundę. Preskaler = 256. Przerwanie tak wyliczone aby wykonywało się co sekundę. Timer 16bitowy [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> ISR (TIMER1_OVF_vect) { PORTC ^= ~0xFF; //zmiana stanu portu C...
https://obrazki.elektroda.pl/9593307400_... Stacja pogodowa na wyświetlaczu 240x128 ze sterownikiem T6963, Arduino Nano jako "sterownikiem" wyświetlacza i ESP8266 jako źródłem. Uzyskałem wyświetlacz z lekkim uszkodzeniem w postaci nieczynnych poziomych linii, wyeliminowałem te linie wykorzystując odpowiednie graficzne ułożenie (przerwy...
Stacja Pogodowa ESP8266 + wyświetlacz VFD https://obrazki.elektroda.pl/1002039200_... Zainspirowany stacją pogody kolegi vanaxis z tematu: https://obrazki.elektroda.pl/3997029100_... Jak nie może sie połączyć to wyświetla ekran poniżej i czeka: https://obrazki.elektroda.pl/4415212900_... Po zalogowaniu...
Po pierwsze to mega dziwnie ustawiasz ten oscyloskop, ale to detal. Po drugie, powiem szczerze, nie do końca rozumiem działanie trybu 15 TIMER1. W tym trybie licznik liczy do wartości ustawionej w OCR1A, ale kiedy następuje przełączenie wyjścia? Chyba już wiem w czym rzecz. Z noty: "Combined with the WGM13:2 bits found in the TCCR1B Register, these...
Znalazłem chwile. To tak mi się napisało: [syntax=c]void init_INT0(void) {INT0_RISING; INT0_ON; kontrol=0; } // Nadajnik to PT2262 sekwencja to 4 "słowa" na końcu których jest preambuła ISR(TIMER1_COMPA_vect) { TCNT1=0; TIMER1_POMIAR(t_alfa<<2); if( PIN(ODBIORNIK) & (1<<PIN_ODB) ) { ramkaRC|=(1<<0); ramkaRC=ramkaRC<<1; }...
Jak w czystym C (AVR GCC) wyglądała by funkcja millis() ?, a może pokaż też 2 podejście (listing), gdzie milisekundy to zmienna globalna np millis. Wykorzystaj timer do przerwać dostępny na każdym AVR. W AVR GCC, funkcja podobna do `millis()` z Arduino, która zwraca liczbę milisekund od startu programu, może być zaimplementowana z wykorzystaniem timera...
Rozumiem:) ale nie ustawiles bitu WGM12 ktory by ten tryb uruchomil, jezeli ustawisz tylko bit CS12 to licznik dziala w trybie normal
emarcus super wykład, dziękuję! Starałem się wytłumaczyć ale faktycznie powinienem napisać - dwa niesymetryczne impulsy masowe w okresie 103ms (jednak wciąż nie jestem pewien czy precyzyjnie). Urządzenie już zrobione, działa. Ale napotkałem problem, o którym wspomniałeś. Mianowicie zawartość Counter1 w momencie rozpoczęcia cyklu jest przypadkowa. Nie...
(at)dondu czytałem ten fragment pdf'a i próbowałem czytać "po jednym" i jako 16bit po sobie, same zera, poza tym w tej samej dokumentacji jest napisane że przy pisaniu w C kompilator ogarnia dostępy do tych rejestrów i też tak wynika z moich dotychczasowych doświadczeń. Poza tym szybka praca licznika wskazuje na to że nie jest to problem tylko z odczytem....
wiem , że tak można tylko nie wiem jak mam napisać ten kawałek kodu :-) Możesz to zrobic na wiele różnych sposobów zależnie od taktowania processora i od możliwości wolnego timera. Załóżmy że masz dostepny timer1 (metoda najprostsza i najłatwiejsza). F(takt) = 1 MHz Konfigurujesz Timer1 w trybie normal z prescalerem =256 ; co da pełny zakres max 16.7...
Chodzi mi oto że licznik aktualnie pracuje w trybie NORMAL a nie CopareMatch. Brak porównania z rejestrem OCR1B przeszukałem całą notę katalogową i nie znalazłem jak uruchomić ten licznik w tym trybie.
Ja założyłem że będzie chciał skorzystać z timera 8-bitowego, a tam te wartości są chyba najpoprawniejsze. Dla timera 16-bitowego rzeczywiście lepiej jest ustawić presc na 8 i naliczyć 10000 cykli. Pozdro To nie zupenie jest tak jak piszesz. W Mega8 timer0 nie ma możliwości ustawienia trybu CTC. Ponadto prescaler 8 jest "bezpieczny " w sensie dokladności...
//--------------------------------------... // Using: // * 32x16-LED DMD // * Arduino //--------------------------------------... #define LIN_OUT 1 #define FHT_N 128 // set to 256 point fht 128 #include <FHT.h> // include the library #include <SPI.h> #include...
2. Timer0 w M8 w przeciwieństwie do M32 nie ma możliwości pracy w trybie CTC. Chcesz CTC to przenieś obsługę na T1 lub T2. Ewentualnie T0, ale w trybie normal z cyklicznym przeładowaniem wartości w rejestrze licznika. Czy tu chodzi, aby ustawić bit WGM w tryb normalny i CTC więc: TCCR0 |= (1<<WGM00);. Czy dobrze myślę? Niby ustawiłem bit WGM...
Potrzebuje zmierzyć częstotliwość w zakresie do 200kHz(w tym przypadku 3,2MHz) procek: to ATmega8 Kombinuje jak koń pod górę, na czym polega mój błąd ? Timer 2 odmierza czas 1s. Timer 1 w założeniu ma zliczać impulsy z zewnatrz. (wartość 0xFF w OCR1A,-impulsy dochodzą z T1,-po zrównaniu TCNT1H/L zerują się-i cykl się powtarza.) Oróż Timer2 wchodzi w...
.... wcześniejsze ręczne ustawienie OC1A (czy tez PD5) na stan wysoki nie pomaga i tak jest resetowane przy inicjalizacji licznika) Bo to chyba wynika z tego: If one or both of the COM1A1:0 bits are written to one, the OC1A output overrides the normal port functionality of the I/O pin it is connected to . If one or both of the COM1B1:0 bit are written...
Siema. Otóż mam taki problem, podczas gdy kod ładowania i zerowania data DACx działa, np DACB1 = 0 waitus 500 DACB1 = 4095 (full zakresu) waitus 500 daje jakieś 2Khz pisku w słuchawkach co jest oznaką działania , to gdy ładuję próbki muzyki wav z karty na zasadzie DACxx = pwm nic się nie dzieje. Tu całt kod xmega: [syntax=basic4gl] '=======================================...
Całkowity standard, czyli kopiując z noty: 1.Normal port operation, OC1A/OC1B disconnected. 2. Timer/Counter Mode of Operation: Normal 3. clkI/O/1024 (From prescaler) To chyba wszystko, on ma po prostu liczyć sobie w górę a w pęli jest porownywanie [najprymitywniejsze rozwiązanie z pominięcem rozwiązań gotowych w timer1 i o takie rozwiązanie mi chodzi,...
Przepraszam za dłuższą nieobecność. Nie mając nic nowego (i mądrego) nie pisałem. Ale w międzyczasie polutowałem zestaw startowy, a ostatnio napisałem inny program, który umożliwia (w zamyśle) liczenie dokładniej częstotliwości dla "paczki" impulsów, tym razem około 500 Hz. Wiem, że to dosyć skomplikowany tok myślenia, pewnie można to zrobić prościej,...
Problem z zliczaniem impulsów rozwiązany ale mam nowy problem z wyświetlaniem wyniku zdjęcia w załączniku. Pierwsza rzecz co rzuca sie w oczy to brak konfiguracji LCD; Niby to pracuje mając config ustawiony w 'Options/Compiler/LCD, ale przeniesiesz listing na inny computer i tu już nie musi być to samo. Dalej, Timer1 odliczający 1 sec. może pracować...
Hej, Niezależny eksperyment wykonany a wyniki... zgodne z dokumentacją. Z resztą po co eksperymentować skoro jest dokumentacja producenta. OK. Ale... warunki: Timer1 -> tryb CTC (12), preskaler=8 (1.25MHz (at) f=10MHz), uruchomione wejście ICP z redukcją zakłóceń, capture przy zboczu rosnącym - dla dociekliwych ustawione bity: Icnc1 , Ices1 , Wgm13...
Recently I started to work with mTouch CSM module. It sounded like extremely interesting and high performance hardware to work with. It sounded right! :) there are countless applications for use of this hardware. Touch pad, proximity sensors, readout of capacitive sensors,extreme precision capacitance measurement, ultra small capacitance change detection,...
Dziękuję wam za wszystkie odpowiedzi wiele mi to pomogło jednak ciągle mam problem. Jest lepiej bo coś tam już widać ale jeszcze nie jest ok. Zaznaczam na początku że nie mam należytego sprzętu aby zrobić to jak należy jednak zanim zainwestuję w mikrokontroler taktowany 25 Mhz chcę mieć już jakiś wstęp na sprzęcie który posiadam a posiadam Atmegę16...
Witam Na wstępie się przywitam - na imię mam Piotr, jestem sobą początkującą w kwestii programowanie mikrokontrolerów AVR - przez ostatni rok "bawiłem" się w różne układy na m32 - pisząc soft w bascomie. Przesiadłem się kilka dni temu na procesor m1280 - i tu mam kilka problemów, których źródła nie potrafię zdiagnozować. Przede wszystkim - po wgraniu...
Czegoś tu nie rozumiem. Razem z FatFS można ściągnąć gotowy, działający przykład na LPC17xx, ze wszystkimi potrzebnymi funkcjami obsługi SPI i dostępu do karty. Dlaczego go nie użyjesz, tylko próbujesz szyć coś z jakichś dziwnych łatek? Jeśli chodzi o SPI, to LPC11xx jest bardzo podobny do LPC17xx. Próbowałem z niego korzystać, a konkretnie pracowałem...
Pierwsza część programu Dodano po 8 no i druga się nie mieści, więc wrzuciłem do pliku tekstowego.
No tak, nie podałem że po main() jest definicja. To teraz dalej całość: [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> volatile uint8_t pwm0=56; volatile uint8_t pwm1=108; volatile uint8_t pwm2=60; volatile uint8_t pwm3=70; volatile uint8_t pwm4=80; volatile uint8_t pwm5=85; volatile uint8_t pwm6=90;...
Czyli: jeżeli mam ustawioną reakcje na zbocze narastające, TIMER1 w trybie normal, i preskaler ustawiony na 1, to licznik TCNT1 cały czas się zwiększa, w momencie wystąpienia zbocza narastającego na ICP1 rartoś jaka była w liczniku jest przepisywana do ICR1 którą przypisuję do zmiennej. W momencie wystąpienia kolejnego zbocza narastającego wartość...
Pierwsze przerwanie wywołuje sie po bardzo długim czasie, bo za pierwszym razem Timer musi doliczyć od 0 do 65535. Dopiero za drugim razem by zliczał od 63000 do 65535, ale też nie zliczy, bo w niewłaściwej kolejności zapisujesz dane do tcnt1. Odpowiedni czas będzie odmierzany dopiero od trzeciego przerwania. Powinno być: out tcnt1h,r17 out tcnt1l,r16...
Witam, niestety ale chyba coś jest nie tak? Na wstępie należałoby wyjaśnić że nie ma czegoś takiego jak "automatyczne przeładowanie timera" (reload/load timer1 powiedzmy). Termin ten jest związany z procedurą konfiguracji timerów występującą tylko w trybie "Normal", gdzie każdorazowo początkowa wartość timera musi być wpisana przez processor. Taka...
Potrzebuję pomocy przy zamianie kodu "RFID Reader", tzn. żeby zamiast wyświetlania kodu karty na LCD uzyskiwać odpowiedni poziom na wyjściu 1z10 i czy jest to możliwe do zrealizowania na atmega8? Chciałbym użyć 8 ostatnich cyfr kodu karty. Posłużyłem się gotowcem, który był już na elektrodzie (dopiero uczę się bascoma i nie wiem jak się do tego zabrać):...
Witam. Nie mogę dobrać parametrów timera tak by osiągnąć zadaną częstotliwość. Potrzebuje teraz osiągnąć by timer1 się przepełniał 10 razy na sekundę czyli co 100ms. ] Do tej procedury nie musisz wcale zmieniac fusebitów. Możesz w zupełności pracowac z f-taktowania 1MHz wykorzystując wewnętrzny, wbudowany oscylator RC z fabrycznym ustawieniem. Mega8...
Jak byś był tak uprzejmy podesłać kod to byłbym bardzo wdzięczny Proszę bardzo, kod lda M88 8MHz Dodano po 2 Nie twierdzę, że są super. Prostuję jedynie wprowadzanie w błąd. Może konkretny przykład a nię że jest inaczej niz pisałem? <ciach> Post raportowany. Uprzedzam kolegę, że jeśli w kolejnych wypowiedziach lub tematach po raz n-ty kolega...
(i nie piszcie mi o początkowym ustawieniu TCNT bo to jest wtedy niedokładne i było używane w średniowieczu). Nie opowiadaj bzdur. Jeżeli jest niedokładne, to zreferuj na ile jest to niedokładne i czym ta niedokładność jest powodowana. Czy w którejś metodzie/trybie pracy gubi się impulsy albo zabiera więcej czasu na ich zliczenie? A z tym 'średniowieczem'...
Nie wiedziałem ze muszę podawać wartość OCR1A w przerwaniu... Bo nie musisz. Piotrusiowi coś się pomieszało. Pewnie z trybem Normal, gdzie w przerwaniu podaje się wartość startową TCNT1.
Witam, próbuję zrobić pomiar czasu między kolejnymi przerwaniami na wejćiu INT0, ten czas ma być później wykorzystany do ustawienia ocr dla timera w trybie CTC. Miało to wyglądać tak: Uruchamiam timer, gdy na isr(int0_vect) pojawia się impuls ustawiam sobie flage na 1, w funkcji liczącej czas gdy pojawia się flaga przypisuję wartość timera do zmiennej,...
Widzę, że można w trybie normal ustawić OCR1A tak żeby po osiągnięciu tej wartości timer się resetował i liczył od nowa. Jest jeszcze coś o rejestrze ICR1. Czy można zrobić tak, żeby jeden z tych rejestrów resetował timer po doliczeniu do jego wartości, a drugi jedynie wywoływał przerwanie gdy timer osiągnie jego wartość? Tak. Ten tryb pracy nazywa...
Mam dziwny problem z timerem T1 w procesorze Atmega644P. Procesor taktowany kwarcem 18432000Hz. Timer zainicjowałem jak widać w kodzie poniżej: [syntax=c]ISR(TIMER1_COMPA_vect) { PORTB ^= 1<<2; //LED } int main(void) { PORTB = 0; DDRB = 1<<2; OCR1A = 4499; //18000/4500=4 = przerwanie co 0.25s OCR1B = 0; TCCR1A = 0; //18432000/1024=18000...
\ 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...
świetlówkę fazowo...nie obrażaj mnie? No bez przesady A dlaczego nie? Są świetlówki, ledy które mogą pracować ze ściemniaczem. Dodano po 4 Działający kod sterowania fazowego: [syntax=c] //======================================... void InitTimer1() { //TCCR1A = //TCCR1B = 5; // NORMAL (mode0), Preskaler 1024 TCCR1B = 4;...
Szkoda czasu na przeładowanie Timera jeśli może on pracować w trybie CTC. Ustawiasz raz i zapominasz. Nie zupełnie tak jest!!! Ile tego czasu zaoszczędzisz? (4 cykle... ?) Owszem, w trybie 'Normal' przeładownie timera musisz robic w przerwaniu ovf; tu nie stosujesz OVF, ale sam fakt konieczności stosowania przerwania (Comparex) zmusza cię do jego pełnej...
Witam Chciałem napisać dla siebie własną bibliotekę obsługującą jednokolorowy wyświetlacz 128x64 ze sterownikiem NT7538H i po około 20 godzinach pracy zwątpiłem i postanowiłem poprosić o pomoc. [url=http://www.displayfuture.com/Displa... Oto datasheet do tego kontrolera. Może zanim wrzucę schemat połączeń i kod...
Witam Jako że niestety spaliła mi się karta teleVGA postanowiłem wy myśleć inne rozwiązanie na obsługę TV lub monitora. Na elektrodzie było sporo tematów jak podłączyć telewizor bądź monitor pod mikroprocesor. Jedne z wykorzystaniem karty graficznej od PC ale niestety nikomu się chyba nie udało Ja znalazłem taki właśnie projekt na atmega 168 niestety...
Znaczy się chciałem dać Load Timer1 = 58594, wtedy chyba działałoby to przepełnienie o którym mówię? Do przycisków daje Debounce, więc myślę, że starczy Nie, to nie wystarczy. Jednym z głównych błędow jaki większość popełnia to zaczynanie projektu od doraźnego, szablonowego wypełniania formuły; $regfile = .......... $crystal = ......... ..............
LUT to tylko taka górnolotna nazwa (LookUp Table). To poprostu tablica z wartościami. Często to się stosuje do przyspieszania obliczeń różnych funkcji , np Sinusa. Normalne jego policzenie trochę trwa, a wyciągnięcie konkretnej wartości z tablicy nie trwa prawie nic :) Ponieważ za dużo RAMu nie wykorzystujesz, to wartości początkowe pinów możesz wrzucić...
Niestety ale opcja wait nie nadaje sie do moich celów gdyż wtedy nie widzę co się dzieje z temperaturami, ciśnieniem układu. Wszystkie pomiary stoją. Cóż będę musiał poszukać podobnych programów i coś może wykombinuje. Dzięki za odpowiedzi! Bedziesz wie musial uzyc jeden z wolnych timerow. Ponizej masz przyklad zastosowanie timera 1 w trybie CTC. (z...
phase normal normal connect thomson normal
lm358 prądu pomiar stabilizator napiąć prostownik sterownik internetowy
vestel 17mb82s pralka samsung zawiesza
Sokkia GRX1 GNSS Receiver Diagram Inquiry Burczenie w pralce Samsung - możliwe przyczyny i rozwiązania