Czy: Kod C - Tak, chyba że wymusisz update "ręcznie". 4\/3!!
(at)minitronik Najprostszy procesor - podajesz na wejście timera te impulsy, programujesz timer tak, że po zliczneiu do 56 generuje przerwanie zmieniające stan wyjścia na niski - do tego służy rejestr compare w timerach. Drugi taki rejestr programujesz na 4 i przerwanie z tego zdarzenia compare wystawia stan wysoki. Ot i cały program. W sumie na dyskretnych...
Zostaw tam hc595 i dobuduj stopnie tranzystorowe. Czemu upieracie się przy dodatkowych rejestrach? Arduino ma wystarczającą ilość GPIO aby nie stosować dodatkowych rejestrów. Aby dobrze zrobić multipleksowanie z rejestrami timer musi inicjować transmisję spi, która oczywiście działa na przerwaniach. To ma zrobić początkujący? Tego to często nie potrafią...
Masz dwie metody: 1) Łatwiejsza - Ustawiasz Clock mode, timer na zero, timer alarm, timer na odliczanie minut, wpisujesz do rejestru alarmu timera 15, czekasz na przerwanie. Po przerwaniu zerujesz rejestr alarmu, zerujesz flagę alarmu i zerujesz timer. Control status register (0x00) = 0000 X1XX Timer register (0x07) = 0 Alarm control register (0x08)...
Wygląda, że masz podobny problem jaki ja miałem niedawno na procesorze STM32F030R8... Sytuacja u mnie wyglądała tak: Taktowanie APB 48MHz, TIM1->PSC = 480. Co daje takt 10uS. Timer konfigurowany "po rejestrach". Zliczam impulsy timerem i czekam aż się timer przepełni: TIM1->ARR = 150 (zgłoszenie przepełnienia co 150*10uS=1.5mS) Okazuje się, że timer...
https://obrazki.elektroda.pl/2917699100_... . Tutaj przedstawię moje odkrycia z nowym urządzeniem Tuya opartym na MCU Beken BK7238, zapakowanym jako moduł Tuya T1-U-HL. Więcej ogólnych informacji dotyczących serii T1 i zastosowań BK7238 można znaleźć na stronie: https://obrazki.elektroda.pl/6505919300_... . https://obrazki.elektroda.pl/7212942700_...
Jeśli masz detekcję otwarcia/zamknięcia migawki to nie ma najmniejszego problemu z pomiarem. Nawet ATMega8 ma timer z możliwością pomiaru czasu - tryb capture. Podajesz sygnał na wjście timera i potem odczytujesz rejestr zawierający timestamp zdarzenia. Parę linii kodu. Ale jak wykryć otwarcie/zamknięcie migawki? Laserek i mierzenie odbicia od migawki?
Zanegować wyjście komparatora możesz odwracając sygnały podane na wejście + i - komparatora - czyli przekonfigurować musisz rejestr multipleksera wejść AC. RESTART powoduje rozpoczęcie zliczania timera od zera, nie zmienia zawartości rejestrów PER i innych - tym różni się od resetu, który zeruje timer i przywraca jego konfigurację do stanu domyślnego....
\ 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...
1. (PC) Wyślij ramkę z rozkazem z do odpowiedniego uP. 2. (uP) Zeruj rejestr PER timera za każdym odebranym bajtem. 3. (uP) Po odebraniu ostatniego bajtu - czyli po przerwaniu od przepełnienia timer'a, który ustawiłem na 50ms - analizuj odebraną ramkę. 4. (uP) Jeśli ramka jest poprawna to postaw flagę zezwalającą na wysyłkę danych do PC. Przyznam że...
Witam! Dostałem program w którym próbuje zrozumieć zasadę ustawiania czasu w Timer -ach. W instrukcji pisze :"Jeżeli PV jest rejestrem, to czas timera = podstawa czasu razy wartość w rejestrze. W takiej sytuacji użytkownik, aby zmienić czas timera, musi jedynie zmienić wartość w rejestrze." Jak zobaczyć jakie wartości wpisane są w te rejestry? Dziękuje...
symulator bascoma jest bardzo dokładny i liczy co do taktu. jeżeli program opiera sie na przerwaniach timera to należy włączyć okienko "Slim Timers" , wtedy symulacja trwa trochę dłużej ale bierze pod uwagę przerwania timera. co do compare1a to jest to rejestr poruwnawczy timera1. co takt zegara jest on poruwnywany z zawartościa timera (czyli licznika)...
Jeśli dalej używasz choćby jednej zmiennej typu Bit to nadal pomysł jest aktualny bo bitów zawsze jest osiem. Jeśli nie, to mozna wygospodarować jedną zmienną typu Byte, ale że Tiny13 to bardzo wymagający uC i mozesz już nie mieć więcej miejsca na Byte to możesz pojechac po bandzie i do przechowywania wartości wykorzystać jakiś nieużywany rejestr :D...
Tutaj przyjrzę się czujnikowi kontaktowemu LoraTap/Tuya MC100W do monitorowania otwarcia/zamknięcia drzwi/bramy/okna. Zakup w Ali Express https://www.aliexpress.com/item/10050072... https://obrazki.elektroda.pl/8345087100_... https://www.loratap.com/products/mc100w Pudełko, części, elementy wewnętrzne urządzenia: https://obrazki.elektroda.pl/8141601100_...
Witam !!! 3. Co to są banki rejestrów jak je zmieniać. - w 8051 sa cztery banki rejestrow (po 8 rejestrow w kazdym banku) zmienia sie je (banki) poprzez odpowiednie ustawienie bitow RS1 i RS0 rejestru statusowego PSW. Bank rejestrow najprosciej mowiac to zbior wlasnie 8 rejestrow w ktorych mozemy przechowywac argumenty (dane ) dla wykonywanych instrukcji...
Programuję w ASM ale tylko Atmega8/16 więc wklejam ci taki przykład: [syntax=asm] .CSEG .org 0x0000 //poczatek deklaracji skokow dla przerwan rjmp _poczatek reti reti reti reti reti reti reti reti rjmp _150_timer0 //przerwanie overflow timer0 reti reti reti reti reti reti reti reti reti _poczatek: in r16, TIMSK//timer0 overflow interrupt enable ori...
Problem z timerem jest taki, że Match0 jest przyporządkowany do pinu Tx.0, Match1 do pinu Tx.1 itd., więc za jeden pin odpowiada tylko jeden rejestr porównania i jeden typ "akcji". Do generowania PWM w LPC zwykle jest jeden specjalny timer oznaczony PWM. Jeszcze jedną alternatywną metodą byłoby ustawienie Match na 50% okresu timera i w przerwaniu przestawianie...
Dlaczego przy wypełnieniu 100 % stoi, a przy 0 % coś tam się dzieje ? Co oznacza PWM o wypełnieniu 100%? To już nie są impulsy, to jest napięcie stałe. Dlatego zmieniłem preskaler na 1024 i teraz mam częstotliwość 488 Hz oraz okres 2 Nadal nie rozumiesz. Potrzebujesz częstotliwości ok. 50Hz, a nie 488Hz. Proponuję to zrobić w osobnym projekcie na timerze...
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...
Zapytaj profesora (ma tytuł profesora?) po co ta wiedza? 8253 ciężko już kupić (bi i po co, chyba, że ktoś chce składać PC XT), 8051 jest coraz mniejszy wybór. Biorą pod uwagę czas nauki i zmiany na rynku elektroniki, w szkole powinni uczyć o najnowszych uC a nie tego, czego za 5 lat nie będzie na rynku. Każdy współczeny uC zawiera bardziej zaawansowane...
czas co jaki zostanie zdeklementowany rejestr R0 banku 1 jest określony przez szybkość wykorzystanego kwarcu i ilości cykli wykonywanych przez timer, możesz na przykład uruchomić timer mają w nim zapisaną już jakąś wartość, symulatory nie oddają rzeczywistego czasu pracy mikrokontrolera, musisz dopasować wartość rozpoczęcia pracy timera eksperymentalnie
Jak już Kolega nabierze wprawy z przerwaniami i timerami to można osiągnąć zamierzony cel w następujący sposób: Dajemy sygnał (którego długość trwania chcemy mierzyć) na wejście INT0 oraz INT1 jednocześnie, przy czym pierwsze ustawiamy na zbocze rosnące a drugie na spadające, w przerwaniu INT0 startujemy timer1 a w przerwaniu INT1 zatrzymujemy go,...
To nie Bascom jest przyczyną tylko źle napisany program ;). 1. odczyt timera1 16bit odbywa się po przez rejestr pomocniczy TEMP, ten rejestr jest też używany przez inne procedury i funkcje i jeśli jest użyty to właśnie niszczona jest wartość High timer1 bo ona tam jest wpisana gdy używasz komendy. wpisując tak timer1 do tablicy możesz gubić High timer1....
Xmega serii A i AU mają 3 enkodery na pokładzie, można je użyć jednocześnie - praktycznie, z tym że każdy enkoder wymaga osobnego timera (nieistotne jest czy typu TC0 czy TC1 itd). Co do programu, timer musi być odpowiednio skonfigurowany i włączony. Dlaczego konfigurujesz jedynie rejestr TC0.CTRLD? W konfiguracji portów dodaj: "| PORT_OPC_PULLUP_gc"...
Kupa błędów, trudno, żeby działało. Nie wiem, czy wszystkie wyliczę: 1. W komentarzach jest TIM1 ch1, TIM1 ch2, TIM1 ch3, ale kody pod tymi komentarzami są identyczne (tylko rejestr CCRx jest zmieniony) - niby czym się różni inicjowanie dla poszczególnych kanałów? 1a. Rejestry PSC i ARR są określone dla timera (wspólne dla wszystkich kanałów), więc...
LPC176x (czyli wersja 100-nóżkowa) posiada 4 timery, każdy z nich posiada po dwa wejścia: CAP0 i CAP1. Daje to max 8 wejść, czyli może się udać. Pokrótce wejścia CAP pozwalają zapisać aktualny stan timera (rejestr TC) w rejestrze CR0/CR1 w momencie zmiany stanu na takim wejściu. Pomiar szerokości impulsu PWM jest tym samym tak dokładny, jak często tyka...
Zauwaz, ze w trybie JTAG komputer nie ma jak dostac informacji o ilosci wykonanych instrukcji, procesor wykonuje je niezaleznie od komputera, inaczej niz w trybie emulacji, kiedy to komputer emuluje AVRa, wiec wie ile wykonal instrukcji. Program Counter to rejestr PC wskazujacy na kolejna instrukcje do wykonania, wiec ci nie pomoze. Pomysl z timerami...
W AVR bym po prostu na czas "składania" zmiennej m w funkcji read_us wyłączył globalnie przerwania - cli() i po zapisaniu wartości do zmiennej m włączył - sei(). Czy tutaj trzeba wykonać podobną operację? Ale to Ci nic nie da, bo przecież timer chodzi nadal (; Oraz czy mógłbyś Freddie opisać jeden ze sposobów jak uzyskać "sparowany" odczyt. Zrób to...
Co do TIM3->SR &=~TIM_SR_UIF; przyznam, że dalej nie rozumiem jaka jest różnica w obydwu przypadkach kasuje tylko JEDEN bit nie CAŁY rejestr. W jednym przypadku zeruje jeden bit, w drugim przypadku zmieniam jego stan na przeciwny. Operacja logiczna na którą się tak uparłeś i zamierzasz bronić do ostatniej kropli krwi generalnie ma same wady i zero...
Dokładnie, skorzystanie z timera ułatwia sprawę - nie trzeba liczyć instrukcji procesora. Poniżej mała wskazówka z komentarzami (może nie jest to podręcznikowe cudo, ale najprostsze i najczytelniejsze zrealizowanie migacza na procesor attiny10 w ASM). [syntax=asm] /* * Created: 2012-07-12 10:32:21 * Author: Piotr */ ;dołączenie definicji procesora .include...
No to jest to czego szukałem. Tylko teraz pytanie: Dlaczego zawartość rejestru R0 to zawiera,a nie można odczytać z MCUCSR jak jest opisane w DSie?? edit Aaa już wiem gdzie robiłem błąd. Można odczytać WDRF moim sposobem tylko przed Config Watchdog, bo ta instrukcja czyści rejestr MCU(C)SR. Wszystko pięknie jest wyjaśnione w Helpie od wersji 2.0.1.0...
Hej, Przyznam że nie mogę do końca zrozumieć metody podanej w linku. ................. (1)Trzeba by zmienić częstotliwość taktowania. (2)wzory na policzenie częstotliwości są w rozdziałach modes of operation poszczególnych timerów. ________________________________________ Ad1. Nie trzeba -wyjaśnienie niżej... (poza tym, jak w Arduino chcesz zmienic...
.org 0x0000 ; ustawia adres w pamięci programu rjmp reset ; skocz do etykiety ... ; wektor przerwania timer 1 .org 0x0005 rjmp led_off ; skocz do obsługi przerwania ; w tym przykładzie początek programu głównego reset: ; Jako pierwsze ustawienia stosu (w asemblerze jest to ; bardzo ważna operacja i programista nie może o tym zapomnieć)....
No bo na tym chyba polega idea PWM że nie liczy cały czas ode zera tylko do przodu i do tyłu. Jak chcesz otrzymać taki efekt to uruchamiasz w normalnmym trybie Timer i ładujesz do niego jakąś wartośc i zaznaczasz żeby odwracało Ci stan pinu przy przepełnieniu :P I do tego nie potzrebujesz PWM, a pwm liczy od dołu do góry i spowrotem :P Oczywiście mogę...
2 zmiennych dokładnie w tym samym czasie ( A nie prościej wyłaczyć przerwania na te 4 takty zegara. Zamiast systicka zastosuj inny timer np 32 bitowy. Wtedy przepełnienie będzie następować przy 72MHz co ok 60 sekund. Powinno wystarczyć. Masz tez specjalny rejestr co liczy cykle zegara przy wykonaniu programu (proponuję zapoznać się z DWT). Dlatego...
Przerwania procesora działają w procesorach AVR na takiej zasadzie, że (pomijając inne operacje) po wystąpieniu danego przerwania ( podczas obsługi przez procesor ) następuje zapamiętanie rozkazu następnego, który byłby wykonany, gdyby procesor nie przyjął przerwania (jego adresu w pamięci flash) i skok pod jeden z adresów z samego początku pamięci...
Generalnie w takich przypadkach nota układu twoim przyjacielem. Poczytaj to co napisałem w komentarzach. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> int main(void) { uint8_t i = 0; DDRD = 0xff; //TCCR2A |= (1<<WGM21)|(1<<WGM22); // źle ten tryb jest zarezerwowany TCCR2A |= (1<<WGM21) // CTC //TCCR2A |= (1<<CS20)|(1<<CS21)|(1<&l...
Mam za zadanie napisania programu który będzie sterował serwomechanizmem metodą PWM. Odpowiedniemu położeniu serwomechanizmu odpowiada sygnał o konkretnym wypełnieniu. Oto mój pierwszy program "testowy" za pomocą którego chcę po prostu ruszyć tym silniczkiem. Prescaler + Timer + rejestr compare TOP + rejestr compare Toggle + bufor na niego. Z takich...
heh, dziwne ze w ogole ci zadzialalo z takimi ustawieniami... 1. wylacz wszystkie code i write protection 2. primary oscilator source zgodnie z logika powinien byc ustawiony na FRC, a nie na External Clock. 3. jesli nie zamierzasz zmieniac zegarka (np PLLa ustawiac), to mozesz wylaczyc Clock Switching (Sw) i Clock Monitor (Mon). 4. POR Timer daj na...
dobra, obiecany gotowiec i przy okazji manual pt "jak korzystać z manuala". W naszej przeglądarce wpisujemy adres www.google.pl Wpisujemy tam Atmega8, po załadowaniu się strony z rezultatami klikamy w link posiadający w tytule "datasheet" i sprawdzamy czy jest on z atmela. Po pomyślnym otwarciu się datasheetu z indeksu po lewej stronie wybieramy 16-bit...
Jaki konkretnie procesor? ATMEL to dość ogólnie napisane :) Wysłanie sekwencji 0 na port B? Co to znaczy? Czy przy starcie wartość wysyłąna na port B to ff i co jakiś czas jest dekrementowana aż do wartości 0? Klawisze podłączone są do jakiego portu? D? Całego programu ci nie napiszę ale coś spróbuje pomóc. Dodano po 7 Treść zadania ;Silnik krokowy...
Witam Pierwsze linie kodu to deklaracja ustawień liczników T0 i T1. Konfiguracja dla ułatwienia została rozpisana na poszczególne bity, dlatego póżniej trzeba je przemnożyć x4 i x8 aby bity były na swoich miejscach. Dla licznika T0: CT0 EQU 0 M0 EQU 1 G0 EQU 0 T0S EQU M0 + 4*CT0 + 8*G0 oraz dla licznka T1: CT1 EQU 0 M1 EQU 0 G1 EQU 0 T1S EQU M1 + 4*CT1...
- z różnych schematów blokowych pamięci EEPROM SPI: 1.) I/O SHIFT REGISTER - rejestr przesuwający we/wy 2.) Adress Decoder - dekoder adresów 3.) Mode Decode Logic - logika (układy logiczne) dekodowania trybu (pracy) 4.) Timing Logic - układy taktowania. generator przebiegów taktujących - z róznych schematów blokowych przetworników A/C na interfejs SPI:...
Musisz zastosować sterowanie multipleksowe albo jakiś długi rejestr przesuwny (np. 4 układy 4094) żeby obsłużyć 4 cyfry wyświetlacza. To może być coś takiego: $regfile = "attiny26.dat" $crystal = 8000000 Config Portb = Output Config Portd = Output Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim V as Word Dim V_real as Single...
https://obrazki.elektroda.pl/4868547700_... Dzisiaj zrealizuję projekt na malutkim, ośmionóżkowym mikrokontrolerze PIC w obudowie DIP8 oferującym skromne 3.5kB pamięci Flash. Co więcej, do komunikacjami z peryferiami użyję tylko dwóch pinów - całość opierać się będzie o I2C. W oparciu o nie uruchomię kontroler wyświetlacza/klawiatury oraz...
https://obrazki.elektroda.pl/7186671300_... Od kilku lat programuję 8-bitowe mikrokontrolery AVR i przez ten czas zdobyłem trochę wiedzy na ich temat. Poniżej znajduje się kilka ciekawostek o tych układach. Jeśli znacie jakieś inne interesujące informacje, to piszcie. Najnowsza wersja artykułu jest również dostępna na mojej stronie:...
Bym się rozpisał na ten temat, ale może kiedy indziej :P Dla fanów C/C++: "The Design Warriors Guide to FPGAs" i wiele innych.
Jeśli Timer odwraca stan pinu to tylko raz. Musi minąć znów czas do następnego przerwania żeby znów odwrócić stan. Obliczenia nastawia się więc albo na przerwania do odmierzania czasu, albo na takie do częstotliwości wyjściowej na pinie. Wtedy musisz podwoić częstotliwość przerwań by dwa razy zmienić stan pinu.
"Kilka" częściej spotykanych słówek i wyrażeń na początek amplifier (amp) - wzmacniacz preapmlifier (preamp) - przedwzmacniacz power amplifier - wzmacniacz mocy analog multiplier - analogowy układ mnożący ****************************************... PLL - Phase Locked Loop - pętla z synchronizacją fazy ****************************************...
Mnie wychodzi, że to nie jest tryb CTC tylko normalny. Po drugie na przerwanie compare trzeba zezwolić w rejestrze TIMSK - bit OCIE0 - masz < zamiast << stąd problem. Jak masz jakieś wątpliwości co do konfiguracji, to użyj symulatora AVR Studio. Można sobie w nim też ustawić tryb pracy i odczytać wartości rejestrów kontrolnych dla niego i potem...
https://obrazki.elektroda.pl/1761046600_... Pokażę tu jak uruchomić z Arduino czterocyfrowy wyświetlacz 7-segmentowy sterowany poprzez rejestr przesuwny 74HCT164 i cztery tranzystory BC546. Płytka z wyświetlaczem znów będzie odzyskana z elektrośmieci. Będzie to już kolejny temat, w którym uruchamiam wyświetlacz, gdyż omawiałem już...
rejestr modbus chrome rejestr rejestr assembler
podłączenie silnika siemens dodge światła zasilacz tomson
nagrzewnica olejowa kostka zwarcie
Lokalizacja płyty głównej w komputerach i AGD MIK400/771014 - schemat i podłączenie napędu