Znaczy toglowanie nie jest docelową instrukcją. Zostało dodane w celu debagowania na oscyloskopie. Procesor docelowy ATMega32 bo takie akurat mam w zapasie. Przeanalizuję ten przykład kodu, popróbuję testować i zobaczę co wyjdzie. Po dodaniu volatile wszystko działa poprawnie. Mam dokładnie...
a ta się to jakoś ustawić rejestrami żeby zmieniało ?? Kopiowałem gotowe przykłady ale niestety mam w domu wiec nie wkleje kodu ale to wygląda mniej więcej tak: volatile unsigned char EKRAN TIMSK = _BV(TOIE1); // włącz obsługę przerwań T/C1 TCNT1 = 0xFF00; // wartość początkowa...
Mam problem z przerwaniem od Timera0. Chodzi o to by Timer0 zgłaszał przerwanie w trybie pracy z porównaniem. Jest to tryb Clear Timer on Compare Match (CTC). Licznik zlicza zdarzenia zewnętrzne i w momencie zliczenia do zadanej wartości ma zgłosić przerwanie i zacząc liczyć od zera. Aby to osiągnąć...
Czym ty sie martwisz M32 ma 2 kb ram to dasz na stos 1kB i w zyciu sie nie przepełni chyba że specjalnie napiszesz złe obsługi przerwania, ale to też trzeba umieć zrobic.
Witam, Problem z którym się spotkałem jest co najmniej dziwny i nie moge rogrzyc co moze byc jego przyczyną, podejrzewam przerwania. Od niedawna programuje uC, więc proszę o wyrozumiałość. Mianowicie: Przed dodaniem PWM na OC1A (PD5), wszystko działało ok (tak przynajmniej wyglądało). Zastosowałem...
Witam serdecznie, piszę obecnie w Bascomie dość rozbudowany projekt na Atmegę32 używający przerwania Timera T0 oraz komunikacji z drugim mikrokontrolerem za pomocą kontroli przerwania Urxc i bufora nadawania. Projekt nie używa procedur ani funkcji zawierających zmienne lokalne ani skoków Gosub. Jedynym...
Hej Już teoretycznie wiem o co chodzi. Odwiedziłem FAQ i znalazłem coś takiego: //PWM dla wyjscia PB3 (OC1B). //PB3 wyprowadza sygnal PWM, ktory nalezy podac na uklad calkujacy RC, aby otrzymac sinusoide. //Zastosowano AVR ATtiny26. #include <avr/io.h> #include <avr/interrupt.h> #include...
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...
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...
Witam, Od jakiegoś czasu próbuję obsłużyć interfejs SPI na uC ATMega32, ponieważ chcę sterować potencjometrem cyfrowym. Mam problem w sprzętowym SPI. Napisałem program testowy. Ma działać następująco: co 100ms (stała INTERWAL_RAMEK) ma nadać ramkę danych oraz zmieniać stan PA0 na przeciwny. W zależności...
Drodzy koledzy, procesorami AVR od bardzo niedawna się zajmuję i w związku z tym zadam jedno małe pytanko. Otóż czy obsługa magistrali I2C może być bez zakłoceń wykonywana w w przerwaniach procesora. Pytanie może jest naiwne ale widzę że system potrafi mi całkowicie zgłupieć. INT0 zajmuje się u mnie...
Atmega 32, program obsługujący klawiaturę - 4 przyciski, odczytywane co 20 ms ( co któreś przerwanie timera 1), przyciski podpięte pod PC), PC0,PC1,PC2,PC3. jeżeli w programie wykorzystuję PC0 i PC1 to jest ok , ale jeśli w pętli obsługi przerwania odczytującego klawiaturę sprawdzam stan przycisków...
Na szybko: W kodzie przerwań masz _delay_ms(). Zmień kod tak aby w przerwaniach tylko przechwytywać zaistnienie zdarzenia i całą obsługę zrób w głównej pętli. Jeśli masz tak równe odcinki czasu (50ms i 500ms), to zamiast głównej pętli możesz też zrobić przerwanie timera. Ogólnie: Przerwania...
Pomijając już opóźnienia w obsłudze przerwania i użycie przestarzałej funkcji obsługi przerwania (SIGNAL),ta linijka while(!(PIND & 0x04)) {} powoduje zawieszenie się programu w obsłudze przerwania, kiedy na PIND4 pojawi się logiczne 0. Ja napisałbym to w ten sposób: ...
W kodzie, który pokazałeś, przerwanie timera jest w zasadzie niepotrzebne (bo nic istotnego nie robi), a przerwanie INT0 jest źle napisane (nie wolno w przerwaniu czekać, a Ty wysyłasz w nim długie łańcuchy, więc procedura wykonuje się bardzo długo, a w tym czasie inne przerwania wiszą, kod poza przerwaniami...
Pokazaną tam funkcję (ReadEncoder) po prostu zamień na ISR z przerwań enkodera, albo zrealizuj obie funkcje oddzielnie - tzw. wykorzystaj przerwania do wybudzania, a odczyt enkodera zrób niezależnie od przerwań pinu, np. w przerwaniu timera
return przydałby się na końcu. I zacznij stosować ISR() Matko boska! tadzik weź ty się ze 4 albo 6 razy zastanów jak coś podpowiesz - RETURN w procedurze obsługi przerwania w C ????? Chyba że ty piszesz swoje programy w Bascomie ze wstawkami w C albo odwrotnie. do autora - żadnego polecenia...
chciałem zrobić wstawkę asemblerową dla watchdoga ale to już nie istotne bo nauczyłem się ustawiać poszczególne bity w rejestrach i rozumiem że to wystarczy... ale problem istnieje przesiadłem się na atmega1284p tu jest watchdog do 8 s no i dla 8 nie działa 4,2 i 1s również nie działa, działa dla...
Poszukaj haseł: "wyświetlacz multipleksowany" i "przerwanie timera". Kod, kt'óry napisałeś, daje zmienną jasność obu cyfr i "duchy", czyli cienie cyfr na niewłaściwych pozycjach.
chyba najprościej zastosować przerwanie timer-a , wtedy procek będzie miał czas na wykonywanie innych operacji
Próbowałem już wszystkiego, pisząc przy tym chyba z 20 wersji programu. Niestety nic nie pomogło. Siedzę nad tym już kilka dni, dlatego zwracam się z ogromną prośbą o pomoc. Kwestia wygląda tak: Układ mam zbudowany na bazie (układ detekcji zera+sterowanie z triaka - ten schemat zdaje się został wzięty...
1. To musi być zrobione w przerwaniu timera. 2. Trzymaj dane w takiej postaci, żeby nie wyświetlać bit po bicie (Twoje 19 ifów to zabójstwo dla procesora), a zamiast tego wykonywać dwa proste zapisy do portów.
Testuj przycisk w przerwaniu timera i np. ustawiaj znacznik zmiany czujnika. W pętli głównej testuj znacznik i po ustawieniu wyświetl następny czujnik i wyzeruj znacznik.
Fajny przykład jak nie pisać programu reagującego na przyciski... ;) Trzy zbędne znaczniki, zbyt długie oczekiwanie itd. Przecież wystarczy w jednej linijce kodu wywoływanego w przerwaniu timera wykryć zmianę stanu przycisku przy pomocy jednej dodatkowej zmiennej, a pod if() umieścić całą reakcję na...
Dzień dobry! Mam taki o to problem, przerzuciłem notę ale nie mogę jakoś ogarnąć jak uruchomić drugi timer 8 bitowy, przykładowo: Proszę pamiętać o używaniu znaczników syntax . Opcja Listing kodu . - arnoldziq
Witam. Piszę program do obsługi LCD. Piszę w asm i pod ATmega32. Przerwy czasowe chcę zrealizować za pomocą liczników. Program dla sprawdzenia inicjacii - nie pełny i nie działa właściwie - napisany dla próby. Napisałem początek programu i chciałem go zasymulować ale wciąż pojawia mi się ten sam...
Witam, mam mały program napisałem przy użyciu książki Pana Marcina Wiązania oraz przy użyciu elektrody do obsługi matrycy led, lecz mam nieporządany efekt stroboskopowy. Nie widać liter, tekstu, tylko wszystkie diody mrugają. Czy to jest spowodowane zasilaniem czy też błędem programu? Dorzucam dwa...
Zmieniłem kod i zamiast: Nadal masz jeszcze parę błędów np w przerwaniu ustawiasz flagę w main ja kasujesz a nigdzie nie sprawdzasz więc po co ona. flag = 0; flag = 1; ) i kolejny błąd najpoważniejszy nie masz warninga z tego powodu ?? #define F_CPU 11059200UL ) kolejny...
Witam, mam jakiś błąd w sofcie, który powoduje, że po odłączeniu i włączeniu zasilania program nie działa prawidłowo. Zresetowanie atmegi bez odłączenia zasilania powoduje że wszystko chodzi już dobrze. Próbowałem różne ustawienia fuse'ów, kwarc 12MHz, CKOPT włączony, ustawiony najdłuższy możliwy czas...
Od razu mówię, że tego nie kompilowałem a pora jest późna, więc mogą być drobne błędy. Generalnie jednak wygląda to tak: #include <avr/io.h> #include <avr/interrupt.h> volatile char a; //tak deklarujemy zmienne, które są używane i w kodzie //obsługi przerwania i w "standardowym"...
Problem wygląda następująco. Pisze program na atmega32, gdy zostaje wywołane przerwanie od porównania dla timera 0 to program się restartuje. Jednocześnie, gdy zdefiniuje funkcje ISR(BADISR_vect) to wlaśnie ona jest wykonywana zamiast funkcji od timera :/. Gdy próbuje wywoływać przerwanie od przepełnienia...
Nie tędy droga, Ty musisz zrobić coś dokładnie odwrotnego - nie wygenerować sygnał, ale go zmierzyć. Rozwiązania są 2, ale jeśli programujesz w bascomie i nie masz ochoty na operacje na rejestrach w procesora to kurczą się do jednego. Mianowicie: 0. ustawiasz timer na zliczanie impulsów i zmianę wartości...
Witam. Potrzebuję napisać funkcję która zainicjalizuje Timer w Atmega32 (asynchroniczny) tak, by działał z zewnętrznym kwarcem 32,768kHz podłączonym pod TOSC1/TOSC2. Timer ma zgłaszać przerwanie co 1 sekunde. W przerwaniu powinien zmieniać stan diody na pinie PD0 na przeciwny. Proszę o pomoc...
cześć, od kilku miesięcy robie z kumplem skaner 3D. Wszystko już mamy, jednak okazało się, że silnik krokowy, który używamy ma za małą rozdzielczość i trzeba zrobić sterowanie przez mikrokroki. Od piątku siedze nad datasheetem, tutorialami etc. i nic nie wychodzi (przerwanie SIG_OVERFLOW0 nie jest wywoływane)....
Trochę hmmm mało szczęśliwa ta obsługa RC5. Zwykle robi albo powiem inaczej warto robić na przerwaniach zamiast wszystko w pętli głównej bo działa to zdecydowanie wtedy lepiej. Już samą tą procedurę można byłoby mocno uprościć, żeby nawet nie korzystać w ogóle z procedury obsługi przerwania, bo po...
Witam, ostatnio podłączyłem do Atmegi wyświetlacz od nokii 3310 i postanowiłem pouczyć się trochę timerów i przerwań. Chciałem napisać prosty programik liczący impulsy i wyświetlać je na LCD. W przerwaniu od INT0 zliczam impulsy, a w drugim przerwaniu co sekundę przepisuje ilość impulsów do zmiennej...
Witam Zmontowałem sobie układ Atmega32 z pojedynczym wyświetlaczem 5x7 i wszystko działa tak jak należy ale problem zaczyna się w innym miejscu. Potrzebuję połączyć 3 takie wyświetlacze, lecz nie mam pojęcia w jaki sposób to zrobić. Proszę o pomoc Tutaj podaję listing programu
Witam. Problem który mi się nadarzył był już poruszony na forum (czyli nie jest to odosobniony przypadek), niemniej pozostał bez zadowalającej odpowiedzi. Mianowicie, w ramach przetestowania przetwornika podaję mu napięcie z potencjometru. Przy małych wartościach napięcia (nieco wyższych od zera)...
Nie jestem za biegły w timerach i się ciut pogubiłem. Proszę zatem o podpowiedzi. Próbuję ustalić ile czasu będzie trwał impuls podawany na INT procesora a jednocześnie zmierzyć czas od początku tego impulsu do początku następnego. Jednym uP podaję impulsy na drugi uP. Do Portc.7 = 0 ...
Nawet jak nie masz kwarcu zegarkowego, to zawsze można zastosować np 4MHz :] ustawiasz timer z prescalerem = 1 , czyli timer zwiększany będzie co 0,2500 us jeżeli ustawisz przerwanie od przepełnienia timera (timer 8bitowy np 0 lub 2) to przerwanie będziesz miał co 0,0640 ms, wystarczy w przerwaniu zliczać...
Witam. Gdzieś w tym kodzie popełniłem błąd ale pomimo kilkukrotnego sprawdzenia nadal nie potrafię odkryć czy błędnie zapisuje dane czy błędnie je odczytuje...może ktoś mógłby wskazać "usterkę" w tym programie.? [syntax=c] //=============...
sylwek2293 - jak masz to zrobić odpisał ci już inny sylwek :-) Najprostsza opcja to użycie timera w wersji 8 bit lub 16 bit. Gdy timer się przepełni to wygeneruje ci przerwanie, w tym przerwaniu odblokujesz pin który zbiera informacje. Aby w miare odmierzyć 2 sekundy to po każdym przerwaniu powinienes...
Witam, mam problem z projektem. Za pomocą czujnika odległości mam wywołać rozjaśnienie, lub ściemnienie diody led w zależności od tego, jak blisko jest wykryta przeszkoda. Ustawiłam pomiar, który aktywowany jest w momencie, gdy zostanie wykryte przerwanie. Timer liczy czas i konwertuje go na wartość...
Witam, na zajęciach otrzymaliśmy projekt "kalkulator z wykorzystaniem klawiatury 4x4" ma to być najnormalniejszy w świecie kalkulator a klawiatura ma odpowiadać za klawiaturę numeryczna + wybór działania(czyli np 2+2 =) powiem szczerze że już nie mam pojęcia, doszedłem do punktu wrzenia. Proszę o...
Witam ponownie, Dziękuję za odpowiedzi, bardzo mi pomogły - zmniejszyłem rozmiar zmiennych, przez co zmniejszyłem czas przerwania (przynajmniej taką mam nadzieję), rozbudowałem trochę program. _delay_ms(40) stosowałem żeby przycisk po zmianie stanu nie "iskrzył" Niestety problem znów się pojawił: Program...
Witam, Jestem na etapie tworzenia kodu programu sterującego układem nadążnym typu solar track. Wykonałem już całą mechanikę systemu oraz fizyczną warstwę układu sterującego (obwód drukowany z wszystkimi elementami). Układ sterować ma mostkiem H (silnik DC) oraz podawać trzy sygnały sterujące do zewnętrznego...
Witam, mam problem z dokładnością licznika czasu. Licznik ma mierzyć czas pomiędzy pojawieniem się napięcia większego od 512 na pinie PA7 a pojawieniem się zbocza narastającego na INT0. Licznik zlicza setne sekundy i sekundy. Późni się około 10 sekund na minutę. Korzystam z Atmegi32 o taktowaniu 8MHz....
Po całym dniu walki słabo opisałem mój problem bo już po prostu nie miałem siły :D Wyjaśniam... Zrobiłem sobie mikro serwerek LANowy na Atmedze32 i układzie ENC28J60. Z doświadczenia z tym układem i Atmegą wiem że znacznie stabilniej wszystko pracuje gdy mikroporocesor (Atmega) jest taktowana zegarem...
Witam, bardzo proszę o pomoc. Zrobiłem układ na Atmega32 z podłączonymi diodami do całego PortuA, oraz do PortuB Pin2 (PB2) dekoder podczerwieni TSOP31236 (testowałem też na TSOP31238). Wykorzystać chciałem bibliotekę IRMP a w załączniku spakowany cały projekt z plikami biblioteki irmp.
Moim zdaniem masz żłe napisaną obsługe przerwania. Procesor jak wejdzie w przerwanie to w niej wisim i wisi. Mogą być problemy ze stosem. Ja bym to napisał tak ze timerem bym wykonywał akcje a w przerwaniu ustawiał flage wciśniętych klawiszy. Otrzymujesz przerwanie i zapisujesz do zmiennej stan...
Oto cały program. Może długo zająć jego analizowanie. Na chwilę obecną zamiast dwóch niebieskich kondensatorów 100u jest jeden 1000u. Od spodu są przylutowane dodatkowe ceramiczne 100n. Dodam że rolę czujnika prędkości pełni kontaktron, który docelowo miał sterować transoptorem,...
Witam Po raz pierwszy ( lepiej późno niż wcale ) wykorzystałem wyjście CLKOUT układu PCF8563. Oczywiście podciągnąłem przez 10K do VCC. Dzisiaj po pierwszym kilkugodzinnym braku prądu, rano zegar był wyzerowany. Podejrzewam, że to przez podciągnięcie CLKOUT do Vcc. Jeśli to jest to, to może wystarczy...
1. W jakim języku piszesz? 2. Kalkuluje się to tak: Masz kwarc 16 000 000 Hz (16 MHz) i dajesz sobie jeden z dopuszczonych prescalerów, np. 64 i wtedy timer zlicza Ci impulsy z częstotliwością 16 000 000 / 64 = 250 000 Hz, czyli jeden impuls timera to 4*10^-6 s lub inaczej aby odmierzyć 1s musisz...
Witam...Dlaczego przerwania z Timera0 generowane nie sa zgodnie z dokumentacja? chciałbym zrealizować generator sterujący pinami portu PC0-7...w taki sposób aby wartości z tabeli --- unsigned char GenTab DDRC = 0xFF; // port C jako wyjscie 11111111 CLI(); //disable all interrupts TIMSK...
Przerwania w skrócie można wyjaśnić tak: uC costam sobie robi i liczy, dostaje jakieś przerwanie (które wcześniej trzeba uruchomić, skonfigurować), przestaje liczyć i zajmuje się przerwaniem. Po jego skończeniu wraca do momentu w którym przestał liczyć i liczy dalej. W kodzie wygląda to tak: ...
Ja to widzę tak: 1.Przykładowo ustawiasz taktowanie przetwornika na 1MHz co da około 76ksps(1MHz/13) i jest to maksymalna ilość sampli jaką możesz uzyskać. Czas pojedynczej konwersu wynosi 1/76000=~13,15us. Tryb free run. 2. Uruchamiasz timer, który w przerwaniu będzie odczytywał wartość konwersji....
Witam Mam problem z komunikacją między dwoma uC. Dane są odbierane, jednak nie zgadzają się z wysyłanymi. Atmega32 - pełni funkcję Mastera #define VUART 38400 #define VUBRR F_CPU/(VUART*16)-1 #define T0_start 1 #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include...
Chodzi o to ze jak obsługuje 7 ledów to wszystko jest ok, na każdej mogę ustawić sobie jasność, a jeżeli włączę obsługę 8 diody to wszystkie zaczynają migać zależnie od podanych wartości (powiedzmy tak ze co 400-500ms następuje zaświecenie i odpowiednio zgaśniecie) No i to samo się dzieje jezeli nie...
Na Timerze. W przerwaniu od INTx ustawiasz wartość początkową Timera i uruchamiasz go. A w przerwaniu od Timera ustawiasz/kasujesz pin wyjściowy.
Dla potomnych zamieszczam działający kod w C obsługujący lh5008t/uPD7225. Dziękuję wszystkim za pomoc w opracowaniu kodu... main.c: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdlib.h> #include "main.h" #include "upd7225.h" //LCD uint8_t...
Witam. Mam drobny problem i nie wiem jak go ugryźć. Atmega32 kwarc 16mhz W przerwaniu odczytuję klawiaturę ps2 i w między czasie robię wyświetlanie na matrycy w Timerze z preskalerem 64. I jeszcze mam uruchomione PWM. Jesli wyświetlanie zrobie w pętli głównej i wyłaczę timer to klawiatura czyta...
Po kilku dniach pracy urządzania stwierdziłem że jednak przydało by się żeby serwerek dodatkowo wysyłał dane do "" chociaż z termometru domowego. Próbowałem na rożne sposoby ale nie mam pojęcia jak to zrobić. Może ktoś z Was jest w stanie zmodyfikować kod ? Może kolega (at)bart-projects czyta ten...
Witam, Wybrałem przerwanie wyzwalane wejściem ICP Timera1 ponieważ - załatwia mi to 2 rzeczy od razu. Po pierwsze obsługa IR działa ładnie na przerwaniach i nie zajmuję żadnego z wejść INTx, po drugie od razu zużywam ten sam timer. Jeśli chodzi o kod obsługi ramek IR - to pewnie, że obsługuje on tylko...
Witam! Mam problem z tym programem. Nie chce się skompilować. Wywala mi trzy błędy: 123 (linia: 0) - END IF expected , in File: 7 (linia: 0 ) - IF THAN expected inventco.eu - post edytowałem, program umieszczamy w znacznikach code $crystal = 8000000 $regfile = "m32def.dat" ...
Witam serdecznie. Rozpocząłem jakiś czas temu zabawę z mikrokontrolerem ATmega. Posiadam model ATmega32-16PU. Buduję zegar czasu rzeczywistego. Chciałem do tego wykorzystać przerwania z wbudowanego timera (przepełnienie). Po wielu nieudanych próbach synchronizacji ATmegi z rzeczywistym czasem...
Witam wszystkich. Muszę na zajęcia z energoelektroniki napisać sterownik silnika krokowego. Efekt stanów na poszczególnych wyprowadzeniach ATmegi symulujemy na diodach LED. Program ma mieć sterowanie krokowe i półkrokowe, przyspieszanie i zwalnianie sekwencji oraz odwracanie sekwencji. Wszystkie te operacje...
#include <mega8.h> #include <stdio.h> #include <delay.h> #include <math.h> // 1 Wire Bus functions #asm .equ __w1_port=0x15 ;PORTC .equ __w1_bit=5 #endasm #include <1wire.h> unsigned int status=0, error=0; int temperatura=0, temperatura_zadana=0; unsigned...
Wg mnie zegar Uarta sie powoli rozjeżdża. Sprawdź dokładnie czasy jakie ustawione są dla timerów. Nie zauważyłem także, aby na czas generacji i odbioru znaków blokowane były przerwania, to także może być przyczyną błędów, gdyz przerwanie od timera może byc nie obsłużone.
wg mnie natomiast cala ta zabawa z PWMami i jakimis dziwnymi trybami timera jest baz sensu... prosciej jest zgrac sie z sygnalem w fazie (przerwanie od zmiany stanu np) i nastepnie dokonywac probkowania pinu o czestotliwosci 2x wiekszej niz czestotliwosc sygnalu. probkowac nalezy miedzy tymi strzaleczkami...
A change of the COM1x1:0 bits state will have effect at the first compare match after the bits are written. For non-PWM modes, the action can be forced to have immediate effect by using the FOC1x strobe bits. Być może w tym jest problem. OC1A jest prawdopodobnie inicjowane z wartością 0 do momentu...
Witam Chciałem uruchomić przerwania, przygotowałem najprostszy kod z timerem T0 i przerwaniem od przepełnienia, ale nie chce mi zadziałać przerwanie. Dla sprawdzenia zmieniam stan portu do którego podłączona jest dioda. #define F_CPU 1000000 //ustawienie oscylatora na 1MHz #include <avr/io.h>...
PCF8583 ma własne zasilanie [akumulatorek] do podtrzymania pamięci , błędny odczyt następuje po zmianie wartości dni np; 19-07-2011 na 20-27-2011 .. 20-47-2011 . Co jest powodem nie wiem choć przeczytałem polskiego datasheta PCF-a. Przepisałem program ale z porównywaniem czasu to jest masakra i do tego...
OK, rozumiem. Napisałem coś takiego, prosta sekwencja na liczniku do sterowania silnikiem krokowym. Przyciski zwiększają lub zmniejszają prędkość sekwencji, tylko mam taki problem. Muszę zrobić tak, aby jedno wciśnięcie przycisku powodowało przyspieszenie, potem drugie wciśnięcie przycisku kolejne przyspieszenie...
Witam Od jakiegoś czasu próbuję zapędzić moją ATmegę32 do współpracy z kartą SD. Wykorzystałem do tego FatFs, a problem mam z inicjalizacją karty - a przynajmniej tak sądzę, ponieważ funkcje f_mount i f_open zwracają wartość FR_NOT_READY, co wskazuje na niepowodzenie funkcji disk_initialize. W moim...
Mam problem z przerwaniami, a raczej z pewną różnicą w budowie Atmega8 i Atmega32, a mianowicie mam program, który działa prawidłowo na Atmega8 poniżej fragment Jakaś sugestia/pomoc?
Mam program, w którym uruchamiam przerwanie z pinu ICP. I wszystko działa jak należy, program jest przetestowany. Postanowiłem połączyć go z programem do obsługi karty pamięci pobranym z //**************************************... **** MAIN routine FOR Interfacing microSD/SDHC...
Oj, przejrzałem pobieżnie kod - uwierz mi - skasuj go. W C jest coś takiego jak funkcje - wykorzystaj to, kod, który masz jest kompletnie nieczytelny. Każdy normalny promotor by to coś uwalił chociażby za to. Co do szybkości działania - pokaż kod funkcji odpowiedzialnych za komunikację z czujnikami....
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...
Czy dobrze jest to wykonane? czyli przerwanie wywolywane z częstotliwością 50Hz. Mam jeszcze pytanie czy to mi się skopiluje w tej wersji WinAVR co ja posiadam. Ponieważ napisałeś, że ISR to jest nowsze od SIGNAL. #include <avr/io.h> #include <avr/interrupt.h> int main (void) { ...
Witam, Też miałem sporo problemów z Timerem w ATmedze 32. Po dziś dzień nie mam pojęcia dlaczego przez długi czas w ogóle nie działał (lub nie wyzwalał przerwania), na całe szczęście w ostateczności ruszył. Znajomy miał problem z przerwaniem od RS232. Również nie wiadomo czemu uC pomijał przypisanie...
Zasadniczy błąd, jeśli chodzi o przerwania. RTC PCF8583 posiada sprzętowe wyjście przerwania. Co sekundę podaje na nie sygnał. Zatem podłączamy je do jednego z pinów obsługujących przerwanie sprzętowe w procku i to on się martwi co ma zrobić i kiedy. Nie ma potrzeby wykorzystywania Timera procka. ...
Męczę sie już z tym 3 dni i nie mogę wyłapać błędu , jak na AtMedze8 podobnie pisałem to wszystko działało elegancko , a na 32ce serwo nie chce się ruszyć. 16 MHz [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <stdio.h> #include <stdlib.h> #include <avr/interrupt.h> #define...
Aby to zlikwidować skorzystaj i innej metody eliminacji drgań styków a najlepiej umieść obsługę przycisków w przerwaniu... ...timera, tu jest przystępnie wytłumaczone jak obchodzić się z timerami Timery działają asynchronicznie w stosunku do głównej pętli programu, więc timer licząc czas...
Witam przeglądałem wiele postów o CTC na forum i poza... moje zakładki jak i biurko uginają sie od materiałów.. lecz nie widzę błędu... Czy może mi ktoś powiedzieć gdzie jest błąd? sprawdzałem juz chyba z 10 różnych kodów dla Timer'a 0 dla Timer'a 1 +Wybrałem tryb CTC +Zezwoliłem na przerwania...
Witam Mam Atmega32A + PCF8563 + PCF8574 + RFM12 + DS18B20 +DHT11. Port danych LCD to Port.A, ControlPort to Port.C. I2C standardowo na Portc.0 Portc.1. Niestety jest problem z obsługą I2C, tzn. zegar PCF8563 nie działa w ogóle ( na LCD puste pole ) , a klawiatura na PCF8574 - tylko jeden klawisz i to...
Z tego co wiem to w ATmega-ch raczej trudno o możliwość zliczania impulsów z 3 niezależnych źródeł zewnętrznych i generowania dla każdego z osobna przerwania (chyba że powyżej ATmega32, ale w grę wchodzi wtedy wysoka cena). Pytanie czy konieczne jest takie rozwiązanie jak zaproponowałeś? Przy pracy uC...
Otóż tak. Sprawa się ma następująco. Rozuiem że chcesz na wyjściu otrzymać sygnał prostokątny o wypełnieniu 50% i regulowanej częstotliwości. Ja proponowałbym takie rozwiązanie: #include <avr/io.h> int main() { DDRB=0xff; //Port B jako wyjście TCCR1A=_BV(COM1A0);...
Tak:) Zrobiłem:) Dzięki za pomoc!! Jeżeli TCNT1 doliczy się do OCR1 na skutek pracy CTC, to nie wywoła tego TCNT1, tylko rejestr OCR1 czyli przerwanie aktywowane bitem OCIE1A w rejestrze TIMSK (str. 112). Właśnie tam w przerwaniu z obsługi flagi OCF1A zostanie wygenerowane przerwanie, bo w końcu ustawiam...
Witam Was mam taki problem i za bardzo nie mogę sobie poradzić. Chciałem przerzucić kod z atmegi8 na atmege32, który to obsługuje klawiaturę matrycową. Wcześniej kod pracował mi na jednym porcie, teraz jest na dwóch po kawałku. Na razie wyświetla liczbę 11 i nie reaguje. W kodzie dałem stosowne komentarze. Może...
Napisałem kod dla zegara cyfrowego w Bascom. Ogólnie działa jak należy. Mam tylko problem przede wszystkim z budzikiem. Chcę aby podczas alarmu naciśnięcie przycisku 1(PORTD.0) wyłączało alarm(chodzi o sam dźwięk). Program nie reaguje. Nie mam pojęcia czy jest to wina tego, że nie nadąża z wykonaniem...
Witam Wykonałem układ, który komunikuje się z PC przez moduł BTM-222. Komunikacja USART, asynchroniczna 38.400 kbps, 1 bit parzysztości, 1 bit stopu. Jeśli zadeklaruję na stałe, że wielkość bufora wynosi np. 30, i wysyłam z PC 30 znaków, to komunikacja działa bez zarzutu. Problem w tym, że chciałbym,...
Przerwania raczej się nie nakładają. Zrobiłem wersje z jednym przerwaniem używając 16 bitowego timera, przerywając jego wykonywania w przerwaniu zewnętrznym, oraz wersje bez przerwań (pętla while i _delay_us(1) ) i dalej to samo. Co to tego żę różne zmienne to się nie mogę zgodzić ponieważ: uint8_t...
Jedynie nie wiem jak obsłużyć odczytywanie danych. Do tego chyba ten bufor nie jest potrzebny, tylko jak to uwzględnić w przerwaniu? Sprawa z odczytem jest nieco bardziej skomplikowana, ale to też idzie rozwiązać. Niestety nie przedstawię na forum ani gotowego kodu, ani szczegółowego algorytmu. Mogę...
To jest zwykła fizyka. Silnik ma ograniczoną prędkość i tego nie przeskoczysz ale można łatwo to rowiązać. Tak to robię na enkoderach W przerwaniu enkodera inkrementuję zmienną "W_lewo" albo "W_prawo" zależnie od kierunku pokrecenia. Zmienne są inkrementowane w dowolnym tempie i żadnego kroku nie...
Jaki to ma być silniczek ( komutatorowy / indukcyjny ) jesli ma 200 W to zakładam że zasilasz go z sieci i jest komutatorowy. PWM nie wysteruje tego typu rzeczy. Ale może wspomóc tz. robisz detektor zera. Przy przejsciu przez zero do aktualnej wartosci timera dodajesz stałą X a całość wpisujesz do timer...
Witam, Mam taki problem. Chcę wysyłać do PC informację w formie takiego temp1;temp2;f1;temp3 i coś jeszcze. Jak wysyłam informację to chcę żeby ona była raz wyświetlana powiedzmy co ok 1-2s a nie tak jak na screenach pod kodem. (to jest losowe). Co może być nie tak. Timera2 używam jako odmierzacz...
pewnie że nie ma wpływu na timery i musisz poczytać książki o samych prockach żeby zrozumieć co to są timery sprzętowe. Bo o ile można powiedzieć że program nie ma wpływu na timery sprzętowe to już timery sprzętowe a raczej ich przerwania mają wpływ na program i to się wiąże z tym działaniem niedokładnym...
Staram się zoptymalizować kod. W tym celu chcę sprawdzić jak szybko zostaje wykonana instrukcja wysłania 16 bitowego słowa po sprzętowej szynie SPI. W tym celu zeruje i włączam timer1 (BEZ preskalera) na początku wysyłania i zatrzymuje na końcu. Zawartość licznika TCNT1 wysyłam po UARTcie. Wynik jaki...
Poprawiłem program zgodnie z uwagami, dodatkowo pod portb.0 podłączyłem czujkę ruchu która znajduje się w najbardziej ruchliwym miejscu w domu tak aby cała ta procedura była realizowana tylko przez godzinę od detekcji ruchu. Zmniejszy to ilość załączeń pompki. Poniżej kod czekam na uwagi [syntax=basic4gl] $crystal...
Witam, pomijając kod, to Twój pomysł skąd się wziął? Z grubsza to masz 3 możliwości: - zliczasz timerem zmiany na pinie z pominięciem drgań - mierzysz czas między stanami wysokimi za pomocą Input Capture i zliczasz tylko te z minimalnym założonym odstępem - robisz normalną obsługę przycisku (w przerwaniu...
DEX - no cóż dlatego, bo taki układ już jest i nic nie da się teraz zrobić. Kolumny i wiersze są podpięte bezpośredni pod wymienione porty.. Więc bezpośrednie wykorzystanie zewnętrznego przerwania nie wchodzi w rachubę. mariuszlorenc - no wlasnie może o to mi chodzi, ale jak to się robi, bo to moje...
Niestety w bascomie obsluga wyswietlacza jest do d*py dlatego samo wyswietlanie w przerwaniu nie pomoze bo rozjedzie ci znaki od razu....musi byc index... kolego nsvinc jak się nie zna czegoś to nie określa się tego mianem, że jest "do d*py" to świadczy tylko o twoim ogólnym poziomie wiedzy...
Witam, Popełniłeś kilka błędów: - aby odblokować przerwania od przepełnienia timera 1 trzeba ustawić bit 2 a nie 5 w rejsestrze TIMSK - wektor przerwania od przepełniania timera 1 to nie 0x12 a 0x24 Dobrze jest przy pisaniu w C korzystać z funkcji dostarczanych wraz z kompilatorem "intrinsic...
jak to nie zostało zauważone - a co ja wcześniej ci pisałem na temat twoich opisów przy konfiguracji INT1 'Timer2 uzyjemy do pobierania kodu z pilota Config Int1 = Low Level 'Config Timer2 = Timer , Prescale = 1024 'On Timer2 Ontimer2 On Int1 Ontimer1 'Enable Timer2 Enable Int1 widać...
Witam !!! Założę nowy temat z tego względu, że problem jest już trochę inny, niż ten poruszany w " ustawienie rejestrow w timerze 1" ISR(TIMER1_COMPA_vect) // przerwanie dla porownania { PORTC ^= 0x01; // zapalic/zgasic diode OCR1A=1440; //OCR1A=14745000/...
Przerwanie zrób w trybie CTC, nie będzies z musiał ładować wartości początkowej do licznika. Zerowanie wyświetlacza (PORTD = 0xFF;) jest bez sensu, wywal to. I teraz clue programu. Źle sterujesz wyświetlaniem. Na razie masz tak, że kolejne wyświetlacze są sterowane przez chwilkę (dosłownie kilka instrukcji),...
Witam Jestem tu nowy więc proszę o wyrozumiałość. Od pewnego czasu próbuję zdekodować pilot(y) IR. O ile dużo jest wątków poświęconych dekodowaniu RC5 i innych to jednak nigdzie nie mogę się doszukać jak sprawdzić czas impulsu. Wykorzystuję timer i przerwanie zboczem narastającym ICR1 . W przerwaniu...
Witam, w moim programie na atmegę 32 wykorzystałem timer0 oparty na zegarze procesora (8MHz) aby uruchamiać pewną funkcję ok. 100 razy na sekundę. Do programu postanowiłem dodać obsługę zewnętrznego kwarcu zegarkowego 32768Hz aby móc mierzyć w miarę dokładnie czas przy użyciu timera timer2. Po dopisaniu...
Czyli zamiast robić na przerwaniu INT0 zrobić na timerze? Nie. Jeżeli chcesz to pozostaw przerwanie INT0, ale w funkcji obsługi przerwania ustawiaj jedynie flagę, a w main() umieść resztę kodu wraz z opóźnieniami i pętlami, czyli gdy flaga zostanie wykryta w main() to wołaj swoją funkcję checkKeyboard(). I...
Wiem ale jakbyś zobaczył pełny kod to tam jest 5 metod inicjalizacji timera i tak mi było wygodniej kontrolować czy nie zrobię błędu przy TCCR0 Pytanie dodatkowe. W przerwaniu RXC_vect od USART kiedy "przychodzi" 0x80 (128) to zacznij pobieranie - Transmit=1; Jeżeli w obsłudze przerwania dodam ifa...
Problem rozwiązany. Wykorzystałem propozycję BlueDraco, czyli zliczam impulsy w przerwaniu Timera. Zastosowałem Timer0 z preskalerem 64. Mimo iż przerwanie generowane jest znacznie częściej niż przedtem a i w przerwaniu troszkę więcej kodu to procek i tak się ze wszystkim wyrabia i co najważniejsze impulsy...
cały kod aktualnie wygląda tak. Docelowo w pętli głównej będą inne rzeczy jeszcze. [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $hwstack = 128 $swstack = 128 $framesize = 128 Config Portc.0 = Output Config Portc.1 = Output Config Pind.0 = Input Config Pind.6 = Input Config...
Przerób wszystkie przykłady z tego poradnika, krok po kroku, a na pewno zrozumiesz działanie timerów - Jeśli używasz timerów, to nie ma potrzeby mieszać ich z delayami.
Witam! Kontynuuje temat komunikacji rs232,tym razem bezprzewodowej. Postępuje dokładnie jak w poradniku opisanym tutaj: Przerobiona Biblioteka na 433MHz Kod nadajnika: Kod odbiornika [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <string.h> #include...
Witam !!! ISR(TIMER1_COMPA_vect) // przerwanie dla porownania { PORTC ^= 0x01; // zapalic/zgasic diode ICR1=28798; } int main(void) { DDRC |= 0x01; // INICJALIZACJA LICZNIKA 1 TCNT1 = 0x0000; // wartosc poczatkowa TCCR1A...
Czy to oznacza, że przycisk masz podłączony pod pin 0 portu B ? Wejście INT0 w ATmega32 jest na pinie 2 portu D i tam powinien być podłączony przycisk, aby wywołać przerwanie. Dopiero procedura obsługi tego przerwania włącza timer 1.
wielkie dzieki za taki odzew :) niestety caly czas nie rozumiem jednej rzeczy zamieszczam plik zrodlowy w ktorym pomiedzy dyrektywa .ORG 0x00 a instr rjmp Reset znajduje sie instr nop. bez niej po wgraniu programu na kosc nic sie nie dzieje 8O .INCLUDE "m32def.inc" .CSEG .ORG 0x00 ...
PORTA= ((PINB & 0b00001000)>>1); Tylko, że teraz to mi kasuje stan wszystkich wyjść na PORTA. A fajnie by było jak by tylko zmieniało ten PORTA2. Jak dam z | to mi potem jak to CA0 zmienia się z 1 na 0 nie kasuje go na PORTA3. Poczytałem o używaniu przerwań pod C i zrobiłem...
No wiec sygnal 40khz spokojnie mozna odbierzyc za pomoca timera;) ale tylko piszac w asm, w C procedura obslugi przerwania jest zbyt dluga, no a sekunde(a jednak:):) ) chyba zdecydowanie na timerze najlepiej odnierzyc:) z tym 40kHz to jeszcze zalezy od dokladnosci z jaka ma on byc generowany. Jesli...
Witam potrzebuje zrobic program ktory bedzie w odpowiednich odstepach czasu wywolywal przerwanie i w tym przerwaniu bede sobie mogl wykonywac dalsze funkcje problem w tym ze nie dizala mi taki najbardziej podstawowy program Symuluje to w proteusie i nie chce zapalac pinub.1 chodzi mi o taki test powinna...
PWM mógłbyś użyć do sterowania silnika prądu stałego, ale nie silnika krokowego. W Twoim przypadku żeby zmienić prędkość musiałbyś zmienić opóźnienie pomiędzy impulsami podawanymi na uzwojenia silnika. Na początek napisz coś takiego: uint8_t predkosc = 0; for (int i = 0; i < 4; ++i) { ...
Szczerze mówiąc impulsator w dalszym ciągu nie działa jak powinien :/ Nie mogę sobie z nim poradzić :/ Co do przerwania to nie mogę obsługiwać impulsatora w przerwaniu.
Niestety to nie pomogło, nie wiem czy to zrobiłem dobrze ale dodałem następujące elementy: [syntax=basic4gl] Config Timer0 = Timer , Prescale = 256 'konfiguracja timera0 On Timer0 Ontimerint 'wywołanie Ontimerint przy przerwaniu z timera Enable...
Aha, weź też pod uwagę, że m.in. na podstawie polaryzacji impulsów synchronizacji monitor rozpoznaje rozdzielczość. Rozpoznaje tryb - istotne jesli tryb ma inny niz VGA PAR (pixel aspect ratio) - jesli zachowa sie aspekt z VGA to nie ma potrzeby przejmowac sie polaryzacja impulsow i mozna obraz...
W tym trybie timer po prostu zlicza impulsy zegarowe do niego doprowadzone, jeśli przekroczy zakres to zgłasza przerwanie overflow (nadmiaru) i rozpoczyna zliczanie od nowa. Funkcja obsługi tego przerwania zlicza je zwiększając liczniki f - przechowujący czas z rozdzielczością <1ms i m przechowujący...
1. Mam podciągnięte porty wejściowe do masy 2. JTAG jest wyłączony, przy włączonym JTAG dioda świeciła ciągle 3. Bo taką mam płytkę, wcześniejszy błąd przy projektowaniu 4. Myślałem że bezpośrednio nie mogę Poprawiłem wszystko o czym pisałeś i nadal jest ten sam błąd Dodano po 22 Podłączyłem...
Koledzy, poniżej kod. Zauważyłem poważny problem. Timer1 mi się sypie zanim dojdzie do 0. Tzn, nagle, zanim upłynie zadany czas, uC zwiesi się i przestanie wykonywać pętlę Do ... Loop until. Nie wejdzie w stan Powerdown i nadal będę mógł wywołać przerwanie Int0 - czyli zawiesza się w pętli Do...loop. Zdaje...
Zaletą Discovery jest gotowy układ razem z programatorem/debugerem. Do Xmegi musisz to wszystko dokupić za pieniądze większe niż cała płytka discovery. Dlatego wolałbym jak narazie unikać XMeg, bo STM32 są chyba bardziel popularne no i jak narazie mam programator do tego :) Wystarczy ci Atmega48/88/168...
Myślę że twój program zajmie mniej niz 0.5% zasobów tego procesora. Oczywiście da się to zrobić na 1 Timerze. Wystarczy ,że w przerwaniu od Timera umieścisz 3 zmienne, które będą incrementowane po kązdym przepełnieniu licznika, a w programie głównym korzystając z nich mierzysz 3 niezależne czasy.
Nie chciałbym zakładać nowego wątku także, opiszę kolejny problem jaki na potkałem przy budowie tego sterownika w tym temacie. Poniżej zamieszczam testowy kod do sterowania silnikiem lewo prawo. Przykładowo po pierwszym wysterowania śruba przemieszcza się z punktu 1 do punktu 2, przy kolejnym...
Na zawodach WAS w Matkach w sierpniu 2014 , organizator (Pawel) podrzucil pomysl skonstruowania urzadzenia do pomiaru czasu dla konkurencji Fast Draw. Strzela sie slepakami, samym prochem i przybitka bez pocisku(kuli) , sam podmuch gazow prochowych powoduje pekniecie balonika. Jako, ze wpadly...
W przerwaniu robisz wyświetlanie na lcd Czyli nie powinienem dawać funkcji wyświetlania w przerwaniach? Dać ją do głównej funkcji main czy jak?
Jeżeli "masz do budzenia" tylko Timery to polecenie-tryb POWERDOWN odpada, ponieważ wybudzić można tylko poprzez układu WATCHDOG, zewnętrzny sygnał reset lub za pomocą zewnętrznego sygnału przerwania. Tryb IDLE nadaje się. Usypiasz poleceniem IDLE a budzisz dowoolnym przerwaniem. Pozdrawiam.
Zabieram sie za polaczenie tego wszystkiego w celach bardziej hobbistycznych i edukacyjnych... Podpowiedzcie mi troche jak najlepiej odczytywac wypelnienie PWM. Widzialem, ze mozna uklad podlaczyc pod wejscia przerwan - tu pytanie - jak wyzwalane jest przerwanie (stanem, zboczem...) ? Czy sluszna...
Żeby zrobić za pomocą Timera - to nie możesz używać trybu PowerDown tylko Sleep - żeby właśnie Timery mogły działać to po pierwsze. W taki trybie jednak będziesz miał nieco większy pobór prądu niż w pełnym PowerDown. Więc wszystko zależy na ile ma wystarczać bateria o ile jest to coś zasilane z baterii....
witam mam problem z wywolaniem przerwania od timer1 - od zdarzenia typu CTC, program ma wygrywac melodyjke na buzzerku, przerwanie od timer0 smiga - jest odpowiedzialne za generowanie sygnalu na wyjsciu OC0, a timer1 ma zmieniac nutki - podmieciac liczbe w OCR0 liczba z tablicy melodia... ale nie zmienia...
No ale u mnie timer ma generować sygnał zadany przeze mnie np. potencjometrem wiec raczej musi być w przerwaniu, i teraz mam mały problem bo multipleksowanie wyświetlacza też muszę zrobić przerwaniem (żeby zmieniać wartości na wyświetlaczu) kiedy robię te oba przerwania to widać że wyświetlacz migocze...
Amplituda impulsów wynosi 4,2-4,3 V, według oscyloskopu Vpp=8,5 V. Okres impulsów jest wybierany w menu programu, mieści się w przedziale 70-280 ms. Up taktóję kwarcem 10 Mhz. Przy nieobciążonych portach nic się nie zmienia. Poniżej wkleiłem fragmenty programu z konfiguracją portów, konfiguracją licznika,...
Wklepałem to: $regfile = "m32def.dat" $hwstack = 32 $swstack = 32 $framesize = 32 $crystal = 16000000 Dim Licz As Byte , Wyp(4) As Byte Portd = Portd Or &B00001111 Ddrd = Ddrd Or &B00001111 Config Timer0 = Timer , Prescale = 1 On Timer0 Przerwanie Enable Interrupts Enable...
Jednak na początku mam przecież: ... #include <avr/interrupt.h> ... Jak używasz przerwań, to funkcje z <util/delay.h> nie będą działały prawidłowo. Jak więc pozbyć się tego błędu? Jak musisz korzystać z przerwań, to jedynym wyjściem jest napisanie własnych funkcji...
niezbyt jasno chcesz innymi słowy ZAKONCZYĆ wykonywanie jednej pętli, a rozpocząć innej? ja bym to rozwiązał tak: Do 'p. nieskończona Do 'pierwsza pętla loop until funkcja=1 Do 'druga pętla loop until funkcja=2 Loop Przerwanie_int0: ... pinb.0 = 0 then funkcja=1 if pinb.1 = 0...
... to wtedy zostaje zliczony jako osoba wchodząca do pomieszczenia. :) jeżeli tak jest to po co czekasz na drugą barierę? Trudno by było to przewidzieć, chyba żeby wykombinować jakąś inną zasadę działania. np. wchodzę, timer odlicza 1 sekundę, jak przejdę przez drugą barierę to się zliczy...
Poczytaj o preskalerze tego Timera oraz o trybie CTC Po co mi tryb CTC? Doczytałem na stronie 329, że muszę ustawić prescaler=128; Więc teraz, czy taki kod: [syntax=c] int main(void){ ASSR |=(1<<AS2); //zmiana źródła zegara licznika na kwarc zegarkowy TIMSK |=(1<<TOIE2);...
Będzie to chyba lewitron albo coś w tym rodzaju. Do tego co napisał sulfur dodam że przy całkowaniu oś X- w tym wypadku oś czasu- powinna być liniowa(żeby sobie nie komplikować życia). To oznacza że odczyt ADC powinien być wykonywany co taki sam czas- to implikuje wykorzystanie timera- i to w przerwaniu...
Zrobiłem narazie przesuwanie sekwencji o stałej częstotliwości na timerze0 w trybie normalnym. Rozumiem, że teraz aby dodać skanowanie z przycisków muszę przestawić licznik w tryb CTC i ? właśnie co. W pętli głównej czyli w mainie, muszę dać skanowanie portu z przyciskami na wejściu, teraz jak to miałoby...
teraz pojawił się kolejny problem, w przerwaniu od RXC odbieram i wysyłam po 13 bajtów danych, z tego co widać na obrazach poniżej to wg. mnie wartości są odsyłane prawidłowo (4 ostatnie bajty w arrayu 'odebrany string' jest to wartość odczytów adc, a wcześniejsze bajty są na razie po prostu odsyłane...
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...
No tak masz rację. Ale powiem Ci, że wartości 99900 Hz w ten sposób w ogóle nie da się tutaj osiągnąć przy zegarze 16 MHz i z użyciem jednego timera ;) Na pewno? (!) Popatrz więc na fragment Datasheet (dolna częśc str.72) "For generating a waveform output in CTC mode, the OC0 output can be set...
Nie wiem nic na ten temat. Na tą chwilę wydaje się że funkcja ustaw_timer() powoduje problemy, bo po jej wykonaniu układ nie reaguje na przychodzące dane. Dodano po 2 Po usunięciu z programu funkcji przelicz i ustaw timer i utawianiu timera na sztywno problem wciąż ten sam. Po inicjalizacji timera...
Witam serdecznie. Wykonuje projekt holtera EKG. Zmierzone napięcie chciałbym wysłać przez moduł bluetooth do komputera. Mój wzmacniacz ma pasmo 100Hz więc chce zastosować częstotliwość próbkowania 200 Hz. [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define...