Jeśli WD ma być "tylko" do budzenia to się zgodzę. Przyzwyczaiłem się WD zostawiać sobie też dla bezpieczeństwa aplikacji. If WDE is set, the Watchdog Timer is in Interrupt and System Reset Mode. The first time-out in the Watchdog Timer will set WDIF. Executing the corresponding interrupt vector will clear WDIE and WDIF automatically by hardware (the...
Witam. To znowu ja z kolejnym urządzeniem. Jest to 1-kanałowy inteligentny przełącznik ściemniacza Avatto DMS16-W1 z CBU rozmawiający z MCU Puya PY32F002A (TSSOP-20). https://obrazki.elektroda.pl/5535706100_... https://obrazki.elektroda.pl/3162350000_... https://obrazki.elektroda.pl/6555860800_... https://obrazki.elektroda.pl/4466273200_...
Witam, prawdopodobnie błąd jest w inicjalizacji watchdog. Wykorzystujesz do tego dwie funkcje, init_WDT() oraz init_watch_dog(). Pierwsza init_WDT: https://obrazki.elektroda.pl/2044113200_... ale już kolejna linijka [syntax=c]WDTCSR=_BV(WDIE);[/syntax] kolejne nadpisanie rejestru WDTCSR, w tym momencie ponieważ mieścisz się w czterech...
Wkradł się bład przy wpisywaniu. Fuse Bity E4 D9 a nie 99 bo to pokazuje jasno na Twoim screenie Watchdog Always On :D Wyswietlacz nawet bez nadajnika ma wyświetlac po starcie trzy poziome kreski. W programie łatwo odczytać że żeby ustawić zero na wyświetlaczu procesor podaje masę na sześć segmentów. Wspólna końcówka wyświetlacza jest sterowana poprzez...
Przepisałem wedle swej wiedzy. Symulacja w AVR Studio 4 działa poprawnie, ale po zaprogramowaniu LED'y nie migają... Drogi kolego ucy74 , jeśli już coś robisz , to rób to dobrze , albo nie rób wogóle - nie mogłem się powstrzymać ;) Ustawiasz INT0 na wyzwalanie zboczem narastającym ,"usypiasz" proca snem głębokim (Power-down) i dziwisz się , że nie...
OK, rozumie Twoje intencje i z chęcią pomogę, bo minimalizowanie poboru energii to mój "bzik" :) Jednakże zacząłbym od tego, że przy takim zasilaniu gdy ustawisz ten mikrokontroler na kwarcu 32kHz , to zużywać będzie zaledwie 20 μA przy 3V i niewiele więcej przy 5V. Czy to nie wystarczy? Większe straty masz na samym zasilaczu. Co do usypiania -...
Pewnie kolega zakupił LaunchPad'a, też go mam i do tej pory udało mi się "zamigotać" używając identycznych funkcji ze znanych z programowania w C AVR'ów + magiczne konfiguracje samego MSP430. Ale banalny przykład z pierwszego postu świadczy o nieznajomości budowy mikrokontrolera. Sam przed chwilą szukałem w plikach nagłówkowych co oznacza (być może...
(at)tmf - dziękuję za miłe słowa :) Właśnie takie było założenie co do grupy "docelowej". Myślę, że jeszcze długo ATmegi i ATtiny będą punktem startowym dla hobbystów ze względu na nawał informacji w Internecie i mocno zakorzeniony pogląd jakoby wszystko inne było drogie/trudne itd. W sumie chciałem, żeby w poradniku było trochę więcej nawiązań do...
Witam! Polecam ATmega8: Features: • High-performance, Low-power AVR® 8-bit Microcontroller • Advanced RISC Architecture – 130 Powerful Instructions – Most Single-clock Cycle Execution – 32 x 8 General Purpose Working Registers – Fully Static Operation – Up to 16 MIPS Throughput at 16 MHz – On-chip...
Resetuj WDT tam, gdzie to potrzebne. Zamiast polegać tylko na loop(), warto "karmić" WDT strategicznie, czyli tam, gdzie może wystąpić problem. Warto też skonfigurować Interrupt Vector dla Watchdog Timer (WDT), co pozwala wykonać funkcję przed resetem układu. Funkcja taka może wykonać jakiś zapis stanu do EEPROM czy też wykonać sygnalizację resetu wskutek...
KEELOQ + rolling code można wykorzystać w swoim projekcie DIY bez przeszkód? Oczywiście. Dodano po 33 Mogę zainteresowanym podać kod KEELOQ dla pilota i odbioru , oczywiście z innymi danymi pilota ;). PILOT: Dodano po 10 Bardzo ciekawy i użyteczny projekt, właściwie to prototyp, który może przekształcić się w produkt. A czego mu brakuje żeby już nie...
Bardzo ciekawa sprawa. Nie mam niestety aktualnie dostępu do tego tunera. Jak tylko będę miał możliwość to oczywiście spróbuję to zabootować. Można by to też skompresować przez LZMA, przez co może obraz ten zmieściłby się we flashu Można by, choć z mojej perspektywy na ten moment nie ma sensu. Mam pendriva który ma ogromny rozmiar w stosunku do wewnętrznego...
A jak jest ustawione w programie dla ATmegi? Ustawione jest 38400 bps. Tak jest na początku kodu żródłowego. [syntax=bash]'FUSES uc:m8, hfuse:C9, lfuse:FF, External Crystal Oscillator 3-16MHz '*********** uC Configuration ***************** '***************************************... $regfile = "m8def.dat" $crystal = 16000000 $hwstack = 48 $swstack...
:smile: Z linka z informacji zamieszczonej przez RomanWorkshop zrobiłem reverse engineering kodu hex :idea: ;***************************************... ; Echostar_dsb-717 * ; avr-objdump -D -m avr:4 flash_tiny.hex >flash_tiny.txt * ;***************************************... .include "tn2313.inc"...
https://obrazki.elektroda.pl/8335986900_... Witajcie moi drodzy Przedstawię tutaj przykład użycia 32-bitowego mikrokontrolera PIC32MX250F128B w roli hosta USB obsługującego pendrive (zapisującego i odczytującego z niego dane). W temacie opiszę najpierw płytkę którą pod tego PICa zaprojektowałem, a potem przykładowe kody obsługi pendrive...
Ciekawostka ... atak hakerski, backdoor, jaka przyczyna? ... testuję 16 powyższych modułów rozmieszczonych w różnych miejscach (różni dostawcy Internetu, rożne routery i oczywiście różne IP użytkowników końcowych rozmieszczonych w jednym rejonie w promieniu 10km). Łącza Internetowe od dostawców do routerów także przeróżne, od światłowodu po WiFi. Wszystkie...
Dodano po 1 U-Boot SPL 2013.07 (Feb 06 2021 - 23:53:31) Timer init CLK stop PLL init pll_init:366 pll_cfg.pdiv = 10, pll_cfg.h2div = 5, pll_cfg.h0div = 5, pll_cfg.cdiv = 1, pll_cfg.l2div = 2 nf=116 nr = 1 od0 = 1 od1 = 2 cppcr is 07405100 CPM_CPAPCR 0740510d nf=100 nr = 1 od0 = 1 od1 = 2 cppcr is 06405100 CPM_CPMPCR 0640510d nf=100 nr = 1 od0 = 1 od1...
https://obrazki.elektroda.pl/2718988000_... Witajcie moi drodzy W tym temacie pokażę jak każdy początkujący może najprościej uruchomić w warunkach amatorskich mikrokontroler PIC32MX795F512H bez potrzeby trawienia/kupowania pod niego konkretnego PCB. Oprócz minimalnego niezbędnego układu pracy tego mikrokontrolera umieszczę tutaj kilka...
http://obrazki.elektroda.pl/3207877000_1... http://obrazki.elektroda.pl/9634776400_1... http://obrazki.elektroda.pl/8673988800_1... http://obrazki.elektroda.pl/3005768300_1... Termometr z funkcją pamiętania maksimum i minimum (zapisane w rejestrach, tracone przy braku zasilania). Program...
#pragma config FOSFPR = XT // Oscillator (Internal Low-Power RC (No change to Primary Osc Mode bits)) #pragma config FCKSMEN = CSW_FSCM_OFF // Clock Switching and Monitor (Sw Disabled, Mon Disabled) // FWDT #pragma config FWPSB = WDTPSB_16 // WDT Prescaler B (1:16) #pragma config FWPSA = WDTPSA_512 // WDT Prescaler A (1:512) #pragma config WDT = WDT_OFF...
To zastosuj ATmega88 (w tej samej cenie) - ma Watchdog: Three operating modes – Interrupt – System reset – Interrupt and system reset
[syntax=bash][ 0.447367] ... value mask: 000000ffffffffff [ 0.447424] ... max period: 000000007fffffff [ 0.447453] ... fixed-purpose events: 3 [ 0.447453] ... event mask: 0000000700000003 [ 0.447453] signal: max sigframe size: 1440 [ 0.447453] rcu: Hierarchical SRCU implementation. [ 0.447453] NMI watchdog: Enabled. Permanently consumes one hw-PMU counter....
Problem z resetowaniem rozwiązany. Obecnie nie mogę poradzić sobie ze zwiększaniem czas_c w ISR(WDT_vect). Jeśli używam czas_c ++ wszystko działa, gdy próbuję użyć if (stan==1 czas++) już nie zlicza [syntax] // Libraries #include <avr/io.h> // for GPIO #include <avr/sleep.h> // for sleep mode #include <avr/interrupt.h> // for interrupts...
uszkodzona: 15A U-Boot 2013.10.0-AK_V3.1.00 (Jun 30 2021 - 14:56:45) ramsize: 08000000 DRAM: 128 MiB efuse_read:0x00000007 Block:... Chip:8MB Bus:1 Name:FM25Q64 should_load_env cdh:... line:564 load env_relocate total partitions: 8 In: serial Out: serial Err: serial Net:...
Dzień dobry, witam wszystkich. Mam problem z wstawką asemblerową do języka C. Programuję procesor atmega2560. Nie rozumiem dlaczego nie działa funkcja "asm volatile ("mov r21,MCUSR");". Chcę dzięki niej przenieść wartość rejestru mcusr do rejestru r21. Lista błędów w załączniku. Wiem, że one wprost mogą nie wskazywać na to, że ich źródłem jest ta linijka...
Witam !!! Uruchamiam projekt https://hackaday.io/project/158256-hover... https://github.com/isabellesimova/Hoverb... Projekt jest napisany na STM 32 W swojej desce mam GD32. Po uruchomieniu błąd systemu zgłasza watchdog /* IWDG init function */ static void MX_IWDG_Init(void) { __HAL_RCC_WWDG_CLK_ENABLE(); hiwdg.Instance = IWDG; hiwdg.Init.Prescaler...
A przypadkiem nie włącza go przerwanie Timer-a ? When the SM bit is cleared (zero), the SLEEP instruction forces the MCU into the Idle mode, stopping the CPU but allowing Timer/Counters, Watchdog and the interrupt system to continue operating. This enables the MCU to wake up from external triggered interrupts as well as internal ones like Timer Overflow...
Co do przerwań... to chodzi mnie o podawanie sygnału na INT0, czy należy: wybrać typ sygnału zgłaszającego przerwanie (ustawiłem na narastające) aktywowac bit I w rejestrze SREG i ustawić odpowiednią maskę w rekestrze GIMSK, co wszystko zrobiłem. Coś przeoczyłęm? Chyba niepotrzebnie generowałem w rejstr PCMSK... Natomiast co do Timera...to przerwania...
Ok sprawa się nieco wyjaśniła. Mikroklocek nie idzie spać po użyciu WFE ale za to robi to po wywołaniu WFI. Ostatecznie mój kod, który wprowadza rdzeń w uśpienie wygląda tak jak poniżej i w tej formie to działa [syntax=c] /** * Entering STOP2 power save mode. In this mode all clocks except LSI and LSE are disabled. StaticRAM content * is preserved,...
Skoro tak to pokaż w kodzie gdzie ten WD jest ustawiany i przerwanie od niego, bo ja nie znalazłem. Odnoszę się do kodu ze strony https://github.com/feilipu/Arduino_FreeR... [syntax=c] BaseType_t xPortStartScheduler( void ) { /* Setup the relevant timer hardware to generate the tick. */ prvSetupTimerInterrupt(); /* Restore the context of the...
Udało mi się zapisać pierwszą stronę pamięci, potem modyfikowałem program i chciałem zapisać kilka stron - za każdym razem zapisywała się tylko 1 strona poprawnie aż w końcu zapisuję tylko pierwszą stronę i to błędnymi danymi. Długa noc przede mną... wrzucam w zasadzie cały testowy kod, przepraszam za bałagan bo jest w nim pełno zakomentowanych kawałków...
W tym mikrokontrolerze (tak jak piszesz) możesz ustawić Watchdog tak, że nie resetuje mikrokontrolera, tylko zgłasza przerwanie, które budzi mikrokontroler. Tak ustawiony mikrokontroler po wykonaniu przerwania Watchdoga wraca do miejsca, w którym został uśpiony i wykonuje dalej program, czyli np. pętlę główną. Aby ponownie wszedł w Power Down musisz...
W manualu jest napisane: If the watchdog is enabled for interrupt on underflow or invalid feed sequence only then there is no way of clearing the interrupt. The only way you could perform return from interrupt is by disabling the interrupt at the VIC (using VICIntEnClr). Jeśli dobrze to rozumiem jedyne wyście dosłowne i w przenośni z funkcji przerwania...
3. Jak dobrze widzę w dokumentacji to stan rejestrów przy power-down jest zachowany, więc można to zrobić bez użycia eepromu. Owszem, ale... Power-down Mode (...) In this mode, the Oscillator is stopped, while the external interrupts, and the Watchdog continue operating (if enabled). Only an External Reset, a Watchdog Reset, a Brown-out Reset, an external...
Funkcja SystemInit jest wywoływana w obu przypadkach na początku main. Podałem ją w kodzie. Może tutaj faktycznie jest problem. Pliki startup.s Keila i Cube się różnią. Zauważyłem, że funkcja SystemInit jest wywołana w pliku dla Cube. Niestety te pliki to dla mnie czarna magia. Czytałem o nim artykuł waszego kolegi z elektrody. https://www.elektroda.pl/rtvforum/topic3...
Witam. Znalazłem w necie. To powinno pomóc rozwiązać twój problem. Gościu tu przedstawia jak uśpić procesor i obudzić go przerwaniem INT0. [syntax=c] #define LED_PIN 4 void setup() { pinMode(LED_PIN, OUTPUT); //Save Power by writing all Digital IO LOW - note that pins just need to be tied one way or another, do not damage devices! for (int i = 0; i...
Witam, mam problem z obsługą przerwań zewnętrznych INT0 oraz INT1 w symulatorze (Simulator). Piszę w AVR Studio 4.19, gdyż Atmel Studio nie ma symulatora dla ATtiny87. Popatrzcie na ten banalny kod (okroiłem pierwotny kod do absolutnego minimum): [syntax=c] #include <avr/interrupt.h> unsigned char i; ISR(INT0_vect) //interrupt at PB6 { i++; }...
Tak jak napisałeś powinno być dobrze. Jeszcze jedna uwaga. Poprzednio miałeś ustawione bity na Interrupt and System Reset Mode. To może obecnie skomplikować ci możliwość przestawienia nastaw WatchDoga.Jeśli po wpisaniu tych wartości do rejestru nadal działanie WatchDoga nie będzie zgodne z oczekiwaniami to dzieje się tak dlatego iż w sterowaniu WatchDogiem...
Co to za procek ? Power-down dla Atmegi masz Only an External Reset, a Watchdog Reset, a Brown-out Reset, a Two-wire Serial Interface address match interrupt, an External level interrupt on INT0 or INT1, or an External interrupt on INT2 can wake up the MCU
Tablice wektorów mam z przykładów ze strony [url=http://www.freddiechopin.info/]http... Nic w niej nie zmieniałem i wersja 6.1.1 działa dobrze a 7.1.0 wiadomo Tak wygląda tablica wektorów: [syntax=cpp]void (* const vectors[])(void) __attribute__ ((section(".vectors"))) = { (void (*)(void))&__main_stack_end,// Main stack end address...
1. Można użyć watchdog timerów (wdt). Czyli mikrokontroler budzony byłby co jakieś 2 sek. Trzeba by zliczać ilość tych wybudzeń, tak aby uzyskać pożądany okres 1-2 min. Pytanie tylko, czy tak częste wybudzanie przez wdt nie powoduje znaczącego zużycia energii z baterii? To jednak było zbyt pochopne stwierdzenie. W przypadku atmegi8 nie widzę takiej...
Witam ponownie. Mam jeszcze pytanie. Ponieważ chciałem dodać obsługę: ETH_WKUP_IRQHandler i ETH_IRQn. Więc w pliku vaectors.c dodałem takie linijki: [syntax=c] // ETH Ethernet global Interrupt void ETH_IRQHandler(void) __attribute__ ((interrupt, weak, alias("__Default_Handler"))); // ETH_WKUP Ethernet Wakeup through EXTI line Interrupt void ETH_WKUP_IRQHandler(void)...
Witam! ADC Noise Reduction Mode When the SM1..0 bits are written to 01, the SLEEP instruction makes the MCU enter ADC Noise Reduction mode, stopping the CPU but allowing the ADC, the external interrupts, and the Watchdog to continue operating (if enabled). This sleep mode halts clkI/O, clkCPU, and clkFLASH, while allowing the other clocks to run. This...
Oczywiscie tak. Dodam ze uzywam programu System Workbench [syntax=c] /** ****************************************... * (at)file startup_stm32.s dedicated to STM32F103C8Tx device * (at)author Ac6 * (at)version V1.0.0 * (at)date 2018-04-06 ****************************************...
Witam, mam problem ze skonfigurowaniem ADC. Chcę czytać 3 kanały: (ADC1_IN01, ADC1_IN11 i ADC1_IN12) bez każdorazowego wyzwalania (najlepiej, żeby w jakichś rejestrach była zawsze najbardziej aktualna wartość). O ile dobrze rozumiem DS, muszę użyć: trybu injected - dane zapiszą mi się oddzielnie dla każdego kanału, w rejestrach ADC_JDRx. Coś muszę robić...
Tak oczywiscie reset podciagniety. Okrojony do minimum program: $crystal = 7372800 $regfile = "m168def.dat" Config Aci = Off Config Lcd = 40 * 2 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.0 , Db7 = Portb.1 , E = Portb.4 , Rs = Portb.5 Config Timer1 = Timer , Prescale = 64 On Timer1 Timer1_int Config Pinc.4 = Input '...
Hmm jak na procka za 3,4zł nie jest źle ;) Bardzo cieniutko Panie... https://obrazki.elektroda.pl/6576032700_... https://obrazki.elektroda.pl/3171327000_... [syntax=c] ARM®32-bit Cortex®-M3 CPU Core 72 MHz maximum frequency,1.25 DMIPS/MHz (Dhrystone 2.1) performance at 0 wait state memory access Single-cycle...
Witam. Kod wkleja się w znacznikach Syntax. Składnia: Kolorowanie składni: In this mode, the external Oscillator is stopped, while the external interrupts, the USI start condition detection, and the Watchdog continue operating (if enabled). Only an External Reset, a Watchdog Reset, a Brown-out Reset, USI start condition interrupt, an external level...
Nieprawda, nie musi resetować procesor, może wyłącznie wywoływać przerwanie... A co napisałem? Przypomnę Jeśli jednak watchdog ma możliwość generowania przerwania, to problemu nie ma trzeba w przerwaniu od watchdoga zresetować go i program będzie kontynuowany. No właśnie źle napisałeś. WG ma specjalny tryb - interrupt mode, w którym generuje tylko...
Only an External Reset, a Watchdog Reset, a Brown-out Reset, USI start condition interrupt, an external level interrupt on INT0, or a pin change interrupt can wake up the MCU Według dokumentacji wybudzenie mikrokontrolera z trybu power-down możliwe jest jedynie przez przerwanie od niskiego poziomu na INT0, a na jakiekolwiek przerwanie od INT1 procek...
bascom watchdog interrupt freertos interrupt interrupt event
arkusz google skrypt zmiana kierunek silnik przełącznik atmega8 bascom miernik
podlicznik pomiar podlicznik pomiar
Uszczelniacz głowicy Karcher K 620M - wymiana i specyfikacja Trzeszczenie głośnika w Peugeot 3008: przyczyny i rozwiązania