Ojej... rzeczywiście strasznie głupi błąd. Po prawdzie kod był pisany na szybko i nawet nie przyszło mi do głowy że to może być wina umieszczenia całej funkcji w przerwaniu. Dzięki wielkie Panowie :D. Wrzucam kod, być może komuś się kiedyś przyda. [syntax=c]#include <avr/io.h> #define F_CPU...
To mój pierwszy post na tym forum, więc witam wszystkich użytkowników. Od jakiegoś tygodnia bawię się ARMami, używam płytki ZL31ARM z prockiem STM32F103RBT6. Po kilku próbach zdałem sobie sprawę, że standardowa biblioteka ST to jakieś nieporozumienie i zacząłem pisać programy po prostu operując na...
1. przez regulację częstotliwości timera który generuje przerwanie tym sposobem przy większych częstotliwościach zwiększa się krok 2. przez regulację skoku w banku próbek przy dużym skoku podstawowym (np 100-200) zmiana +1/-1 powinna dać bardzo mały krok w zmianie częstotliwości sygnału wyjściowego....
Dziękuje za opis ale chyba mnie to przerosło :) Zrobiłem programowy PWM, oto kod: [syntax=basic4gl] '************... Petla glowna ****************** '*******************... Obsługa klawiszy (at)(at)(at)(at)(at)(at) If Przycisk > 0 Then...
Korzystanie z tej biblioteki poza tym mają również inne wady: 1) Struktury inicjalizacyjne marnują pamięć. Te struktury są spakowane, więc dostęp do bitów w tej strukturze jest utrudniony. Co modyfikacja bitfielda kompilator musi uzywac instrukcji BFI,AND,ORR,BIC. Marnuje to sporo czasu, zamiast...
Inny jest adres portu dla CAi niektórych przycisków. Poza zmianą programu, w sprzęcie wystarczy tylko wymienić procek i kwarc a zyska się możliwość zmiany parametrów w czasie pracy generatora. Naturalnie do zrobienia. Tak jak w przypadku portu dla CA można to robić bez sprzętu (zdaje się zmiana w...
Dzięki za odpowiedź. Patrzyłem sobie na szybkość działania migając LEDem. Opóźnienie było robione pętlą for (kompilowaną do SUBS, CMP, BNE.N) więc program ciągle skakał i nie było za bardzo widać rezultatu działania prefetchingu. Co do biblioteki ST to znam opinię o niej, sam znalazłem błąd w siostrzanej...
Nie wiem, czy do końca zrozumiałem Twoją odpowiedź, gdyż kłóci się z tym co obserwuję w układzie. Mogę zmieniać częstotliwość jednego z kanałów w trakcie wykonywania programu. Problem został rozwiązany, dany kanał przy zmianie okresu jest załączany i wyłączany w procedurze obslugi przerwania.
Witam, chciałbym aby w pętli głównej programu zmieniać częstotliwość CTC (wartość OCR1A) licznika pracującego w trybie 16 bitowym. Wydaje się, że wszystk0o jest dobrze, a na wyjściu uzyskuje jedynie niezmieniające się 100Hz, sprawdzone oscyloskopem. [syntax=c] #include <avr/io.h> #include...
Wpisywanie $CRYSTAL bez rzeczywistej zmiany taktowania procesora będzie powodować, że wszelkie opóźnienia i obliczenia kompilatora dotyczące liczników nie będą zgodne ze stanem faktycznym. GETRC5() korzysta aktywnie z licznika TIMER0. Tak manewruje wartością wpisaną do rejestru licznika oraz preskalerem...
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...
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...
Witajcie moi drodzy Zapraszam na kolejną część mojego tutoriala PIC18F2550 i kompilatora SDCC . W tej części zademonstruję jak używać wyświetlacza 7-segmentowego z PIC18F2550 . Kod obsługi wyświetlacza będzie oczywiście napisany w oparciu o przerwania i timery . Cały proces powstawania...
Większość przykładów znalazłem w Asemblerze... Nie zastanawiałeś się, dlaczego? Kod w C jest zwykle mniej optymalny, przez co nie daje się uzyskać tak dużych częstotliwości, jak w przypadku asm. Jeszcze będę musiał pominąć for bo zajmuje za dużo cykli. No to jeżeli zamierzasz przerzucić wystawianie...
Z tego co zauważyłem, mikrokontroler taktujesz częstotliwością 1MHz. Przy preskalerze 1024 częstotliwość taktowania timera będzie równa 1000000Hz/1024=976,5625Hz. Z tego wniosek, że w ciągu 1 sekundy timer zlicza 976,5625 impulsów. Biorąc pod uwagę, że timer jest 16-bitowy przepełni się 1 raz na (65536/976,5625)...
Witam Próbuję wykonać ćwiczenie z kursu Leona Uruchamiałem ten kod pod eclipse Luna z najnowszym toolchainem. Ww właściwościach projektu dla AVR hardware podałem właściwą sygnaturę procka i jego częsttliwość 62000000 Hz , kompilator wykrzykuje ostrzeżenie jak mam definicję zegra na początku kodu...
Siemka. Prosze bardzo o pomoc. Mam zrobić na zajęcia sprawozdanie i odpowiedzieć na pytanie. " jaką najniższą częstotliwość przerwań może generować timer TC0? " Odpowiedz chyba 0,27Hz. Ale skąd się to bierze. Poniżej podam dokładne polecenie i rozwiązanie. Prosze o odpowiedzenie na to pytanie czemu...
Witajcie. Za pomocą AVR ATMEGA8 chcę próbkować sygnał analogowy ze stałą częstotliwością, na przykład Fs=12kHz. Interesują mnie próbki 8-mio bitowe. Wydaje mi się, że są dwie możliwości. 1. W trybie free running użyć kwarcu o częstotliwości Fs * 13 (cykli przetwarzania) * preskaler. Czy wtedy przerwania...
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.
Witam Mam mały problem z zakresem ważności zmiennych w przerwaniach. Nie mogę zmienić wartości OCR0A za pomocą zmiennej a; Załączam kod, zawiera się w kilku plikach. Błędów nie zgłasza. Przerwanie reaguje na przycisk w praktyce, jednak nie zmienia wartości 'freq' ISR(INT0_vect) { ...
Już pojazuje. Ustaw_timer() wykonuje się raz, po transmisji częstotliwości do uC z PC. Przy zmianie częstotliwości wykona się ponownie. Dodano po 9 Zmiana maina na taki spowodowała że przelicz i ustaw_timer wykonują sie poprawnie. Flaga transmit też zaczęła reagować jednakże nadaj już nie działa... [syntax=c] { LCD_Initalize...
(at) Marek_Gorecki Jeden cykl enkodera składa się z czterech zboczy (po 2 na każdy kanał). Sądząc po tym co piszesz nie potrzebujesz dużej precyzji i zliczasz tylko jedno z nich, więc częstotliwość przerwań INT0 wyniesie: f = n*N/60 gdzie: n - prędkość obrotowa enkodera [1/min] ...
Wydaje mi sie , że ... Twój projekt ma chyba coś wspólnego z samochodem hmmm...:?: Zgadza się. Gdybyś zliczał impulsy kierując się stanem pinu , wyszły by Ci herezje. Trzeba programowo zliczać zmianę stanu pinu z np. "1" na "0" lub na odwrót. Tak właśnie napisałem "sprawdzanie czy nie pojawił...
Aby to zrobić zgodnie ze sztuką obsłuż LED na przerwaniach od USART. Trochę zabawy z tym jest, bo przerwania 300 tysięcy razy na sekundę dla AVR to duże obciążenie (wstawki ASM wskazane). Na 16MHz nie pójdzie, więc kwarc min 18MHz. Prosta sztuczka pozwoli zmniejszyć częstotliwość przerwań dwukrotnie....
Witam, Napotkałem pewien problem. Otóż, w obsłudze przerwania od timer'a mam zmianę stanu lini. Generuję prostokąt. Konfiguracja układu to: Zewnętrzny kwarc: 8Mhz oraz RCC skonfigurowane w następujący sposób: [syntax=c] //zrodlo PLL to PREDIV1 RCC->CFGR |= RCC_CFGR_PLLSRC_PREDIV1; //ustawianie....
Witam Czytam, czytam i nie mogę wyczytać jasnych odpowiedzi na poniższe, ważne dla mnie pytania. 1. Mam ATMegę8-16PU, która ma domyślnie ustawioną częstotliwość na 1MHz. Czy zmianę częstotliwości (na 2, 4 lub 8MHz) spowoduję ustawiając odpowiednio bity konfiguracyjne CKSEL? Pytam aby się upewnić. 2....
Podłącze się do tematu gdyż nie chcę zakładać nowego wątku. Mam timer (ATMEGA32) ustawiony w taki sposób [syntax=c]TCCR0 |= (1<<WGM01); TCCR0 |= (1<<CS02) ; OCR0 |=38; TIMSK |= (1<<OCIE0);[/syntax] Procedura obsługi przerwania zawiera funkcje komunikacyjne i zwiększa...
Panie kolego po prostu naucz się pisać kod przejrzyście nie tylko dla potrzeb forum i innych osób ale przede wszystkim dla siebie, co to znaczy? zobacz jak powinno się zrobić inicjalizację takiego timera w trybie CTC: Dodano po 4 tymczasem pamiętaj że jeśli bit ma mieć wartość = 0 to NIGDY...
Obsługa UART jest przerywana TIMEREM i dlatego gubi znaki. Zrób odbiór UARTU na przerwaniach, odbieraj w nim tylko pojedynczy znak i ładuj go do bufora (nie czekaj w tej funcji,aż odbierzesz wszystkie znaki), a po odebraniu końcowego znaku ustawiasz flagę, że skończył. I w pętli głównej dekodujesz sobie...
Coś mu się odwiesiło i działa te moje i wasze ;) Tak zapytam jeszcze bo mi coś to nie wypaliło zbytnio czy jest możliwość zmiany częstotliwości w "locie"?? Bo projekt zakłada super kondensatory do podtrzymywania "danych" na ile się da, i tak pomyślałem jeszcze by wydłużyć czas to, 16MHz zasilanie...
Dziękuję bonanza za pomoc Twoja się bardzo przydała, dodatkowo okazało się, że środkowy pin od potencjometru w środku był przerwany, dziwna sprawa, ale zlutowałem go na nowo i zmiana częstotliwości potencjometrem już działa :)
Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka...
Witam . Napisałem ( prawie) sobie na ww procesor program w asm i bascomie który ma robić za zamek otwierany kartą . W bascomie wszystko działa w 100 % według założenia jednak w asm mam taki problem że układ sam zmienia swoje taktowanie (ponad 2x) przez co wszystkie funkcje czasowe nie pracują jak powinny...
Istnieją dwie cyfrowe metody pomiaru częstotliwości: 1. Pomiar ilości impulsów wzorcowych w trakcie trwania okresu sygnału mierzonego. Konkretnie mierzymy imp. wzorcowe w trakcie trwania połowy okresu - zwykle, gdy jest poziom wysoki. W takiej sytuacji jeżeli zmierzysz N imp. wzorcowych w trakcie połowy...
[syntax=csharp]#include <avr/io.h> #include <avr/interrupt.h> //definicja LED1 (do którego pinu podłączony LED1) #define LED1 PB0 //definicja LED2 (do którego pinu podłączony LED2) #define LED2 PB1 //definicja początkowej wartości timera...
Witam Do pomiar prędkości obrotowej wentylatora z PC chciałem użyć sygnału z czujnika halla, całość podłączone jak na schemacie poniżej do wejścia atmegi 16 ICP1. Chciałem użyć również wbudowanej funkcji timera 1 do pomiaru okresu. I teraz co nie działa... Pomiar jest mało dokładny i strasznie...
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ść...
Witam, Od jakiegoś czasu bawię się uC at90usb646. Do pinów portu B mam podłączony wyświetlacz LED. Zabrałem się za zrobienie programowego PWM. Wykorzystałem do tego dwa przerwania w trybie Fast PWM: przerwanie od przepełnienia licznika timer0 oraz przerwana od porównania wartości rejestru OCR z wartością...
naciśnij F5 (Run) jak zatrzyma się na Breakpoint wykonaj kod przerwania krokowo F11 naciśnij F5 (Run) jak zatrzyma się na Breakpoint wykonaj kod przerwania krokowo F11 itd. Tak faktycznie widać zmiany na PORTA, myślałem, że mogę odpalić auto step i będę widział zmiany diody w czasie rzeczywistym...
Jeżeli to, co pokazałem jest poprawne, to w reszczcie nic raczej nie namieszałem, ponieważ w pozostałej części jest tylko sprawdzanie czyjników i w momencie wyzwolenia alarmu zmiana stanów na portach i to wszystko działa prawidłowo. Jeżeli zmienię w deklaracjach stan zmiennej c z 0 na 1 to wykonywana...
Każda aplikacja osadzona na ogół zawiera w sobie zestaw funkcji. I nawet najprostsza, na przykład do regulowania temperatury, obejmuje szereg zadań, takich jak odczytywanie danych wejściowych od użytkownika lub z czujnika temperatury/wejścia ADC, wyświetlanie zasobów na wyświetlaczu LCD i sterowanie...
Witam po przerwie! Wprowadziłem zmiany do mojego programu: 1. utworzyłem kolejkę FIFO o rozmiarze 100 komórek (tablica 100 elementów uint32_t) 2. Timer0 generuje przerwania z określoną i regulowaną częstotliwością (np. 2 kHz) 3. w funkcji przerwania od Timera0 jest fragment kodu, który...
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...
Witam. Chciałem w celach edukacyjnych zrobić częstotliwościomierz. Ponieważ nie mam za bardzo skąd wziąć zewnętrznych impulsów postanowiłem, że jeden pin procka będzie je generował, a przerwanie int0 będzie liczyć ile tych impulsów było. Do odmierzenia czasu posłużył timer1, który ma odliczyć sekundę...
Tak właśnie myślałem że używanie przerwań i poleceń wait nie jest dobrym rozwiązaniem. Dzięki za odpowiedź. To nie ma nic wspólnego. Po to są przerwania żeby w ten sposób z nich korzystać. Natomiast twój problem bierze się z całkowicie czegoś innego. Po prostu tak napisałeś przerwanie i tak często...
No to przejdźmy do programu:) Po pierwsze z twoich kalkulacji wynika to że co 1s dioda LED ma zmienić stan a nie się zapalać. Przy zmianie stanu z częstotliwością 1Hz gdy przerwanie zmienia stan pinu to częstotliwość sygnału jaka jest na nim generowana to 0,5Hz. Nie wiem gdzie ustawiłeś to, że AVR...
Witam, Na początek przestawię kod konfiguracji timera: [syntax=csharp] LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 9); LPC_TMR32B0->TCR = 0x02; LPC_TMR32B0->PR = (SystemCoreClock/1000000) - 1; LPC_TMR32B0->MR0 = 1; LPC_TMR32B0->MR2...
Witam, na potrzeby większego projektu testuje zliczanie impulsów z czujnika szczelinowego jak poniżej: Chcę zliczać impulsy z dwóch czujników. Wykorzystuje do tego przerwania zewnętrzne INT0 i INT1, podłączając wyjścia sygnału z czujników odpowiednio do pinów PD2 i PD3. Przerwania ustawione...
Witam ponownie !!!! Kolega Zumek świetnie to napisał. Ja uwzględniłbym jeszcze czasy wykonania warunku L1=30 i sprawa załatwiona. W obsłudze tego przerwania można dopisać jeszcze dwa warunki i sterować dwoma dodatkowymi częstotliwościami. (M.) Dzięki za uznanie :) Czas "wykonania się" przerwania...
W temacie: I już widać, że wynik jest raczej mało prawdopodobny, odchyłka 1Hz jest mało prawdopodobna w zestawieniu z danymi za 2015r. Na stronie Efekty pomiarów zostały poprawione w drugim podejściu do eksperymentu pomiarowego: Zestawienie zebranych danych z danymi o zapotrzebowaniu na...
Wielkie dzięki za odpowiedź. Jeżeli chodzi o konfiguracje rejestru TCCR0 to wzorowałem się na pracy dyplomowej w której był taki zapis i działał poprawnie. Wcześniej nie używałem tego rodzaju zapisu. TCCR0=(1<<WGM01)|(1<... Rozumiem, że...
Jaka jest częstotliwość PWM, jaka ADC, a z jaką częstotliwością pracuje serwo? ADC (12 bit) pracuje w trybie freerunning, z częstotliwością próbkowania około 150 ksps, częstotliwość PWM wynosi 50 kHz, funkcja regulacji przetwornicy, czyli przerwań od timera jest z taką samą częstotliwością, co PWM,...
W poradniku Szczywronka opis konfiguracji zegara był dokładnie opisany dla STM32F103. Przepisanie kodu stamtąd powinno dać Ci poprawny wynik konfiguracji. Teraz piszę z pomocą CMSIS". Pracę z STM zaczynam zawsze od przygotowania funkcji SystemClockConfig() jak to opisano w poradniku, posiłkuję...
Witam. Mam problem z obsługą enkodera Maxon M 128-512. Problemem jest zbyt duża ilość impulsów generowana na obrót wału wyjściowego przekładni. Enkoder jest sprzężony z silnikiem MAXON A-MAX 22mm ten z przekładnia planetarną. Enkoder na jeden pełen obrót podaje 512 impulsów ( jest to maksymalna rozdzielczość...
Spróbowałem dogłębnie zrozumieć Twój program, ale mam z tym duży problem. Timer2 ustawiasz na przerwania w celu pomiaru zadanych potencjometrami wartości. Taktowany jest 16MHz / 1024 preskaler = 15.625Hz W funkcji przerwania od przepełnienia timera2 zmieniasz mu licznik na odczytaną wartość z...
Przede wszyskim sprecyzuj jakie sygnały chcesz badać - częstotliwość i szerokość badanych impulsów (granice). Od tego zależy czy wybrana metoda jest dobra. Po drugie sprecyzuj co chcesz badać - mierzysz szerokość impulsów, czy interesuje cię różna reakcja na zbocza? Wśród AVR masz różne rodziny, ATTiny,...
Witam W jaki sposób płynnie regulować częstotliwość próbkowania sygnału wbudowanym przetwornikiem? Jedynym rozwiązaniem jakie znalazłem to wyzwalanie przetwornika poprzez blok porównujący od timera MAT0.1 w trybie negowania wyjścia. Po skonfigurowaniu timera i wystawieniu sygnału na pin mogę płynnie...
Spróbuj jeszcze raz sprawdzić, czy CI kompilator nie zmienił jakichś ustawień programatora/kompilatora... I powiedz, czy wgrywasz stary hex, czy zrekompilowany w zasadzie kompilacja przebiega w taki sposób że wywołuję polecenie make z opcjami clean, all, program w zależności od potrzeb więc całe...
Już wszystko w porządku. Dokonałem zmian w programie tak jak sugerował BlueDraco i się udało :) Oto wprowadzone modyfikacje: 1) dodałem 'volatile' przed każdą zmienną i nadałem im typ uint32_t (wartości rejestrów ICR3 i TCNT3 są 16-bitowe) 2) zmieniłem preskaler z 1024 na 1 (za pomocą bitów CS3x) 3)...
Witaj. Postaram się w miarę szybko wyjaśnić algorytm działania programu. Procesor jest taktowany z częstotliwością 4MHz, i ta częstotliwość jest dzielona przez 1024 w preskalerze timera 0 - na wejściu timera 0 mamy impuls co 0.256 ms. Timer 0 jest tak skonfigurowany, że wywołuje przerwanie po jego...
BlueDraco nie w tym rzecz. Janoo0 ja steruje silnikiem za pomocą L298 i problem wydaje mi się rozwiązany (nie testowałem jeszcze wszystkich silników). Sprawa była taka że mostek może przyjąć sygnał max 50KHz, przy prescale = 1 częstotliwość PWM równa się częstotliwości krwarcu czyli 16MHz (trochę za...
Prawda, SPI1 jest taktowane z szyny APB2 która może być taktowana pełnym 72MHz. W mikrokontrolerach STM32F103 dostępne są dwa układy peryferyjne obsługi SPI. Mogą one pracować w trybie master lub slave i obsługują przesyłanie słów 8- lub 16-bitowych. Maksymalna częstotliwość sygnału...
Jeśli w tej samej cenie mogę mieć dostępne 48MHz (przykładowo STM32F0) zamiast 16MHz (Atmega8) i nie muszę szczypać się, ile taktów zajmie mi zmiana GPIO, Kiepska sugestia. 1. 48 MHz nie uzyskasz bez PLL. A dodając do siebie niepewność ze względu na PLL i cachowanie flash przy tej częstotliwości...
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...
Witajcie!! Mam taki problem: ponizej załączam mój plik źródłowy main.c , programik jest prosty, zawiera dwa przerwania jedno od timera 0 (przerwanie na narastajace zbocze CAP0.0 pin P0.2) drugie przerwanie to przerwanie zewnetrzne od przycisku (przerwanie na narastajace zbocze). Do pinu P0.2 dołączam...
Witam męczę się już od dawna z przerwaniem od timera 0. Wymyśliłem sobie że po przepełnieniu licznika 0 ma nastąpić przerwanie. Licznik 0 liczy od 0-255 chciałem miec kontrolę na częstotliwością wywoływania przerwania więc gdy przerwanie jest wykonywane wpisuję od razu do licznika konkretną liczbę tak...
Witam wszystkich! Aktualnie bawię się trybami PWM atmegi32. Na timerze0 robię phase correct pwm, zaś na timerze2 zegar systemowy. PWM jest software'owy i ustawianie poziomu logicznego znajduje się w przerwaniu od OCR0. Czas systemowy to po prostu inkrementowana zmienna globalna w przerwaniu...
Witam. Pracujesz na wewnętrznym oscylatorze z PLL co daje 32MHz ale . Timer już nie jest taktowany zegarem 32MHz ale 16MHZ FOSC/2 = TCY . Kolejna rzecz to to że chcesz aby przerwanie występowało co 125ns co przy tej częstotliwości taktowania timera jest nie realne. Przecież obsługa przerwania też trwa...
Na nie możesz policzyć? Chyba że nie wiesz jak :D Masz 8MHz. A przerwanie przychodzi z częstotliwością 125Hz (dlatego trzeba 125 razy odliczyć aby wyszła 1 sekunda). Preskaler Timera 256. 8000000/256/125 = 250. I dlatego jest Load Timer0 = 250 Teraz chcesz kwarca 7372800. Więc musisz tak kombinować...
Skoro częstotliwość jest stała to po co ją podwajać? Po prostu wygeneruj inną niezależną częstotliwość 400Hz. Wtedy wystarczyło by mierzyć wypełnienie tego pierwszego przebiegu a częstotliwością się nie przejmować. Nie mam możliwości zmiany kształtu ani też częstotliwości oryginalnego przebiegu,...
aha 2^16 no tak bo 2^8 256 bo każdy bit jest kolejną potęgą liczby 2. P.S. Jak mawia mój nauczyciel od cyfrówki każda liczba w układach cyfrowych jest potęgą liczby 2. :D A może wyłumaczyć mi ktoś tak jaśniej niż whelpie bascoma ;) co to jest ten prescaler i co on dzieli. wyczytałem na innym...
O ile dorze rozumiem idee tego przerwania (nie miałem okazji wykorzystać go w praktyce) to określona zmiana na którymkolwiek pinie z grupy wywołuje przerwanie... i teraz myślałem, żeby za pomocą prostych warunków zliczać, który wywołał i ile w danym czasie. Problem widzę w momencie, gdy przykładowo...
Pojemność kabla antenowego to typowo ok. 50pF/m. Odcinek kilkumetrowy ma więc kilkaset pF. Dobry multimetr z pomiarem pojemności powinien to zmierzyć, choć niezbyt precyzyjnie. Do twoich celów powinno to wystarczyć. Niestety, twój się do tego nie nadaje. Teoretycznie mógłbyś skorzystać z metody technicznej,...
Witam wszystkich, rzadko pisze bo zwykle jakoś sobie radzę, ale po trzech dniach walki jestem zdesperowany i zaczynam szukać pomocy u Was. Zrobiłem emulację odbierania RS232 na nóżce INT0. Zbocze opadające oznacza że mamy bit startu. Tak startuje odbieranie: [syntax=c] ISR(INT0_vect){...
(at)Marek_Gorecki Niestety, AVRy nie posiadają możliwości ustawienia czasu próbkowania. Po zmianie kanału konieczne jest odczekanie, aby układ S/H mógł przeładować kondensator. I tak jak pisze excray w dobrze napisanym kodzie nie trzeba żadnych cudów. Najpierw zmieniasz ustawienia multipleksera,...
Twoje procedury obsługi przerwań są stosunkowo długie. Np. ISR(TIMER1_COMPA_vect) trwa ok. 670 taktów zegara. Z kolei odstęp między kolejnymi przerwaniami przy zmiennej okres1=127, jak sam napisałeś, wynosi 8*128=1024 taktów. Jeżeli zmienną okres1 zmniejszysz np. do 80 taktów, to przerwania będą częściej...
Wszystko zależy od tego, jak napiszesz program oraz którego z timerów użyjesz. Nie wiem, czy przy 1 Hz (Tu spodziewam się największego błędu), otrzymasz błąd mniejszy niż 10%. Spodziewam się, że tak. Tylko po co ci tak duży zakres zmiany częstotliwości?
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...
Czyli przerzutnik Schmitt'a przed wejściami cyfrowymi i skorzystanie z pulseIn()? Koncepcja przerzutnika Schmitta wymaga koniecznie doprecyzowania. Właściwie to musisz mieć detektor przejścia przez zero (bo to jedyny punkt sinusoidy czasowo niezależny od amplitudy). Ale z uwagi na możliwość pojawienia...
Napisałem kod generowania nośnej, na oscyloskopie okres to 37us więc częstotliwość to 26kHz: (próbowałem już na różne sposoby ale nie dało się zwiększyć) $regfile = "attiny2313.dat" $crystal = 8000000 Config Pinb.3 = Output Config Timer0 = Timer , Prescale = 1 dim takt as integer Enable...
Witam! Zbudowałem prosty układ i chciałbym na nim nauczyć się dobrze obsługiwać i synchronizować przerwania. Jego głównym założeniem będzie liczenie co jedną sekundę do 99 na dwóch wyświetlaczach siedmiosegmentowych(obsługa "multipleksacją") z dodatkowymi opcjami(odebrać coś z komputera itp). Pisałem...
Witajcie ! Wracam po latach do elektroniki - kiedyś zrobiłem wykrywacz metali Stuart2 na PICu, teraz chciałbym zrobić sobie ten projekt całkowicie po swojemu, od nowa i na AVR. Czytam o programowaniu AVRa i o przerwaniach - że w przerwaniu nie powinno się umieszczać opóźnień. PRogram musi działać...
Dzień dobry. Do układu wgrałem przykładowy program, PWM input obliczający częstotliwość, dostarczony do STM32F4-Discovery. Zamiast licznika TIM4 wykorzystałem licznik TIM5. Układ działa prawidłowo. Oblicza właściwą częstotliwość Inicjalizacja licznika: 2. Configure the Time base unit as...
Środowisko CooCox CoIDE [syntax=c]void TIM2_IRQHandler(void) { /*Pewne obliczenia*/ //minęła sekunda wysyłamy zmienną _x; if(i>99) { GPIO_ToggleBits(GP... GPIO_Pin_13); if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) { TIM_ClearITPendingBit(TI... TIM_IT_Update); USART_putint(USART2,...
Hej :) Chcę podłączyć 3 czujniki odległości do kanałów ADC (porty PA1, PA2, PA3) i odczytywać z nich pomiary przez cały czas. Ponieważ po przetestowaniu czujników doszłam do wniosku że pewne czynniki wpływają na niestabilność pomiaru, chcę jako ostateczny wynik wziąć średnią arytmetyczną z 8 pomiarów...
Próbowałem wyjść z tego, że jeśli prąd nie płynie w obwodzie z żarówką, to wtedy musi popłynąć gdzie indziej. Nie musi. Musisz wykrywać prąd żarówki - pytanie, jakie on ma mieć natężenie? Czujnik Halla, czy kontaktron wykrywają pole magnetyczne wytwarzane przez prąd. Można też wykrywać spadek napięcia...
Jest jeszcze inny sposób. Procedura generująca okres pomiarowy (1 sekunda, czy 0,1s czy podobne), lub przerwanie, powinno mieć możliwość zmiany czasu trwania w trakcie pracy. Zrób sobie gdzieś w RAM'ie komórkę na dane kalibracyjne, a w programie sterującym dopisz fragment umożliwiający zmianę tych danych....
Witam ! Posiadam dwuzakresowy radiotelefon lpd/pmr. Postanowiłem rozszeżyć zakres częstotliwości tego radia. Odłączyłem magistrale syntezy od procesora i steruje nią zewnętrznym procesorem 89c2051 zaprogramowanym w bascomie. Działa idealnie , uzyskuje każdą częstotliwość od 430 do 450MHz. Chciałbym...
Witam! Od kilku dni siedze i nie mogę nic wymyśleć :( Bez ogrudek - podaje źródło: $regfile = "m16def.dat" $crystal = 8000000 'definiowanie zmiennych i stałych Dim T As Integer Dim Licznik_przerwan As Byte Dim Dioda As Bit 'konfigurowanie interfejsu 1Wire Config...
Ale wtedy sprzętowo nie zrealizuję zmiany stanu na pinie wyjściowym i zostają mi tylko przerwania i programowa zmiana stanu, tak? Czyli nie ma odpowiednika CTC w STM? Wybacz może głupie pytania, ale w porównaniu do AVR jest tego sporo, a siedzę 3 dzień dopiero. Albo jakbym wpisywał jednocześnie...
Próbuję wyciągnąć z DAC MCP4725 maksymalną możliwą częstotliwość. I2C taktuję 400kHz. Dla prostokąta wyciągam maksymalnie 5kHz a dla sinusa z załączonego programu 300Hz. Gdzie popełniam błąd? Biblioteka I2C pobrana stąd: Jedyna zmiana to zmiana prędkości transmisji I2C na 400kHz.
"Program i założenia są błędne". ;) Ponadto w programie jest jeszcze jeden paskudny błąd: z powodu operacji logicznych na portach w obsłudze przerwania, opercje na portach w pętli głównej muszą być wykonywane w sekcji krytycznej - przy zablokowanych przerwaniach. Inaczej zawartość portu będzie modyfikowana...
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...
Witam serdecznie! Od niedawna uczę się programowania uC w C i postawiłem sobie za zadanie obsłużenie przerwania INT0. Obsługa ma polegać na zapaleniu diody po naciśnięciu guzika podłączonego do INT0 i jej zgaszeniu po puszczeniu guzika. Poczytałem trochę forum i znalazłem GIMSK |= 1<<INT0;...
Dzięki za zainteresowanie tematem. Rzeczywiście mogłem lepiej opisać problem na samym początku. Już naprawiam błąd. System wygląda w ten sposób, że Atmega128 taktowana sygnałem o częstotliwości 14.745600 MHz (F_CPU = 14745600) podłączona jest bezpośrednio do 3 osiowego drivera silników krokowych TB6560....
Umieściłem wszystko w przerwaniu ale dalej miga, pomaga tylko zmiana preskalera np na 64 ale to nie jest rozwiązanie bo ewidentnie przy preskalerze 256 powinno działać bez żadnego migotania. Zauważyłem, że jak ustawie taką samą częstotliwość przy preskalerze 64 i 256 np ok 490HZ czyli dla preskalera...
Napisał, że program nie działa tak jak chce, ale nie napisał czy w jakikolwiek sposób sprawdził czy układ wykonuje obsługę przerwania. Choćby przez zapalenie LEDa. W podanym przykładzie zmiana częstotliwości nastąpi dopiero po 15 sekundach. Czy autor czeka tyle? A może fusa ma ustawionego na 1Mhz...
(at)albertb: Zwróć uwagę, że ja także podaję to jako alternatywę nie krytykując Twojego rozwiązania. Przepraszam, nie chciałem nikogo urazić czy krytykować. Sam początkowo pomyślałem: przecież to banalnie proste, więc w czym problem. Zacząłem kombinować podobnie jak Ty, ale właśnie napotkałem problemy,...
Ręce mi już opadają... Zacząłem się bawić ADC, ale nagle coś mi się stało z wyświetlaniem. Mam teraz taką obsługę przerwania: [syntax=c]ISR(TIMER0_COMP_v... uint8_t dzialanie=0; static uint8_t licznik=1; static int j=10000; WYS_PORT = ~licznik; int temp=liczba%j; if(j==10000) cy1=(tem...
Tak wiem, dotarło to do mnie co napisałem jak już opublikowałem post. Prescaler ustawia tylko częstotliwość występowania przerwań. No tak... przerwanie trwa tylko tyle czasu ile potrzebuje na wykonanie instrukcji... Dobra, to da się to w ogóle jakoś osiągnąć poza zastosowaniem zmiany stanu ^= w przerwaniu?...
zgłaszam się po weekendzie mój program po sugestiach kol. ZbeeGin wyglądał jak poniżej nie zdążyłam jeszcze wstawić poprawki którą zasugerował jako ostatnią $crystal = 16000000 $regfile = "m16def.dat" Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7...
... z resztą jest o wiele szybszy niż lcd więc to chyba nie kwestia zbyt szybkiego wysyłania. . Nie jestem pewien czy to będzie to - ale z tym zdaniem, że jest o wiele szybszy to bym się nie zgodził tak do końca bo wprawdzie minimalny czas (E)nable Pulse Width 450ns jest podobny jak w innych typowych...
Przecież diody sterowane w pętli głównej nie mają zmieniać stanu co 1000 ms, tylko po odczekaniu 1000 ms od ostatniej zmiany. To opóźnienie nie uwzględnia innych czynności wykonywanych przez procesor, np. obsługi przerwań timera. Przy preskalerze 256 okres zgłaszania przerwania byłby zbliżony do 1s...
Wirnick: Ustawienie ICR1 jest dziwne, ponieważ niema ono żadnego wpływu na dalsze działanie mikrokontrolera (przynajmniej w trybie Fast PWM 8bit ). Myślę, że dla autora lepsze by było zwykłe Fast PWM , mógłby wtedy lepiej wyregulować częstotliwość dla serwa (która powinna wynosić 50Hz , a przy...
W C jak najbardziej da się to zrobić - przynajmniej 80 średnio gęstych linii. Jak to zrobić? Programujesz timer na zgłaszanie przerwań ze stałą częstotliwością rzędu 50..100 Hz. W przerwaniu timera sprawdzasz stane wejść, odliczasz czasy na zmiennych i sterujesz stanem wyjścia. Podejrzewam, że...
1. Uzyj tagów syntax zeby sie dało czytać. 2. Czytasz adc wszędzie w przerwaniu - w pętli głównej - tak niestety to nie zadziała (zastanów co się dzieje jak w trakcie czytania adc w petli głównej nastąpi przerwanie a tam znowu adc z innego portu, a potem powrót do środka funkcji czytającej adc. 3....
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. Aktualna...
2,5 oma podłączone do zasilania 8V pobrałoby prąd 3,2 A - czy taki prąd płynie, jak nie pozwalasz na przerwanie połączenia? Taki prąd płynący przez cewki mające w sumie 608 zwojów ze szczeliną 2,3 mm powinien wytworzyć pole około 1 T i siłę przyciągania (przy przekroju końcówek rdzenia po 50 mm2)...
Platon powiedz ty mi jak niby ma liczyć czas przerwaniami jak on się nie zmienia niezależnie od tego jak ustawie częstotliwość procka, a już na pewno nie w laptopach gdzie ta częstotliwość może się zmieniać dynamicznie w zależności od zapotrzebowania (dla oszczędności baterii) . W zastępstwie ja wytłumaczę...
Witam, mam problem z poprawną konfiguracją modułu Bluetooth. Chodzi o to, że na przetwornik ADC wyzwalany timer1 podaje sygnał z GPIOB i chcę próbkować go wg ustawień timera z częstotliwością co najmniej 500Hz. Dane pobierane są z rejestru ADC przez DMA do zadeklarowanego wcześniej buforADC (unsigned...
muszę to zrobić poza przerwaniem, lub w innym miejscu, jeżeli dalej chciałbym zachować taką funkcjonalność - możliwość zmian. Oczywiście że możesz poza przerwaniem. oczywiście z głową. pozatem masz mnóstwo innych timerów.
Robiłem taki i faktycznie działa, nie migota. Tylko mam właśnie problem z tym że w zależności od godziny, różne diody się będą świecić (będzie ich więcej niż 3). Czyli będę musiał i tak umieścić show() w loopie, co spowoduje że będzie migotać. I dlatego nie wiem do końca jak to powinno wyglądać W...
Rozumiem, postaram się poszukać parametru odpowiadającego za częstotliwość odpytywania. Dobry pomysł z wierSharkiem, dawno tego nie używałem ale zainstaluję i nawet z czystej ciekawości sprawdzę Biblioteka mojego modbusa to: MODBUS.h Dodano po 2 Niestety nie znalazłem informacji o częstotliwości...
repeat equ 8 ; bajt zmniejszany o 1 po kazdym wykryciu wcisniecia klawisza keyboard equ 9 ; bajt z kodem klawisza (255 - nie wcisnięty) faza equ 0 ; bit informujący czy klawisz jest wcisnięty; jesli nie, to faza = 0 keys_delay_1 equ 20 ; czas w...
A czym to łapiesz, bo te piksele graniczne, to może być błąd (rozdzielczość) pomiaru. Dobry oscyloskop powinien sprawę definitywnie wyjaśnić Na razie dokładnie pixele oglądam na LCD 21' (oczywiście za pixel biore R+G+B). Spróbuje pomierzyć na oscyloskopie dokładnie odstępy czasu pomiędzy zmianami...
Propozycja z 2 timerami może jest koncepcyjnie prostsza, ale zobaczmy - zalecana fext dla timera powinna być < fclk/2.5, czyli TOP timera generującego ustawiasz na min. 2 -> fext = fclk/3 (wypełnienie 1/3 lub 2/3). Stąd widać, że potrzebujesz 3x większej częstotliwości zegara niż w przypadku rozwiązania...
Witam, teraz pokażę jak tymczasowo uprościłem sprawę (chociaż niekoniecznie dobrze, ale teraz teoretycznie zniknęły problemy z atomizacją itd.). Martwi mnie jednak, że korzystając ze swojej tablicy, jak od przychodzącej nutki zamiast 24 odejmę 27 (trochę inna generowana częstotliwość), wówczas wolnozmienne...
No ale co ja na ten moment mogę więcej dodać? To, co wrzuciłem w trzech wersjach to praktycznie cała funkcja main(); . Kod do obsługi TWI i wstępną inicjacje proca mam takie: sei(); powoduje restart, tylko po jej zastosowaniu program dochodzi do momentu, gdzie powinien nastąpić odczyt z magistrali...
Potem calosc zestroilbym dodajac nopy i ewentualnie korygujac minimalnie timer Jak czas odmierza timer, to nop nie nadadzą się jako coś do korekcji częstotliwości.[/quote] Nie chodzi mi o korygowanie chwili wystapienia przerwania,lecz o dokladny moment zmiany stanu portu w procedurze obslugi...
Możesz nieco rozwinąć temat? Na początku próbowałem w programie zliczać stany na pinach procka, ale to była zupełna klapa, bo gubił kroki niemiłosiernie. Rozumiem, że proponujesz aby licznik sprzętowo zliczał zmiany na określonym pinie. Nie bardzo rozumiem "użyj jednego, np. 800 Hz - co 80 przerwań...
To nie będzie działać. Zacznij od określenia maksymalnej częstotliwości impulsów i minimalnego czasu trwania impulsu. Zaprogramuj timer na zgłaszanie przerwań z okresem nieco krótszym niż minimalna szerokość impulsu. W przerwaniu timer sprawdzaj stan wejścia i porównuj z poprzednim stanem. Przy wykryciu...
1. Uruchomiłem timer z przerwaniem i liczę nim do przepełnienia, czy włączam zmianę czy nie częstotliwość generowana na pinie portu jest ta sama - pomiar oscyloskopem. 2. No tak, to sprawdzę. 3. Czyli jeśli sygnał zegarowy pobieram z zegara RC2MHz to mam taktowanie 2MHz z PLL a jeśli taktuję RC32MHz...
W działaniu procesor ma zmieniać stan portu PD0 i tego nie robi. Sprawdzałem na żywym organiźmie, na symulatorze podobnie (AVR Studio 4.18, WinAVR-20100110). Timer w trybie pracy "frequency generation mode". Chodzi mi o to, by po przepełnieniu licznika nie trzeba było wywoływać przerwania, a...
Zauważyłem ciekawe zjawisko, otóż jak podłączyłem generator sygnału z multimetru do jednego z wejść T0CR0, to zauważyłem że pomiar dokonuje się z błędem. Multimetr pokazuje że generowany jest sygnał 10Hz, a mój procesor pokazuje 15Hz, dla 50Hz z multimetru procesor pokazuje 75Hz... dla 1010Hz z multimetru,...
Czy może jest jakieś oczywiste rozwiązanie, które zrobi to czego oczekuję na atmedze328, tylko go nie dostrzegam? Tak, zwiekszyc długość timera software'owym licznikiem, przy takich częstotliwościach możesz zmieniać stany na portach programowo, w przerwaniu timera, jeśli nie przeszkadza ci związany...
Witam. W celu sprawdzenia układu wykonaj poszczególne testy: 1) od wyjścia licznika odłącz rezystor w bazie klucza i podaj na niego +zasilania (na wolne wyprowadzenie rezystora). Dioda świeci -> OK Brak świecenia diody -> odwrotnie podłączone LED (zamiana anody z katodą ) lub tranzystory. 2)...
Więc tak... Po zaproponowanych Twoic zmianach program wygląda następująco i działa: #include <8051.h> #include <stdio.h> #define PortLED P2_0 #define TH0RELOAD 0x4B #define TL0RELOAD 0xf0 unsigned char SECOND=20; //1sek to 20 przerwan od Timer unsigned char count; void...
Nie jesteś zbytnio wymowny, nie powiesz szacunkowo z jaką częstotliwością miga dioda, więc sprawdź jeszcze takie coś: #define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> unsigned char tovs; SIGNAL(SIG_OVERFLOW0)... tovs++; // zmiana stanu co 16...
Przecież kolega (at)_Robak_ wypowiedział się już, że nazywanie tego reakcją na zbocze jest mocno przesadzone. Realnie więc jest to reakcja na zmianę stanu pinu. Teraz wypadałoby, aby autor tematu odpowiedział na zadane już pytania: Z jaką częstotliwością jest sygnał, na którego zbocze ma reagować...
Nie jestem pewien, ale może się rozchodzić o różną częstotliwość względem napięcia zasilania. Mam na myśli że jak ustawisz 8MHz to w zależności od Vcc i temperatury możesz mieć np: 3% mniej czyli ~7,75MHz, zaznaczone jest to w dokumentacji na wykresach od strony ~275. Mogło by to powodować kilka sekund...
Proponujecie zmianę platformy, wymianę procesora. Ja tymczasem chciałem dowiedzieć się zupełnie czegoś innego. Głownie chodzi o oszczędne generatory pracujące z małymi częstotliwościami. P.S. Tak, używam 2313A.
No to jeszcze zmień zamiast: Kod: vbnet Trafna uwaga, o tym zapomniałem. I to rozwiązało problem :) ‘Stop Timer2 – nie jest potrzebny bo później potrzebujesz go ponownie startowac. To akurat tak samo jak deklaracja zmiennej "last" jako integer-na przyszłość. W finalnej...
Po pierwsze aktualizacja CCRx powinna następować w pewnych określonych momentach. Dlaczego: wyobraź sobie, że licznik jest np równy 100, CCRx 105. Tym momencie zmieniasz ten CCRx na 99. Co się dzieje. Licznik będzie liczył do końca, przekręci się i doliczy do 99 - dając takie PWM o innej częstotliwości....
Baza tego tranzystora jest bez polaryzacji wstępnej dlatego zwieranie jej do masy nic nie daje natomias połączenie do + powinno dać zmianę stanu w C jeśli występuje na nim napięcie na luzie.Jeśli nie to rezystor jest uszkodzony lub jest przerwana ścieżka.Składowa stała (o odpowienio wysokim poziomie...
Przerwanie od OCR1A masz w momencie gdy OCR1A zrówna się z TCNT1. Czyli jak OCR1A ma jakąś małą wartość to przerwanie wystąpi szybko. Ale równocześnie więcej cykli zostanie do końca cyklu PWMa (bo TCNT1 i tak musi doliczyć do 255) więc do kolejnego przerwania będzie tak samo daleko. Czyli mimo małej...
No toż pewnie, że możesz używać tzn odczytywać wartości z latającego licznika. Ale jeśli zaczynasz się już nim bawić w ten sposób, że chcesz go resetować w locie (czyli zapisywać), że chcesz zmieniać preskaler na inne wartości niż ustawiony został za pomocą polecenia ConfigRC5 (a został tylko ty tego...
Reset CMOS nie pomógł (ani przez ustawienie defaults w BIOS, ani przez odpięcie bateryjki od płyty). Z baterią niestety zachowuje się tak samo, po podmianie procesora na T4500 również bez zmian. Przy okazji odkryłem ślady zalania na płycie, więc koniec testów. Z czystej ciekawości: T4500 ustawił...
A zmieniłeś Timer na Timer1? Przecież bez tej zmiany Timer nie jest ładowany i zlicza nie 1000 lecz 65536 cykli. Co daje właśnie około 64-krotne spowolnienie. Zmieniłem i nie pomogło, ale to dobry trop. Zauważyłem ze niezaleznie jaką wartość wysyłam do timera, 10, 1000 czy 10000 zawsze przerwanie...
Panowie, zdaję sobie sprawę z niedoskonałości takiego rozwiązania - dla tego nieco napisałem o źródle taktowania dla miernika. Czym lepsze źródełko tym pomiar ma więcej sensu. Jeśli zastosujemy dobry generator nawet bez kompensacji temp to już będzie o niebo lepiej. Po za tym porobiłem trochę testów...
Dziś zrobiłem kolejny test. Cały program zmniejszyłem tak aby załadować go do pamięci SRAM. Żadnych peryferiów, żadnych timerów, żadnych przerwań. Procek skonfigurowany na 200MHz (198.656). W main'ie tylko tyle: Dodano po 1 I jeszcze jeden test. Uruchomiłem timer na 1Hz w którym...
w poprzednim poście pisałem o obrazowym przykładzie, niemniej jednak tak wygląda fragment kodu programu (obrobiony bez innych zmiennych żeby nie mieszać). [syntax=c] if (stan==1) { j=0; // numer pozycji bufora pozycja=j; f_zmiany=0; // wylaczenie flagi zmiany...
Jak przeliczysz sobie sygnał sterujacy to potem tylko prostym równaniem ustalasz czas przerwania. I program wchodzi w pętlę naprzemiennie, właczając, czekajac i wyłączajac, czekając. Co powiedzmy sekundę powinien sprawdzić czy sygnał sterujacy uległ zmianie.
Dobry wieczór. Przepraszam za tak dużą zwłokę, ale ostatnio miałem zakuwanie na egzaminy szkoleniowe do pracy i nie miałem kompletnie czasu by myśleć o tym:( Musiałbyś pokazać przykład swojego programu. Najpewinej efekty o któych piszesz wynikają z tego, że nie korzystasz z peryferii mikrokontrolera...
Okolice 100us przy odczycie analoga to w Arduino przyzwoity czas loop. W poprzednim programie loop rozwala Ci delay(BOUNCEDELAY);, użyj gotowej biblioteki bounce2 czy easybutton. Nie musisz wszystkich czynności wykonywać w każdym obiegu loop, sprawdzanie wejścia analogowego raz na 10-100ms jest w zupełności...
Na początku kolega mipix podał świetna myśl - żeby napisac ten soft od początku na nowo. W sumie zajmie to na pewno o wiele mniej czasu niż przerabianie tego kodu powyżej, bo najpierw by trzeba trochę posiedzieć i przeanalizować dokładnie ten kod, w porównywalnym czasie można napisać nowy soft wg własnych...
Pokolei: Aby podzielić częstotliwość na pół najprostsze rozwiązanie to licznik do 2. Na wejście dajesz sygnał generowany przez siebie, a przeważnie licznik ma detekcje narastającego zbocza. Sygnał na wejściu licznika wygląda tak (A): liczy do 2. Po zliczeniu wystawia bit na nogę Done (B). Jednocześnie...
Kolego wysil się trochę... Co oznacza "nie zlicza co do 1ms" - napisz jakie są efekty. Co za procesor, jaka częstotliwość taktowania, czy zmieniałeś fuse bity itp. Tak na szybko to zm. licznik powinna być zadeklarowana jako volatile short int licznik; Poza tym zanim wyświetlisz całą liczbę, to...
Rozumiem, nie zmieniałeś jeszcze zasilacza? Ja już słyszałem te zakłócenia przy różnych okazjach. Np. ostatnio słyszałem coś takiego przy ruszaniu myszką Z WNĘTRZA zasilacza (zbyt mocnego na liniach 12v i nieprzystosowanego do przestarzałej platformy) fortron 600w na płycie ...pentium II. Także jest...
znam czas wykonania rozkazów w taktach, wiem, ze przy częstotliwości 20MHz takt wynosi 50ns. Tyle to mogę sobie policzyć, chodzi mi o to czy faktycznie po wykonaniu instrukcji od razu mamy odpowiedni stan na nóżce układu czy jest jakieś jeszcze opóźnienie. Co do oscyloskopu... trzeba go posiadać a aby...
Ale co Wy. Bezwładność termiczna pomieszczeń jest ogromna, nie ważne czy grzejemy 10 czy 18kW jedynie szybciej dojdziemy do zadanej temperatury. Oczywiście, ale równocześnie zwiększy się histereza lub częstotliwość taktowania. Przy grzaniu idealnie dopasowaną mocą histereza wyniesie 0 czyli temperatura...