Ale jeśli mniejsze, to już po 1 takcie zliczania powinno wyskoczyć z przerwania a tak nie jest. Taktowanie timera to 16MHz/1024 = 15625Hz. Pojemność timera to 256, więc przerwanie pojawia się z częstotliwością 15625/256 = ~61Hz. Aby uzyskać opóźnienie ok. 1 sekundy przerwanie musi pojawić się 61 razy i dopiero za 62 zapalić lub zgasić diodę. I tak...
na razie 2s na minute ... W weekend spróbuję zrobić tak jak pisałeś i zobaczę efekty. Wzoruj się na kodach z jakichś zegarków jest ich na forum sporo w dziale DIY. Na początek możesz zaglądnąć tutaj: LED sterowany przez Timer (przykład bez kwarcu 32,768kHz).
Przerób wszystkie przykłady z tego poradnika, krok po kroku, a na pewno zrozumiesz działanie timerów - http://diycenter.acid19.linuxpl.com/read... Jeśli używasz timerów, to nie ma potrzeby mieszać ich z delayami.
Toggle Ledy odnosi się chyba do całego portu i dlatego migają ci wszystkie diody , a ty chcesz kolejno gasić ledy.Więc z toggle chyba nie zadziała
...a jezeli na pc uruchomie port na 1200bps a w avr 9600bps to normalnie odbiore wszystko. Problem sprzętowy to raczej nie będzie. Odpal któryś z timerów żeby migał Ci diodą co 1sekudnę i sprawdź czy RC rzeczywiście ma te 8MHz :wink:.
Eno bez jaj...wskaźniki?... Co tu jest skomplikowanego? Przecież tu wystarczy aktywować cykliczne przerwanie, którego okres zależy od częstotliwości i rozdzielczości potrzebnego PWM. Programowy PWM to raptem 2-3 linie. Do tego timer programowy do odliczania migania i to wszystko. W pętli głównej pozostaje tylko zarządzanie tym timerem i w zależności...
Przy 8MHz i tych ustawieniach Timera 2 częstotliwość PWM powinna być 156Hz jeżeli nic nie przeoczyłem. Czasy opóźnień są trochę naciągane (znaczy, krótkie), ale nie powinno to migać chaotycznie. Chyba, że przerwania się nie wyrabiają. Jaki masz poziom optymalizacji w kompilatorze?
Gwarantuje ci że działa tyle tylko że timer przepełnia ci sie po około 0,1ms policz sobie jaka to częstotliwość. Nie ma najmniejszych szans żebyś gołym okiem zauważył jak miga dioda na PD0.
[syntax=c] #define Button (1<<PB0) #define Button_PORT PORTB #define Button_PIN PINB #define Button_DDR DDRB volatile _Bool Key_Pressed = 0; // flaga wciśniętego przycisku [/syntax] [syntax=c] Button_DDR &= ~(Button); //port - wejście Button_PORT |= (Button); //włącz pull up [/syntax] [syntax=c] ISR(TIMER0_OVF_vect)//przerwanie wywoływane...
witam czemu dioda mi nie miga oto program : [syntax=c][ /* * timer0.c * * Created: 2014-09-20 15:57:03 * Author: */ #include <avr/io.h> #include <avr/interrupt.h> #include <avr/sleep.h> int main(void) {TCCR0|=(!(1<<WGM01))|(!(1<<... //inicjalizacja timera, ustawienia...
Witam. Tani uC Atmela: ATmega8 - koszt ok. 6zł Są też układy serii ATtiny za ok. 5zł, ale lepiej już zainwestować w mega8. Posiada więcej pamięci i układów typu timery, przerwania, przetwornik, itd. Można też kupić za ok. 10zł ATmega32 - ten procek już w zupełności wystarczy do większości amatorskich projektów. Tym bardziej dla początkujących. Schemat...
Chcialbym napisac najprostrzy program aby sprawdzic czy progra mi wogole wchodzi w przerwanie czyli czy zapali diode. Ale zupelnie nic sie nie dzieje. Zarówno symulacja programowa w AVR Studio, jak i program uruchomiony na realnym sprzęcie działa poprawnie. Albo się pomyliłeś co do podłączenia diody, albo procesor jest uszkodzony. Po drobnej zmianie...
Witam Ostatnio zmienialem fusebity tak aby uC pracowal z zewnetrznym rezonatorem 8MHz. Poustawialem wszystko przez PonyProga i wygladalo,ze wszystko jest oki, no i zaczolem sprawdzac. Popelnilem maly program, ktory zapala i wygasza diode co 1 s. Wszystko bylo by fajnie, gdyby nie to ze wedlug tych ustawien i zegarze 8MHz dioda powinna migac co 0.5s....
Witam, Chciałabym zrobić obsługę timera, aby wszystkie diody po przyciśnięciu przycisku się włączały, a po upływie czasu ok. 0,5 sekundy się wyłączały. Niestety timer w kodzie mojego programu nie uruchamia się i nie wiem czym to jest spowodowane. [syntax=avrasm] .include "m32def.inc" .org 0x000 jmp start .org 0x002 jmp int_ext .org 0x010 jmp timer1...
Witam Chciałem wykorzystać Timer0 do tego aby dioda migała z określoną częstotliwością (co 1 s). Nie wiem co robie źle bo dioda cały czas świeci . Oto kod, którym programuje procesor : #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #include<avr/interrupt.h> volatile unsigned int i; int main(void) {...
Witam mam problem z miganiem dwoma diodami, ale czysto sprzętowo, za pomocą timera 3 w trybie outpu compare. Pisząc program wzorowałem się na kodzie ze strony http://en.radzio.dxp.pl/stm32vldiscovery... . Mój kod różni się tylko tym, że nie wykonuje tutaj remmapu, ponieważ w moim uC (stm32f103vct6) TIM3_CH3 i TIM3_CH4...
witam. bawię się od początku tygodnia z procesorem atmega328p. do tej pory wszytsko szło ok, dziś chciałem wziąć się za timery. znalazłem najprostszy program dot. timera0, jedna nie działa on u mnie :) pozmienialem nazwy rejestrów tak, by pasowaly do mojej wersji atmegi. dioda zapala się i tak już zostaje - żadnych zmian. zegar wew. mam ustawiony na...
Witam. Zaprogramowalem mikrokontroler tym programem: $regfile = "attiny2313.dat" $crystal = 4000000 Config Pinb.3 = Output Config Timer0 = Timer , Prescale = 256 On Timer0 Odmierz_1s Dim Licz_20ms As Byte Enable Interrupts Load Timer0 = 156 Enable Timer0 Do Loop End Odmierz_1s: Load Timer0 = 156 Incr Licz_20ms If Licz_20ms = 100 Then Licz_20ms = 0 Toggle...
Witam, Mam mały problem z programem z książki o programowaniu ATmega8 i ARM7 Pawła Borkowskiego tj. cw. 2 z lekcji o przerwaniach. Treść ćwiczenia to takie obsłużenie diód podłączonych do PC0, PC2 i PC4, aby PC4 świeciło po załączeniu przycisku, PC2 ma się zaświecić po 1,5 sekundzie przy wykorzystaniu timera1, a PC1 ma się zaświecić po 170ms przy wykorzystaniu...
Witam, napisałem program na moja atmege8l który ma za zadanie co 5s zapalać i gasić diodę z wykorzystaniem 16bitowego Timera1 w trybie CTC. Wyliczyłem, że jeśli mam uC taktowany 8MHz to przy zastosowaniu prescalera 256 flaga OCF1A powinna być ustawiana co 1hz, przy ustawieniu rejestru OCR1A na 31250. Jeśli za każdym ustawieniem flagi będę ją kasował...
Witam. Wlasnie złożyłem sobie płytke z Atmega32. W Bascomie dziwnie to działa ;-) wgrałem najprostrzy program wlacz/wylacz Led. opoznienie wpisuje jako waitms XXX - czy jest to wartosc 10ms czy 1000 ms zapalanie i gaszenie diody trwa bardzo długo. Zostawiłem narazie Bascom i wziałem sie za C. Tutaj opoznienie realizowałem przez zastosowanie petli i...
Witam mam problem z działaniem takiego programu [syntax=avrasm] .INCLUDE "m32def.inc" .INCLUDE "czekaj_ms.inc"; oczekiwanie milisekundowe ldi R16,HIGH(RAMEND) out SPH,R16 ldi R16,LOW(RAMEND) out SPL,R16 ldi R16,0x01 out DDRC,R16 .EQU SYS_FREQ=8 ; Replace with your application code ldi R16,200 ldi R17,1 start: ldi R22,0x00 out PORTC,R22 call Czekaj_ms...
Witam W programie wykorzystuję dwa timery: Timer0 i Timer2. 0 służy do zliczania zmiennej powstającej w czasie programu i do jego działania (narazie) nie mam zastrzeżeń. Problem jest z Timerem2. Służy on do zapalania diody na określony przez użytkownika czas (wartość czasu ustawiana przyciskami +-). Po wciśnięciu przycisku zapalającego diodę, świeci...
Cześć, uczę się wykorzystania timerów w mikrokontrolerze Atmega8A. Chcę aby dioda migała co sekundę. Wykorzystuję do tego 8 bityowy timer0. Taktowanie ustawione mam na 8000000Hz, a preskaler na 1024. Chcę, żeby przepełnienie występowało co sekundę czyli żeby dioda migała co sekundę, ale tak się nie dzieje. Zmieniam wartość TCNT0 na 30, bo taka wychodzi...
Witam dawno mnie nie było, Zrobiłem sobie układzik z Atmegą 32 16 Hz. Póki co do portu PA0 i PA1 podczepiłem diody i miało mi to migać nimi na zmianę. #include <avr/io.h> #include <compat/deprecated.h> #define LED1_ON sbi(PORTA,PA0) #define LED2_OFF cbi(PORTA,PA1) #define LED1_OFF cbi(PORTA,PA0) #define LED2_ON sbi(PORTA,PA1)...
Witam! Mam kilka prawdopodobnie błahych spraw, ale nie rozumiem dlaczego tak, a nie inaczej. Ponieżej program wykorzystujący timer do migotania diod. [syntax=c]#include "stm32f10x.h" void TIM1_UP_TIM16_IRQHandler(void) { TIM1->SR&=~TIM_SR_UIF; // zerowanie flagi przerwania if(GPIOC->ODR!=0x300) { GPIOC->ODR=0x300; } else { GPIOC->ODR=0x000; } } int...
Dobrze kolega napisał najpierw naucz się migać diodą a później naucz się obsługi timerów. Kolejny krok jak zliczysz 648 impulsów to zwiększasz zmienną litr o jeden. Zerujesz licznik i zaczynasz od nowa. I tak w koło. To jest przepływomierz do wody czy auta?
Makra usunięte w inicie wpisałem UBRRL=25, bo kompilator nie widział rejestru UBRR. żadnych zmian. Próbowałem również użyć zewnętrzny kwarc 7,3728 MHz żeby uzyskać 0% błędu w usart przy ubrr = 23, ale dalej to samo 30 znaków/sekundę. Doszedłem do tego że praktycznie całe opóźnienie powodowane jest przez linijkę: while ((UCSRA & (1 << UDRE))...
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 wpisze tego LED_PORT |=(1<<7); w przerwaniu...
Witam, chciałbym za pomocą timera0 pracującego w trybie CTC wywoływać przerwania z określoną częstotliwością by np migać diodą. Czy poniższe ustawienie timera jest poprawne i czego jeszcze brakuje? Jak za pomocą preskalera być w stanie ustawiać częstotliwości między 1Hz-50kHz? [syntax=c] #include<avr/io.h> #include<avr/interrupt.h> void...
Niestety laborki te mamy w asemblerze...przynajmniej ich początek. W języku C będziemy pisać niebawem na co ze zniecierpliwieniem czekam. Co do Twojej podpowiedzi, rozumiem, że cała operacja odbywała by się tak jak powiedziałem, czyli dwa przyciski wielokrotne klikanie jednego np zwiększa prędkość ? A w łopatologiczny sposób na delayach, jak wykonać...
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 zmieniam na zbocze opadające a następnie dokonuję...
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! Dla testu mam 3 diody(w przyszłości RGB) podłączone do portu B0, 1, 2. Do napięcia przez odpowiedni rezystor do uC. Atmega32A-PU low fuse E4 high fuse C9 Mam pytanie co do kodu: [syntax=c]void pwm_init(void); unsigned char licznik1 = 0; unsigned char licznik2 = 0; unsigned char licznik3 = 0; volatile unsigned char red = 0; volatile unsigned char...
Pokaż te programy do klawiatury i do migania diodą. Wtedy można pomóc coś zmienić albo poprawić. A tak to co? Mamy napisać program i narysować schemat? Sterowanie silnikiem krokowym w układzie L298 i L297 jest dość proste. Dajesz co 1ms albo mniej impuls sterujący STEP i kierunek jako DIR- tam to jest CW/CCW. Wykorzystujesz do tego przerwanie od jakiegoś...
Use of undefined or forward referenced symbol 'OC1ADDR' in .org Powinno być OC1 A ADDR. Nie wiem czy czytasz uważnie, ale zwróć też uwagę na to co napisałem wcześniej: preskaler o wartości 1 będzie raczej za mały, aby uzyskać opóźnienie 1 sekundy, chyba że taktujemy procesor kwarcem zegarkowym Jeśli nic nie zmieniałeś w fusebitach, to fabrycznie mikrokontroler...
Witam. Procesor ATmega32 Za pomocą przerwań zewnętrznych chciałem sobie zmierzyć szerokość impulsu ECHO w sonarze HC-SR04. Niestety coś w kodzie nie trybi ponieważ dioda informująca o dokonanym pomiarze się nie zapala. Napisałem już obsługe jednego czujnika za pomocą INPUT_CAPTURE i działa, ale niestety w ATmega32 jest tylko jeden pin do obsługi takie...
uC zasilany z 5V. Po dłuższej przerwie (pauza na zaliczenie sesji) wziąłem się znowu za ten projekt. I tak... przegooglowałem neta i ze strony http://winavr.scienceprog.com/avr-gcc-tu... zapożyczyłem kod obsługujący timer input capture. Przerobiłem go pod potrzeby ATmega32, ale też do końca nie wiem czy poprawnie....
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); //wyjście OC1A jest przełączane przy osiągnięciu wartości OCR1A...
Ja bym tą rozmowę porównał z proponowaniem pierwszoklasiście w szkole podstawowej, żeby kupił kalkulator matematyczny, gdy tym czasem jemu potrzeba zwykłe patyczki do nauki liczenia, a może zostanie polonistą, albo historykiem i po co mu taki sprzęt? A po 2 miesiącach, właśnie ze względu na czas potrzebny do układania i liczenia "patyczków" oraz tragiczne...
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 z powrotem). Problem pojawia się, kiedy odesłaną...
co napisaliscie jako swoj pierwszy program na dany uC w danym jezyku (rozbudowy sie licza, byle by wciaz byla to ta sama baza) n. n. - literka, cyferke z przodu dodam sam. zachowujcie chronologie w swoich dokonaniach na roznych platformach jezykowych i sprzetowych, tak aby to mialo sens! ____________________ 0x1-a. Freddie Chopin - migacz diodkami o...
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 się, że nieszczęsne Wait 1 wewnątrz tej pętli...
Witam. Mam następujący problem z SPI (i nie tylko) Najpierw opis układu: Atmega32A master SPI Atmega8 Slave. (przerwania) Wszystko taktowane wewnętrznie na 8MHz Do atmegi8 są przyłączone 4 wyświetlacze 12 diodowe WA przez tranzystory. Katody do portów (oczywiście z R) Wyświetlanie multipleksowane. Do tego 8 przycisków - jako, że brakło portów to "klawiatura"...
rozwiązałem problem. polegał na tym że w ustawieniach properties>target hardware miałem ustawione na atmega16 i zegar na 16000000Hz, po zmianie na atmega32 i 1000000Hz program działa poprawnie. Nasuwa mi się pytanie po co w pierwszej linijce kodu #define F_CPU 16000000L skoro niema to wpływu na jakąkolwiek pracę??
Witam. Otóż mam taki problem z przerwaniem od przepełnienia. Mianowicie w tym przerwaniu wykonywana jest tylko druga instrukcja "if". Do portów mam podłączone diody, dioda od portu portd_5 tylko nie zauważalnie miga co 5sek., przy porcie port_6 świeci-czyli ten "if" działa dobrze. Jeżeli "if-y" zamienię miejscami to i tak wykonywany zostanie drugi "if"....
Próbuję zrozumieć zasadę działania timera0 w normalnym trybie pracy, ale niestety mój kod i sposób rozumowania najprawdopodobniej jest zły, ponieważ dioda nie miga. W związku z tym chciałbym poprosić kogoś o weryfikację kodu oraz mojego rozumowania, bo może coś robię źle. W kodzie zamieściłem stosowne komentarze więc nie będę ich dublował. Częstotliwość...
Witam! Od jakiegoś czasu bawię się AVR Studio 4 po przesiadce z BASCOMA. Jak narazie jest nieźle ;) ale mam mały problem. Mianowicie, chciałbym sobie przy pomocy ADC próbkować sygnał z częstotliwością X (dajmy na to 8kHz) i zapisać go do tablicy. O ile w BASCOMIE napisałem sobie taki programik (przerwanie Timer2 8kHz, w przerwaniu odczyt ADC do tablicy...
Witam wszystkich. W końcu wziąłem się za naukę C, tym bardziej, że zakupiłem książkę naszego forumowicza mirka (polecam książkę, lekko napisana i ta po "chłopsku") oraz wpadł mi w ręce zestaw startowy z and-tech EvB 4.3 (bardzo podobny do tego z ATNEL-a). Pierwsze kroki z diodą i wyświetlaczem LCD za mną. Przerwanie i migoczącą diodą także. Problem...
Witam, zakupiłem arduino UNO R3 z atmega328 wraz z czujnikiem odległości SRF06. Chciałbym wykonać taki amatorski ,,czujnik parkowania" z wykorzystaniem diod led, że gdy zbliżymy ręke to migają szybciej czy coś podobnego. Chciałbym napisać to w języku C , Przede wszystkim musisz użyć hermetycznych transducerów ultradźwiękowych - w samochodzie te tanie,...
Wygląda na to, że uC padł. Po wrzuceniu programu testowego dioda nawet się nie zapala. Czyli można kod testowy wrzucić i programator nie protestuje ? W takim razie mało prawdopodobne, aby µC był niesprawny.... Proponuję taki kodzik na 3 LED-y i RS-a:[syntax=c]#include <avr/io.h> #include <avr/wdt.h> #include <avr/interrupt.h>...
http://obrazki.elektroda.pl/9418966600_1... Witam wszystkich na forum. Jest to moje pierwsze publikowane DIY. Słowo wstępu… Projekt powstał z jednego, bardzo ważnego powodu: bo bardzo chciałem coś takiego mieć! Jest to układ odczytujący kod karty poprzez interface EM4095 z anteną, dekoduje, sprawdza i wysyła poprzez port szeregowy....
https://obrazki.elektroda.pl/4760563300_... W ramach trwającego konkursu Czujnik wilgotności i temperatury AM2302 (DHT22) Czujnik AM2302 może pracować z napięciami 3.3-5.5V posiada 4 wyprowadzenia (jedno niewykorzystywane). Trzy wyprowadzenia wykorzystane są jako zasilanie (1), transmisja danych (2), oraz masa (4), więcej znajdziecie...
Witam wszystkich. Od kilku dni bawię się odczytem kodów z breloków i kart RFID jednakże mam z tym wielki problem. O ile sam układ zmontowałem i wydaję się działać, biblioteki też jakoś uporządkowałem o tyle nie wiem już kompletnie jak mam wyświetlić na wyświetlaczu kod breloka/karty. Sam moduł wydaje się działać ponieważ podczas zbliżania miga mi dioda...
Cześć, słuchajcie mam taki dziwny problemik :/ Może ktoś mnie oświeci o co chodzi. No ale od początku. Mam procka mega16 i podleczoną do niego diodę do portu D pin3, starowana 0 ( świeci ). No i chce sobie zrobić żeby ona migała przy pomocy counter'ów. I napisałem takie coś: #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h>...
atmega32 miganie diody atmega32 miganie diody przerwania atmega32 timer
ściszyć domofon umowa sprzedaż procesor obróbki wideo
scenic kierunkowskazy scenic kierunkowskazy
Pomiar dużych rezystancji przez rozładowanie kondensatora Typ lasera w odtwarzaczu DVD Samsung MM-C430D