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...
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...
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; }...
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...
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...
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...
.... 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] '=======================================...
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,...
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,...
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.
Nie nie rób się kaczką albo sie prześpij ahahahahahaha :D OCIE1B zamieniasz na OCIE1A OCR1B zamieniasz na OCR1A zamieniasz wektor TIMER1_COMPB_vect na TIMER1_COMPA_vect kasujesz wszędzie to TCNT1=0 bo nie ma sensu Dla Timer0, w przerwaniu, pod linijką "dot ++ ; " dopisz TCNT0 = 6; To też można na palcach policzyć: 8MHz to jest na sekundę a sekunda ma...
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;...
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...
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ć):...
Przyznam się, że nie próbowałem pomijać reti skacząc do pętli głównej z ISR, ale już podmieniałem adres powrotu w projekcie minidds. Ale zakładam, że AVR ma to gdzieś i nie obchodzi go, czy ISR jest zapętlone, czy nie. Zresztą gdzieś w nocie pisało, że SEI w obsłudze przerwania może spowodować nadpisanie całego RAMu, jeżeli kod będzie wolny, więc raczej...
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...
(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.
ś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;...
Witam, dasej: Dzięki za pomoc, po wpisaniu Twojego programu 100% działa. Powinno być chyba zamiast TIMSK1 ---> TIMSK, z kalkulacji miało wyjść 1Hz i tak jest. Tylko że usiłuję to zrobić bez wykorzystywania przerwań i z dużo wyższymi częstotliwościami. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> ISR (TIMER1_COMPA_vect) { PORTD...
a więc przy takim kodzie: $regfile = "M32Def.dat" $crystal = 16000000 $hwstack = 256 $swstack = 128 $framesize = 128 '---------------------------------------... Dim Timer1_licznik As Byte Dim Buffer(256) As Byte At 256 Dim Write_position As Word Dim Read_position As Word Dim S As String * 36 Dim...
http://obrazki.elektroda.pl/9151953900_1... Założenia projektu: - obsługa wszystkich funkcji dostępnych z klawiszy sterujących magnetofonu, - wyświetlenie nazwy aktualnie wykonywanej funkcji na wyświetlaczu LCD, - wykorzystanie fabrycznego pilota zdalnego sterowania, - zasilanie układu z zasilacza magnetofonu, - możliwość podłączenia...
No i wszystko. Panowie, popełniłem błąd bo założyłem błędnie ten właśnie czas, nie wiem skąd mi się to w głowie pojawiło, przepraszam. Natomiast dzięki Waszym wyjaśnieniom i oscyloskopowi który służy mi nie od dziś, doszedłem do wszystkiego co aktualnie dla mnie istotne. Dziękuję za wyjaśnienia. Aktualnie z AtTiny85 wyciskam ile się da, i proszę mi...
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,...
Witam, Prosty program odbierający kod pilota sony i włączający urządzenie. Na ATMEGA32 przy wewnętrznym kwarcu 8000000hz działa (ZL3AVR). Po zmianie na Mega8 przy wewnętrznym kwarcu 8000000Hz nie działa. Mega8 jest na oddzielnej płytce testowej, zasilanie idzie z ZL3AVR, czujnik IR jest na ZL3AVR (IR IN) podłączone jest do PB1 mega8 Przekaźnik włącza...
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...
\ 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...
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...
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 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...
No dzięki za radę, bo na normalnym timerze jakoś ciężko było przechodzić w menu i mrugało też, taki timerek ustawiłem teraz: [syntax=c] TCCR1B |= (1<<WGM12); //włączenie trybu CTC TCCR1B|=(1<<CS10);//|(1<<CS1... //ustawienie preskalera na 1024 OCR1A = 0x1f40; //wartość do której zlicza licznik TIMSK|=(1<<OCIE1A); sei(); [/syntax]...
Robię pewien projekt a dokładnie stacje lutownicza na regulacji fazowej i enkoderze i regulator PID. Regulacje zrobiłem enkoder działa regulator PID też. Chciałem dodać też pomiar prądu, ale wpadłem też na pomysł zeby zrobić odliczanie czasu działania urządzenia. Dodałem ten kod programu, przerwanie co 1ms z atrybutem NO_BLOCK. W sumie teraz wykorzystuje...
Czemu nie działa jakieś błedy kompilatora, jak nie tak to może źle napisany kod i się przy większej optymalizacji wysypuje. Jak coś to wrzuć kod nie działający. Heh, no ok, wrzucam więc kod. Od razu jednak uprzedzam, że to jest mój pierwszy program w C i mogą występować rażące programistów błędy. Poza tym kod jest nieco rozlazły - dla mnie bardziej...
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 = ......... ..............
:) czyli dobrze myślałem. n to numer tego WGM (jakiś tam generator fali czy cuś) Jest to numer Timera ktorego konfiugurujesz. WGMn 3:0 - masz w sumie cztery bity do konfiguracji (3,2,1 i 0) Jezeli konfigurujesz Timer1 to te bity znajduja sie w rejestrach : bity: 3 i 2 - TCCR1B - jako bit 4 i 3 tego rejestru natomiast bity: 1 i 0 znajdziesz w: TCCR1A...
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ć...
https://obrazki.elektroda.pl/1909244200_... Dzięki mikrokontrolerom AVR, takim jak ATmega można zrealizować wiele ciekawych projektów. Autor poniższej konstrukcji postanowił wykorzystać te możliwości do skonstruowania prostego nadajnika AM (z modulacją amplitudy) wykorzystując Arduino Nano (możliwe jest także wykorzystanie Arduino...
W trybie CTC wartość timera jest zerowana, gdy TCNTx jest równe OCRxA. Nie pojawia się tutaj sprawdzenie w relacji większy/równy. Tak więc jeśli w danym momencie OCRxA jest równe 100, TCNTx 98 i w tym momencie zostanie wpisane do OCRxA wartość 96 to nie zostanie spełniony warunek dla TOP, timer będzie się zwiększał aż do 65535 (długa przerwa) kiedy...
Program działa, lecz chciałbym się od Was dowiedzieć, czy zastosowałem się do Waszych wszystkich porad. Jak dla mnie , to diodę podepnij pod Timer, to będzie normalnie, a <util/delay.h> powiedz dobranoc... ;) Ja zrobiłem to inaczej i też działa: Moja wersja: [syntax=c]dany_wysw--; dany_wysw&=0b00000011;[/syntax] ;)
Witam. Dopiero zaczynam programować uC AVR. Zaczynam od ATmega8L, ostatnio mam problem z przerwaniem zewnętrznym INT0, układ wchodzi w stan uśpienia ale nie można go wybudzić. W czasie normalnej pracy przerwanie działa i zmienia licznik. Ogólne prawidłowe działanie programu powinno być takie, że dioda zapala się 10 krotnie po czym uC wchodzi w stan...
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...
Przepraszam że nie potrafię tego wyjaśnić ale to nie ja pisałem ten program. Mam taki kod: http://obrazki.elektroda.pl/4548415200_1...
tryb CTC zerowany licznik jest po porównaniu z jakim rejestrem?? COMPA !! może i jestem laikiem, ale licznik w trybie CTC zerowany jest po zrownaniu z wartoscią zapisaną w rejestrze OCR. OCRA będąc dokładnym nie dowolnym OCR TCNT jaka ma wartość początkową? 0 TCNT używany jest do normalnej pracy licznika TCNT używane jest zawsze nie wiem skąd pomysł,...
Oto pełny schemat: http://obrazki.elektroda.pl/6640307900_1... No dobra, przeniosłem to do procedury przerwania: [syntax=cpp]//Nauka obsługi wyswietlaczy //Atmega8 12MHz #include <avr/io.h> #include <avr/interrupt.h> #include <stdint.h> #include <util/delay.h> #define wyswietlacz1 0x01 #define wyswietlacz2 0x02...
Witam. Już mnie krew zalewa. Nie potrafię sobie poradzić z problemem. Prawdopodobnie ktoś szybko znajdzie błąd, ale ja już nie mam siły do tego. Problemem jest wybudzenie mikrokontrolera z power_down przez przerwanie zewnętrzne INT1. INT0 działa bez problemu, natomiast nie potrafię zmusić do tej czynności INT1. Celem jest wybudzanie mikrokontrolera...
Witam Zrobiłem dwu kanałową płytkę do ściamniacza żarówek na 230V z wykorzystaniem triaka (oczywiśie dwóch, po jednym na kanał). Schemat znalazem na formu, wykorzystywany jest układ detekcji przejścia przez zero, triak jest sterowany przez MOC3021, itd. Układ detekcji przejścia przez zero jest podłączony do przerwania INT0, wyzwalanie triaktów do wyjść...
Kod z 1 posta z odrobiną poprawek w formatowaniu: [syntax=c]#include <avr/io.h> #include <avr/interrupt.h > #include <avr/pgmspace.h > #define LED1 (1<<PC0) // zwykła dioda LED #define LED2 (1<<PC1) // podświetlenie LCD #define LED1_ON PORTC &= ~LED1 #define LED1_OFF PORTC |= LED1 #define LED1_TOG PORTC ^= LED1 #define...
Witam, Korzystam z książki Tomasza Francuza i na swojej Atmedze32 próbuje skompilować kod, którym odczytam wypełnienie PWM sygnału. Podczas kompilacji dostaje błąd: Error1'GTCCR' undeclared (first use in this function) Error4'ICIE1' undeclared (first use in this function) Error3'PSRSYNC' undeclared (first use in this function) To jest ten kod: [syntax=c]#include...
Witam. W przerwaniu ustawiasz licznik timera0, a nie timera1 - dlatego nie działa. Jeżeli chodzi o działanie timera w tym trybie (normal) liczy on od wartości TCNT do 65536. W twoim przypadku więc przerwanie wywoła się po (65536-8190) 57346 cyklach timera. Po wywołaniu przerwania wartość TCNT ustawiana jest na 0, ale u Ciebie znów zmieniasz ją na 8190...
Witam. Napisałem taki program .............. W moim programie po kolei załączają się rożne tryby migania diody a ja chciałbym żeby wciskając raz switcha załączał się pierwszy tryb później po wciśnięciu załączał się drugi tryb i aż tak do czwartego trybu. Pozdrawiam, Masz prawdopdobnie zadanie zmieniać tryby migania (4 tryby) jednej diody z użyciem...
Witam. Koledzy trochę skomplikowałem sobie życie. Zaprojektowałem i wykonałem już płytkę i teraz widzę że mam problem. Otóż potrzebuję na wyjściu OC1A generować sygnał pwm ale TIMER1(16-bit) jest mi potrzebny do generowania przerwania co 1s. Jak więc za pomocą timera0 wywołać przerwanie co 1s? Przy taktowaniu processora 8 MHz nie ma możliwości generowania...
Taki bubel całkowicie krzyżuje mi plany Masz rację, zrobiłeś bubel ;) który na szczęście można naprawić na kilka sposobów, z których najprostszy to wywołanie sei() w funkcji obsługującej przerwanie. Dlaczego tak się dzieje - po prostu dlatego, że na początku obsługi przerwania samo z siebie wywołuje się cli(). Najczęściej unika się tak długo trwających...
Witam, napisałem bardzo prosty kod sterujący przez przerwanie wyświetlaczami LED i zwiększający o 1 zmienną z co sekundę [syntax=c] #include <avr/io.h> #define F_CPU 8000000 #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <inttypes.h> #include <util/delay.h> unsigned char z=0; unsigned char i=0; //zmienna...
Zmieniłem realizacje zegarka na timer1. I zegarek śpieszy się 10 sekund na dobę. Postanowiłem zrealizować zegarek na PCF8583. To wcale nie jest tak źle !!! -"10 sec. na dobę" to z grubsza masz błąd 0.01%, a w/g datasheet R-C oscylator może mieć odchykę nawet do 5%. Nigdzie nie ma wzmianki że stosujesz rezonator zewnętrzny (crystal). Ponadto, czas dla...
https://filmy.elektroda.pl/76_1717596522... dobra ty mi piszesz, żeby używać sprzętowego spi program napisałem: #include <avr/io.h> //dodanie głównej biblioteki #include <util/delay.h> //dodanie biblioteki opóźniej #include <avr/interrupt.h> #include <avr/sleep.h> #include <string.h> #include <stdlib.h> #include...
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...
Mam następujący problem: Gdy zmieniam w przerwaniu zawartość zmiennej (co najmniej dwubajtowej) z kwalifikatorem volatile program w loop odczytuje czasem "hybrydową" wartość w której część bajtów pochodzi ze starej, a część z nowej wartości. Podobnie bywa przy odczycie w przerwaniu zmian wprowadzanych w loop. Sądzę, że problem pojawia się gdy przerwanie...
Jeśli mam na płytce złącze ISP to po za programowaniem piny do niego podłączone mogą również służyć jako normalne wejścia/wyjścia tak? Z góry dzięki za odpowiedzi. Tak.
Config Pinb.3 = Output 'Config Timer0 = Pwm , Prescale = 1 , Compare Pwm = Clear Down Set Tccr0.pwm0 Set Tccr0.com00 Set Tccr0.com01 Set Tccr0.cs00 Ocr0 = 127 'T2 już normalnie ;) Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Down Ocr2 = 127
Nadajnik (xmega 128a3, TRYB = 1): [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdlib.h> #include <string.h> #include <avr/pgmspace.h> #include <stdbool.h> #include "SPI.h" #include "nRF24L01.h" #include "nRF24L01_memory_map.h" #include "twi_master_driver.h" #include...
Witam Próbuję zapoznać się z językiem C. Mam gotową płytkę z ATTiny2313. Chciałem na początek pomęczyć diodę LED. Jako, że Delay nie jest dobrym rozwiązaniem próbuję z Timerem0 [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> int main(void) { //######## konfiguracja timera ############## TCCR0B |= (1...
Przerwanie nie modyfikuje SP (z punktu widzenia przerwanego kodu). Wartość SP po powrocie z przerwania jest taka sama, jak przed wywołaniem. I tu właśnie problem, bo też tak myślałem, dlatego pisałem wcześniej że błędu w logice nie ma. Mój kod nie jest błędem. Dodałem brakujące CLI i kod od godziny chodzi bez zarzutów. Spójrz na to: zapamiętaj SREG...
Czyli końcowa wersja miała by wyglądać tak? : [syntax=csharp] /* OBROTOMIERZ v.1 Obrotomierz przeznaczony do prostych pomiarów prędkości obrotowej. Pokazuje: - czas jednego obrotu, - liczbę obrotów na sekundę (rps), - liczbę obrotów na minutę (rpm). Szczegóły: http://mikrokontrolery.blogspot.com/2011... Autor: Dondu Data: 2012.11.25...
Dzięki Szczywronek ;) Poprawiłem błędy, ustawiając wszędzie Timer jako 1. Przerwanie normalnie następuje, ale praca serwomechanizmów polega na wykonywaniu stałych ruchów od skrajnego prawo, do skrajnego lewo. Dzieje się tak dlatego, że wartość w tabeli dla każdego serwomechanizmu jest równy zero. Po podmianie kodu na: [syntax=c] ISR(TIMER1_OVF_vect)...
krotki opis proramu, po wykryciu przerwania pierwszy raz na INT0 uruchamia timer i odlicza czas do drugiego przerwania, po drugim przerwaniu i kolejnych na PA2 jest wystawiany impuls trwajacy 200us, impuls jest opoznany w stosunku do sygnalu wejsciowego w zaleznosci od okresu sygnalu. Problemem okazalo sie dodatkowe opoznienie wprowadzone przez obsluge...
Na to wskazuje także tablica wektorów z początku pliku hex: :10 0000 00 1EC0 37C0 36C0 35C0 34C0 33C0 32C0 31C0 66 Widać najpierw wektor resetu skaczący pod adres 0x3E (0x1E * 2 + 2) a potem ciągłe skoki pod ten sam adres (0x72 - np. 0x37 * 2 + 4, 0x36 * 2 + 6 itd) - normalnie jest to __bad_interrupt, skaczący na początek (do wektora resetu). Wektor...
Oczywiście proszę: disc_initialize(): [syntax=c] DSTATUS disk_initialize(BYTE drv /* Physical drive nmuber (0..) */) { DSTATUS stat; int result; (void) result; switch (drv) { case ATA: // result = ATA_disk_initialize(); stat = STA_NOINIT; // translate the result code here return stat; case MMC: stat = MMC_disk_initialize(); return stat; case USB: #if...
Witam Zbudowałem urządzenie do lutowania (podgrzewacz 3 strefowy + hotair). Regulacji temperatury dokonuję w układzie zamkniętym używając algorytmu PID. Niestety w tym przypadku mam do regulacji w zasadzie 4 różne obiekty. Są 3 grzałki podgrzewacza, które w przybliżeniu mają taki sam charakter obiektu + grzałka gorącego powietrza dla której regulator...
Witam. Tworzę mały projekcik i natrafiłem na pewną zagwózdkę. Na początku wprowadzenie co układ ma robić i jak działać. Układ składa się z części analogowej, tzn. dwóch detektorów tonu (LM567) odpowiedzialnych za detekcję "bitów" łącza fizycznego. Chodzi o to, że rozpoznają "swoją" częstotliwość i gdy stwierdzą zgodność z obwodem czasowym, na swoim...
Dzięki, szczerze powiem że nie przyszło mi to do głowy. Diody mam 3,3V. Niestety ale na diodach 3,6V jest to samo. Jakieś inne pomysły? http://obrazki.elektroda.pl/7658833200_1... Programator USB ISP działa bezproblemowo na tej płycie, a tez jest na wirtualnym USB. O co kaman? Znalazłem problem, problem stwarza biblioteka "IRremote.h"...
To już sam zauważyłem, tylko nie wiem za bardzo jak stworzyć osobne zdarzenie tak by działało przez cały czas, a nie tylko po wykonaniu określonej czynnosci. Timer Twoim przyjacielem jest. Liczne przykłady w necie. Pętli nie rób, to jest właśnie antywzorzec, program zajmuje 100% procesora (nawet sam-sobie nie zdąży okien odmalować) Ok użyłem timera,...
No przecież prosto. Konfigurujesz timer1 do pracy w normalnym ale nie robisz start timer. robisz przerwanie dzialajace na zbocze np. narastające-> Dalej : robisz zmienną flaga w przerwaniu robisz if flaga=1 then start timer1 flaga=0 else stop timer1 w rej od timera masz czas... kopiujesz gdzie Ci tam pasuje flaga=1 zerujesz licznik endif I tyle, oczywiście...
Witam, Przeczytaj dokładnie help dla komend RC5SEND i CONFIG RC5. Jak już pisałem, opornik MUSI byc podłączony do B.3 i dyskusja dlaczego nie ma sensu, spójrz w przykładowy program do wysyłanie kodu RC5 - plik SENDRC5.bas z katalogu C:\Program Files\MCS Electronics\BASCOM-AVR\SAMPLES\IR Istotna informacja wyboldowana: '---------------------------------------...
Ma ktoś jakiś przykładowy kod z" CreateProcesAsUser" dla delphi bo nie mogę go znalesc:/ Dodano po 2 Próbowałem przenieść kod z procesu na usługę systemową, niestety wystąpiło parę błędów o to kod: unit Unit1; interface uses Windows, Messages, SysUtils,Variants, Classes, Graphics, Controls, SvcMgr, Dialogs, ExtCtrls, Shellapi, IdBaseComponent, IdComponent,...
Dziekuje za wytlumaczenie. Rozjaśnia mi się już bo widzę przykłady. Nie wygląda abyś rozumiał w pełni koncept przerwań. Poprzedni mój post zawierał cały, gotowy, pracujący program dla dwóch czujników (z pełnymi objaśnieniami), oparty o timer1, skonfigurowany do pracy w trybie CTC. Jeżeli tamtego nie zrozumiałeś, to naturalnie i tu masz poważne problemy....
Wzór na czas pomiędzy przerwaniami na podstawie datasheeta uwzględnia jeszcze jedną małą rzecz - wartość 1. Po przekształceniu otrzymujemy: t = \frac{t \cdot F_{CPU}}{N} - 1 Przy założeniu że t = \frac{\pi 20}{3} Wartość do timera powinna wynosić 6143. Inna sprawa jest taka, że zacytyhę kolegę BoskiDialer: W trybie CTC wartość timera jest zerowana,...
Witam Chciałbym zaprezentować Wam kolejny projekt, który wykonałem kilka lat temu i generalnie wtedy miałem go przedstawić na elektrodzie ale jakoś czas uciekał a ja nie mogłem się do tego zabrać. No ale koniec wstępu, przechodzę do rzeczy. Prezentuję wam naświetlarkę UV służącą do wykonywania płytek PCB metodą fotochemiczną. Naświetlarka powstała z...
normal connect thomson normal phase normal
ekspres delonghi elektrozawór bufor wydruk schemat podłączyć hormann
spawarka transformatorowa spawarka transformatorowa
Pralka TCL błąd E10 – brak poboru wody lub awaria falownika, modele P6-DS, P8-DS Fiat Ducato AdBlue – czy OBDII code reader skasuje błąd kontrolki SCR?