1. Nie definiuj zegara w kodzie tylko w opcjach kompilatora: http://mikrokontrolery.blogspot.com/2011... 2. Problem natomiast pojawia się wówczas, gdy funkcja obsługi przerwania wykonuje się długo. Docelowo będzie sterować portami przez około 16 sekund. Przerwanie ma się wykonywać krótko i tego zawsze się trzymaj, bo łatwo...
Nie potrzebujesz kolejnego licznika. Już masz jeden skonfigurowany do pracy cyklicznej i to w zasadzie już Ci mniej więcej wystarczy. Masz w tym momencie przerwanie co 1/18750sekundy czyli co jakieś 53,33(3)us. Jeśli chcesz zrobić opóźnienie w pętli głównej o na przykład 500ms to wystarczy, że poczekasz 500000/53,333=9375 takich przerwań. W tym celu...
spr dodać 'volatile' przy deklaracji zmiennej, możliwe że kompilator optymalizując wpisuje na stałe wartość zadeklarowaną na początku, w przerwaniu jej wartość się nie zmienia, dla kompilatora jest ona w tym miejscu jako stała ...
Ponieważ aktualnie mierzę się z podobnym problemem w driverach zaimplementowanych w moim RTOSie, powiem Ci szczerze, że taki sposób obsługi SPI jest po prostu niemożliwy do zrobienia poprawnie i tak żeby osiągnąć jakąś rozsądną częstotliwość. Sytuacja którą obserwujesz jest stosunkowo prosta. Natychmiast po uruchomieniu transmisji masz pierwsze przerwanie...
Dodatkowy wpływ na błąd ma niedokładność częstotliwości generatora kwarcowego. Błąd w sekundach na dobę, wyraża się wzorem: \Delta=86400*(1-\frac{fwzr}{f}) \Delta - błąd w sekundach na dobę (wartość ujemna oznacza spóźnianie się) fwzr - częstotliwość wzorcowa (czyli to co ma być np. 4000000 Hz) f - częstotliwość rzeczywista kwarcu lub generatora kwarcowego...
Chciałbym przedstawić jeden z możliwych sposobów wykonania cyfrowego regulatora PID Przestawiony regulator nie ma konkretnego zastosowania , to do czego zostanie wykorzystany zależy od czytelnika. Opis regulatora kieruję do osób które zaczynają przygodę z automatyką i układami regulacji. Spróbowałem wyjaśnić jak działa cyfrowy regulator PID, czemu ich...
https://obrazki.elektroda.pl/3496920600_... Jednym z pierwszych projektów, które zrealizowałem mając 9-10 lat było pudełko z kilkoma LEDami, przełącznikami i potencjometrem - taka tam wprawka w lutowanie. Drugim była migająca strzałka LED z kitu bodaj Jabela. Pierwszym, który zepsułem lutownicą transformatorową (której nie polecam)...
http://obrazki.elektroda.pl/6223122300_1... Domyślną metodą kontroli napięcia 230 V AC jest kontrola poprzez triak. Tak zrealizowany jest każdy ściemniacz. Kontrola taka oparta jest o kontrolę fazy - triak jest otwierany jedynie na pewną część sinusa napięcia przemiennego. http://obrazki.elektroda.pl/2250705900_1...
Witam, Mam takie pytanie. Jaka jest różnica w obsłudze przerwania zboczem narastającym a stanem wysokim. Stan wysoki to wiadomo, że napięcie dojdzie do pewnego poziomu powiedzmy 5V i następuje przerwanie. Jak to jest ze zboczem narastającym. Załóżmy, że mamy stan niski i następnie napięcie zaczyna rosnąć. I kiedy następuje to przerwanie, w chwili gdy...
http://obrazki.elektroda.pl/2563369400_1... Witam wszystkich! Chciałbym zaprezentować pewien mały projekt, który wykonałem na prezent. Jest to drzewko szczęścia, w którym rolę liści pełnią diody LED RGB. Był to jeden z moich pierwszych projektów oraz pierwszy zawierający część analogową (dlatego zarówno projekt jak i wykonanie nie jest...
http://obrazki.elektroda.pl/6148316100_1... http://obrazki.elektroda.pl/9687194100_1... Mając kilka wolnych chwil, postanowiłem skonstruować odbiornik do bezprzewodowego czujnika stacji pogodowej Oregon Scientific RMR203HG. Stacje tej marki są ogólnie dostępne, jeśli chodzi o wrażenia z użytkowania – działa bez...
http://obrazki.elektroda.pl/9589280700_1... HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC...
Sterowanie wentylatorem pwm przez arduino mega z wyświetlaczem (at)ElektrodaBot Jak to zrobić z pomocą zasilacza z dwoma wyjśćiami mianowicie 5v i 12v marki Mean Well? AI: Jaki model wentylatora PWM chcesz sterować? Wentylator Noctua NF-A14 iPPC-3000 PWM AI: Jaki typ wyświetlacza jest podłączony do Arduino Mega? Na pewno dotykowy Bezpośrednia odpowiedź...
https://obrazki.elektroda.pl/6692889600_... Od jakiegoś czasu czułem potrzebę sterowania komputerem za pomocą niestandardowej klawiatury. W wielu przypadkach, takich, jak emulatory starych komputerów i sterowanie urządzeniami za pomocą klawiatury, można przypisać funkcję programu do klawisza na klawiaturze. Na przykład komputer ZX...
Pomysł wydaje się być dobry, ale nie do końca. Teraz reakcja na kręcenie potencjometrem jest widoczna na oscyloskopie w postaci zmiany częstotliwości, także podczas przytrzymywania przycisku, ale obecnie nie da się sterować klawiszami. Tzn, teoretycznie się da, ale czas reakcji od naciśnięcia przycisku sw na wykonanie instrukcji wewnątrz pętli trwa...
Jak wspominałem komunikacja przebiega prawidłowo, wysyłałem daną wartość i następnie sprawdzałem czy dostałem to co chcę i tak właśnie było. Wykonałem również to co napisałeś i wyniki potwierdziły się. Problemem jest zmiana częstotliwości 3 kanałów jednocześnie, gdy otrzymam nowe prędkości nadpisuję zmienne w których przechowuję wartości do których...
Z odpowiednim filtrem sinusoida >100kHz też wyglądałaby dobrze. Ale Prostokąt czy piła już nie :-) Zanikanie przebiegu podczas przestrajania to zamierzony efekt, czy "bug"? Nie zamierzony, nie bug. W czasie generowania przebiegu wykonywany jest program: [syntax=avrasm] 1: add r18, %0;1 cycle adc r19, %1;1 cycle adc %A3, %2;1 cycle lpm ;3 cycles out...
Już dziś nie zajrzę do Twojego kodu (pewnie jutro wieczorem), ale jeśli chodzi o częstotliwość próbkowania, myślę że się pomyliłeś. Normalnie ATMEGA może zbierać prawie osiemdziesiąt tysięcy próbek na sekundę. Ja podałem kod na gwarantowane 1000 pps, a Ty chcesz spowolnić jeszcze ADC? To peryferium działa niezależnie od procesora i zmiana częstotliwości...
Możesz dać gotowca jak masz i przeanalizuje to. Gotowca (źródła), który działa prawie identycznie (inne częstotliwości migania ale to drobny szczegół) jak Twoje założenia projektowe, masz u siebie na dysku. Jest to program demo wgrywany fabrycznie do płytek Nucleo i znajduje się w repozytorium programu STM32CubeIDE. Gdzie akurat u Ciebie na dysku jest...
Cześć, programowanie embedded nie przestaje mnie zaskakiwać. Mam program, ogólnie dość rozbudowany, na procesor xmega. Program między innymi odtwarza dźwięk. Zajmując się czym innym chciałem sobie czasowo mrugać ledem, więc do sprawdzania czasu korzystam z funkcji millis(), która wygląda tak: [syntax=c] long millis() { long result; ATOMIC_BLOCK(ATOMIC_RESTORESTATE)...
Zmiana planów - attack/release zamiast ADSR do wewnętrznego filtra. Najprościej jak się da, jak w ARP Odyssey i Micromoogu. Dwie gałki mniej. Ja bym zrobił tak (i tak zrobiłem) - w przerwaniu uart'a przenoszę odebrany bajt do akumulatora. Jeżeli najstarszy bit jest ustawiony - wtedy odebrano status, jeśli wyzerowany dane. Analizuję status czy jest note...
Piszesz, że wiesz jak działa multiplekser, a w algorytmie ani śladu tej wiedzy. Już na początku włączasz przerwania od !INT0. Na schemacie ten pin nie jest do niczego podłączony. Gdzie tu logika? Co do samego MPXa, jeżeli chcesz skanować kanały, to potrzebujesz licznik, który będzie generował sygnał przerwania i adresował kolejny kanał MPXa z określonym...
Witam. Mam problem na który sensownej odpowiedzi nie znalazłem, w nocie katalogowej także nie ma opisanego takiego przypadku za to jest kilka innych które mi średnio pasują do czegokolwiek. Mianowicie potrzebuje produkować przebieg o niezależnie programowalnej częstotliwości i czasie trwania stanu wysokiego. Parametry tego przebiegu to częstotliwość...
Z tego co widzę czujnik ten wysyła sygnały PWM (modulacja wypełnieniem pulsu) o częstotliwości 100Hz i wypełnieniu 50% dla 0g. Zmiana wypełnienia o 20% oznacza zmianę o 1g gdzie czujnik ma gwarantowane działanie na +/- 1.7g min. Czyli wypełnienie 50%=0g, 30%=-1g, 70%=1g. Minus tych czujników jest taki, że żeby to dobrze obsłużyć to musisz łapać te zmiany...
Witam, potrzebny jest mi generator fali PWM o zmiennej częstotliwości i wypełnieniu. Górna częstotliwość wynosi 150kHz, dolna 10kHz. W programie wykorzystuję dwa kanały adc (tj. adc1, adc2) oraz jedno wyjście dla wspomnianej fali (tj. PC5). Atmega8 pracuje z zewnętrznym kwarcem 16MHz. Górna częstotliwość wymaga 106 cykli zegarowych, dolna natomiast...
Witam, Mam problem z ustawieniem SysTick'a na przerwania co 1ms(mam co 3.14ms). Podejrzewam, że mikrokontroler nie chce wystartować na częstotliwości 72MHz, ale nie wiem dlaczego. Program ładnie działał bez żadnego problemu na STM32F103ZET6. W momencie przejścia na STM32F105VBT6 pojawia się wyżej wymieniony problem. Program był napisany w cpp(nadmieniam...
Witam Problem tkwi w tym że nie ma żadnej synchronizacji pomiędzy procesorami US1 i US2. Układ 1 odbiera dane z RS485 i wystawia je na wyjściu portu PC.0 - PC.7. Układ 2 ma je odbierać i w zależności od wartości sterować triakiem. Ale zastanów się co on w rzeczywistości odbiera, przecież dane na porcie PC. US1 mogą być w trakcie aktualizacji, czyli...
Ja wcale nie twierdziłem, że to jest sztywna granica. Właśnie dlatego że twierdziłeś że więcej się nie da: Według moich szacunków, przy częstotliwości taktowania 16MHz, detekcji na jednym zboczu, procedurach napisanych w asemblerze i niezbyt wysokich oczekiwaniach dodatkowych co do pozostałych zadań wykonywanych przez mikrokontroler można osiągnąć...
Jak wielu z was, jestem szczęśliwym posiadaczem LCD od Nokii 6100 :D, z tym że nigdy go jeszcze nie używałem. Tak właściwie nigdy nie używałem żadnego wyświetlacza graficznego, więc obsługę tego traktuję jako wprawkę (chociaż wiem, że większe wyświetlacze mają raczej interfejs równoległy i steruje się nimi np. przy pomocy interfejsu EBI w MCU, a ten...
Witam Dopiero zaczynam przygodę z avr-ami dlatego chciałem się poradzić bardziej doświadczonych kolegów. W programie chciałem odczytać temperatury z 8 czujników KTY podłączonych do ADC. Odczytu dokonuję w przerwaniu, natomiast wyświetlenia i przeliczenia na stopnie Celsjusza chciałem dokonać w main. Niestety wyświetla mi jakieś dziwne wartości. Może...
http://obrazki.elektroda.net/39_12386675... Walentynkowy zegar Zastanawiałem się co by tu zrobić dla mojej połowicy… siedząc w kuchni chciałem sprawdzić która jest aktualnie godzina. Patrzę na elektroniczny zegarek w kuchence i co? Brak godziny, bo akurat przed chwilą niechcący wywaliło mi bezpieczniki. Tak się patrzę i patrzę…...
Częstotliwość wyjściowa wynika z faktu, że odtworzenie jednego okresu z tablicy wymaga wykonania 240 kolejnych odczytów czyli, że: Fwy=Fprzerwań/240 {Rąbnąłem się w pierwszym poście :oops: } A ogólnie: Fwy:=Fprzerwań/N gdzie Fprzerwań - częstotliwość przerwań N - długość tablicy sinusa. Użyta metoda zmiany częstotliwości przerwań dla zmiany Fwy ma pewną...
Nie, , teraz widzę zmiana CS00 na CS01 nie objawia sie zmianą częstotliwości przerwania (powinno być 8x mniej) ;/
I tu dochodzimy niestety do szukania maksimów, lub zmiany częstotliwości wyzwalania przerwania przy krokach dX. Najlepiej jak byś trafiał w końcowe indeksy. Albo przynajmniej bardzo blisko. Samym dX przy takich krokach tego nie zrobisz.
Obsługa przerwania nie ma być "jak najkrótsza", tylko "nie za długa". Odświeżanie wyświetlacza zawsze robi się w przerwaniu, gdyż zajmuje to czasu tyle co nic, a nie zrobienie tego w przerwaniu powodowałoby złe działanie wyświetlacza - nierówną jasność cyfr, zmiany jasności, migotanie, przygasanie itp. To ma być działać ze stałą częstotliwością, a do...
Gratuluję wytrwałości :) Jest jeszcze jedna rzecz, którą będę chciał zrobić - dodać dodatkowy timer, żeby zmienna lesser_delay_counter (flaga przyjmująca 4 stany w zależności od tego co ma być wyświetlone na ekranie "czas, temperatura, cisnienie, hPa") była niezależna od timera wyznaczającego częstotliwość multipleksowania, Jako alternatywę proponuję...
Okazało się, że po zmianie częstotliwości APB2 , przestał mi działać prawidłowo PWM, który steruje układem, który to ten generuje sygnały na wejściach EXTI. Wystarczyła poprawa w konfiguracji PWM, po zmianie częstotliwości APB2. Temat zamykam.
Zacznij od pokazania całego kodu. Jeśli korzystasz z przerwań, to najprawdopodobniej mikrokontroler nie wyrabia i powoduje opóźnienia. Policz sobie (BTW, przy OCR2 = 4, dostajesz 100kHz, popatrz na wzór, należy do OCR2 dodać jeden przed dzieleniem), przy częstotliwości 100kHz, procesor ma 10 taktów na obsłużenie przerwania, co na pewno trwa dłużej,...
Jaka jest aktualna częstotliwość zegara? Jak często uruchamiane jest przerwanie? Ile trwa naciśnięcie przycisku? Musisz zmieniać opcje tylko kiedy przycisk został naciśnięty, nie przytrzymany. Dodaj do przerwania warunek sprawdzający poprzedni stan przycisku. Pomyśl nad wyeliminowaniem delay.
Jak masz wolno-zmienny enkoder (impulsator) to można podpiąć kanały A i B pod wejścia zwykłe. Program: jak jest A i narasta (zbocze) B to funkcja zwiększ rejestr (+1), a jak jest B i narasta (zbocze) A to zmniejsz (funkcja -1) rejestr szybkości krokowej. Można podłączyć pod szybki licznik (wtedy praca w przerwaniach) ale trzeba analizować: czy zawartość...
Fakt, temat dziwaczny. Przykład - zliczanie zbocz w przerwaniu. Kod obsługi przerwania wygenerowany w C vs najprostsza obsługa asemblerowa. Policzyć cykle zegarowe w jednymi drugim przypadku i przeliczyć na dopuszczalną częstotliwość zmian na linii wejściowej przerwania.
Tutaj jest program w C częściowo można coś zobaczyć: https://www.elektroda.pl/rtvforum/viewto... ustawiasz timer1 (drobne zmiany na częstotliwość), w przerwaniu ISR(TIMER1_COMPA_vect) obsługujesz czas. Reszte kodu wyrzucasz. Musisz jeszcze dopisać testowanie czasu w tym przerwaniu, plus jakiś sposób ustawiania czasu. Czas możesz ustawić...
Zatem policz sobie oba czasy, na przykład w µs. Tryb, który użyłeś jest zupełnie sensowny, ma auto reload. Wydaje się, że dla TH0 = 0 maksimum to 256 taktów. Znajdź jakiś wspólny podzielnik dla obu wyliczonych czasów, tak aby dla dłuższego TH0 było mniejsze od 256, wiadomo, że dla krótszego będzie mniejsze. Ten podzielnik (na przykład w µs)...
Jeśli chodzi o ASM i sterowanie to nie trzeba wogóle przerwań, wszystko da sie upchnąć bez problemów na procku z 2ma sprzętowymi PWM na jednym liczniku (chyba ze inne częstotliwości) Licznik działąjący jako PWM potrzebuje tylko zaprogramowania by działać jako generator a pozniej ewentualnie zmieniac zawartość rejestru sterującego. Przerwania nie są...
Sądzę że to niemożliwe do policzenia podczas kompilacji ponieważ w programie może być pętla, a kompilator nie wie ile razy zostanie wykonana. W moim kodzie akurat w tym miejscu nie ma pętli ale są 3 warunki czyli co najmniej 2 bliskie skoki. Czyli też nei wiadomo ile czasu się bedzie wykonywać, bo skok to 3 cykle, a brak skoku to dwa cykle. Może są...
Jednak zmieniała stan 8 razy a nie 4. Miałem nagrany filmik - jak puściłem klatka po klatce i porządnie rano policzyłem to w ciagu sekundy było: 01010101 czyli 4 zapalenia, czyli 8 zmian stanu.
Jak i gdzie masz zdefiniowaną częstotliwość zegara F_CPU?
(at)WX3V To co napisałeś to jakiś zbiór życzeń i dziwnych przemyśleń. Albo dopiero zacząłeś programować, albo do tej pory pisałeś programy w asemblerze. Nie ma nic takiego jaki zachowanie kolejności zmiennych, sortowanie po typie czy innym kryterium. Zagnieżdżenie wstawki asm w funkcji obsługi przerwania jest możliwe i nie ma tutaj wątpliwości. Ale...
Najprościej chyba to zrobić w przerwaniu od jakiegoś timera. W każdym wywołaniu sprawdzasz warunki dla każdego silnika: "jeżeli prędkość_aktualna>prędkość_zadana to prędkość_aktualna+1" "jeżeli prędkość_aktualna<prędkość_zadana to prędkość_aktualna=prędkość_zadana" Potem w tym przerwaniu zamieniasz "Prędkość_aktualna" na odpowiednią wartość PWM...
gmp wrote: Procek obsluguje poprawnie 4xmnijesze czestotliwosci od zegara. Dziwne, ale z dokumentacji wynika coś zupełnie innego. Mikrokontroler poprawnie rozpoznaje zmianę stanu (przy reakcji na zbocze) o ile stan ten trwa dłużej niż jeden cykl zegarowy. Przy czasach krótszych może wykryć albo nie. Pan Arkadiusz Krysiak w swojej książce o AT90S2313...
1. Jeżeli przy braku wysyłania nośnej 36kHz na wyjściu TSOP masz stan wysoki, a podczas wysyłania nośnej masz stan niski to znaczy, że jest OK. 2. W jakim celu tak komplikujesz funkcję przerwania wykonującą zmianę pinu na przeciwny - wykorzystaj ostatni kod z mojego poprzedniego postu. 3. Najważniejsza jest jednak uwaga BlueDraco dot. sensu machania...
zmiana częstotliwości pilota zmiana częstotliwości monitora zmiana częstotliwości pamięci
yanosik pliki przekaźnik jednocewkowy bojler elektryczny rachunek
reset pieca buderus problemy diagbox
ESP8266 WebSocket Echo AP – przykładowy kod serwera HTML, NodeMCU, Wemos D1 mini ESP8266 Access Point – serwer TCP na socketach, przykładowy kod Arduino i MicroPython