Przed petla while wlacz przerwania sei();
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...
Mirekk36 a jaką dać częstotliwość taktowania bo dla twojej funkcji mi dioda miga co około 72s Najpierw sprawdź czy jak dasz _delay_ms(1000) to czy miga ci co sekundę - jeśli nie to napisz/powiedz/sprawdź czy masz dobrze przede wszystkim Fusebity ustawione ? Na pewno sama funkcja i while nie robi takiego narzutu żeby zamiast 60s było 72s ;) - jak już...
Istnieje jeszcze jedna możliwość. Jakiego używasz AVR-GCC? Możesz mieć jakąś starszą wersję z błędem, który właśnie objawia się poprzez niepoprawne działanie przerwań COMPARE. Wystarczyłby jeden błąd w adresie wektora TIMER0_COMP_vect i "po zawodach". ps. Nie rzekomo działającego, tylko działającego. Niestety nie mogę ci strumieniowo przesłać video...
500 ms w przerwaniu? Przeczytaj sobie: http://mikrokontrolery.blogspot.com/
DDRA=0xff; //port A jest portem wejściowym wg. mnie wyjściowym. volatile unsigned char i; // flaga określająca poprzedni stan diody nie korzystasz z przerwań więc po co volatile? Po za tym po co sprawdzasz poprzedni stan diody skoro stosujesz negacje? Wydaje mi się że tego typu warunek w zupełności wystarczy: if (bit_is_clear(PINB, 2))...
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...
Trochę skąpych informacji udzielasz;) Nie działa to znaczy? Jeśli wszystko stoi to podepnij diodę na port i migaj nią ale za pomocą przerwań, wtedy się przekonamy co tak na prawdę nie działa.
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?
Wykonać prosty test. Jeśli w układzie jest jakaś dioda LED - zaraz w funkcji main ustawić nieskończoną pętlę migającą w/w diodą. Ważne, żeby było jeszcze przed włączeniem przerwań. To podważy twierdzenie, że uC nie startuje, ponieważ program zajmuje więcej niż x% pamięci FLASH.
Ale mieszasz. Ustawiłeś dwa cykliczne przerwania i dziwisz się, że coś nierówno miga. Tu w avr nie ma wielowątkowości sprzętowej i jedno przerwanie przeszkadza drugiemu. Przenieś i wyłącz to przerwanie to co masz w ISR(TIMER2...) do ISR(TIMER1...) . Idea programowego PWM i timerów jest właśnie w tym aby działało wszystko pod jednym wspólnym cyklicznym...
Dzień dobry Mam problem z moim kodem: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> //tutaj wybieram port i piny gdzie ma być PWM (2x) #define PORT_T1 D #define T1_PIN 2 #define PORT_T2 D #define T2_PIN 3 // #define PORT(x) SPORT(x) #define SPORT(x) (PORT##x) #define DDR(x) SDDR(x) #define SDDR(x)...
Witam wszystkich! Mój problem polega na tym, że przerwania nie chcą działać. Kod: [syntax=c] #include<avr/io.h> #include <avr/interrupt.h> int main(void) { DDRA = 0xFF; PORTA = 0xFF; DDRD = 0; //ustawiam jako wyjście PORTD = 0xFF; //ustawiam stan wysoki MCUCR |= (1<<ISC01); //przerwanie dla zbocza malejącego GICR |=(1<<INT0);...
Bawię się portami wejścia wyjścia używając atmega32 w zestawie startowym ZL3AVR (http://www.btc.pl/pdf/zl3avr.pdf). Zwarłem zworkę małej klawiatury (JP3), połączyłem wyjścia klawiatury w1..w4 do PB0..PB3 oraz wyjścia PA0..PA2 do LEDów D0..D2. Program, który mnie męczy: .INCLUDE "m32def.inc" ldi R16, 0b00000111 // ldi - ładuje rejestr wartością...
Witam Mam problem Wszystko działało na portach PA PC i PD4-7 ale jak podpiąłem cały PD PB do drugiej części matrycy diodowej to przestało działać chyba przez przerwania. Zmieniłem rodzaj przerwania na czasomierz z uwagi ze chyba piny INT0 zmieniały stany. Wszystkie porty mam jako wyjścia a w części matrycy mam błędy zawsze w tym samym miejscu. Jaki...
Cześć, mam problem. Jestem w trakcie pisania mojego programu do sterowania przekaźnikami radiowo, na podczerwień i przez komputer. Na płytce są dwie diody, czerwona(PC5) i zielona(PC4). Chcę aby mikrokontroler zaświecił diody na czas jednej sekundy, zgasił ją i tak trzy razy powtarzał. Nie rozumiem dlaczego diody świecą "ciągle", bez żadnych mrugnięć...
Witam, Zaczynam swą zabawę z C i przerwaniami. Chciałbym aby w przerwaniu migała mi dioda (co 1 sek) Procek jest taktowany z częstotliwością 8Mhz. Oto kod: #include <avr/io.h> #include <avr/interrupt.h> #define D1_PIN (1<<PA0) // PIN DIODY int main(void){ DDRA=0xFF; // PORT A JAKO WYJSCIE TCCR0 |= (1<<WGM01);...
Witam! Temat brzmi zapewne banalnie dla niektórych.. Nie, nie znalazłem odpowiedzi na moje pytanie w innych wątkach, chociaż jest ich mnóstwo. Zrobiłem banalny projekt z diodą led podpiętą przez rezystor pod pin PB0, przycisk z jednej strony zwarty do masy, a z drugiej podpięty pod pin PD6. Zabawa polega na tym że chciałbym zgasić diodę za pomocą guzika...
Witam proszę o sprawdzenie kodu który ma za zadanie włączać i wyłączać dwie diody co sekundę . [syntax=c] /* * main.c * * Created on: 05-03-2013 * Autor: Wojciech Kasprzak */ #include <avr/io.h> #include <util/delay.h> #define LED1_PIN (1<<PC1) #define LED2_TOG PORTC ^= LED1_PIN #define LED2_PIN (1<<PC2) #define LED1_TOG PORTC...
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, podpiąłem kilka diod (dokładnie 20) pod mikrokontroler ATmega32A i w momencie w którym wtykam programator do układu automatycznie zapalają się trzy z nich. Dokładnie te pod pinami PC2, PC3 i PC5. Sprawdzałem czy nie stykają się gdzieś z zasilaniem, czy sa podpięte do właściwych pinów i czy programator jest podpięty właściwie. Wszystko raczej...
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> //dołączenie podstawowej biblioteki #include <avr/interrupt.h>...
Witam. Mam taki problem, że jak chcę zapalić pełno ledów w pętli to nie działa. Wpisując ręcznie w pętli while wszystko działa uC Atmega32 16MHz [syntax=c] PORTB &= ~(1<<diody[1]); _delay_ms(500); PORTB |= (1<<diody[1]); _delay_ms(100); [/syntax] [syntax=c] #include <avr/io.h> #include <util/delay.h> int led=0; uint8_t i,...
Co tutaj przekombinowałem? Atmega32. Tryb Licznika. Celem było zapalenie i gaszenie diod co sekundę. Preskaler = 256. Przerwanie tak wyliczone aby wykonywało się co sekundę. Timer 16bitowy [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> ISR (TIMER1_OVF_vect) { PORTC ^= ~0xFF; //zmiana stanu portu C...
Witam, Mam taki problem. Otóż programuję sobie ten procek takim kodem [syntax=c]void main( void ) { DDRA=0xff; PORTA=0x00; PORTA=0xff; while(1){}; } [/syntax] Podłączam sobie diodę i dioda zamiast świecić to cały czas miga :/ Jak podłączę tę diodę tak samo do Megi32 to świeci bez problemu. Ta 162 jak sprawdzę miernikiem pokazuje na wyjściu tylko około...
witam Napisałem kod przy którym atmega32 odbiera wyniki pomiarów w trybie master z sonarów od atmegi8 . Podejrzewam że mam błąd przy inicjacji spi lub przy pomiarze ponieważ w obydwie diody święcą cały czas niezależnie od odległości przeszkody . [syntax=c]/* * pomiary.c * * Created: 2015-01-31 18:01:14 * Author: Damian */ #include <avr/io.h> #include...
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...
Wartość dla 1 sekundy: OCR1A=((częstotliwość procesora)/preskaler)-1 Wartość dla 4 sekund OCR1A=((częstotliwość procesora)/preskaler)-4 Jedynka w podanym przeze mnie wzorze nie oznacza 1 sekundy. Jeden trzeba odjąć z innych względów. Po prostu licznik nie zaczyna liczyć od 1 tylko od 0, więc odliczanie np. do 5 oznacza (0 1 2 3 4 5), czyli 6 impulsów....
Dziękuje za pomoc, fakt kod wymaga dużej poprawy. A czy do takiego menu jednopoziomowego, że wybór opcji zależy od ilości wciśnięć przyciska muszę skorzystać z przerwań, czy jest jakaś inna opcja?
Preskaler zależy od tego czym taktujesz mikrokontroler.Podaj jak masz ustawione fusebity.Przerwania z reguły maja sie jak najszybciej wykonywać dlatego w przerwaniu ustaw jakąś flagę a w pętli sprawdzaj ja i migaj diodami.
Tak więc przerobiłem kod tak jak mówiliście i wygląda teraz tak: [syntax=c] #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> struct keyboard { int lastKey; int isPressingNow; int numberOfKey; } k; volatile int interrupt; void init() { DDRA = 0xFF; // set Port A as output DDRB = 0xF0; //...
Akurat to ja tworze ten bootloader jako osobny projekt w AVR Studio (wersja pisana w C). Na razie mam tak zrobione, że funkcja main jest przesunięta w obszar bootloadera wraz z przerwaniami za pomocą opcji -Wl,-Ttext,adres. Do funkcji main wrzucone jest proste miganie diody, żebym wiedział, że coś tam wykonuje Atmega. No i w tym problem, że nic się...
Witam! Mam następujący problem: Kiedy włączam obsługę przerwania z portu szeregowego, procesor strasznie zwalnia, nie wyrabiam się w czasie z programem... Program jest w Bascomie, kontroler to Atmega32. Wszystko zwalnia tragicznie, nawet jeśli w podprogramie przerwania napiszę od razu powrót: Serial_int: Return Sprawdziłem też: Serial_int: Toggle PORTB.3...
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))...
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...
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ę...
może to wina bascoma.. nieee no kolego (sorki) ale puknij się w głowę, zrób "mea culpa" i przestań szukać winy za swoje błędy wszędzie tylko nie w swoich poczynaniach. Czyżbyś był "kolejnym" pierwszym człowiekem na świecie, który doszukał się tak poważnago błędu w Bascomie??? sorry ale to jest śmieszne (przepraszam za te ostre słowa ale gdybyś zadał...
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"....
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. 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...
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...
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ś...
Typ płytki Arduino to Duemilanove - Połączenie diody LED: zewnętrzna dioda - Czas migania: dowolny - Dalsze działanie programu: zakończenie pracy Wstępna ocena dostępnych informacji - Analiza podanych przez użytkownika danych: - Płytka Arduino: Duemilanove. - Połączenie diody LED: Zewnętrzna dioda podłączona do płytki. - Czas migania: Dowolny (domyślnie...
witam, próbuję skomunikować 2 procesory: 1) wystawia na złączke 1 i 0 z określonymi przeze mnie przerwami np. 1s 2)próbuję atmegą 32 odczytać przez przerwanie wysłany stan i zapalić diodę Niestety z marnym skutkiem. Program pisany w Bascomie. Poniżej jego treść: //konfiguracja portu D z którego maja byc sczytane wartości Portd = 255 Lcd_io_ind Alias...
Jednka pojawil sie nastepny problem ktorego nie moge rozwiazac, jak badalem ten kod ktory mowilem, ze dziala; to duszac pare razy na przycisk program sie zawieszal. Wie ktos moze dlaczego? Może kolega rozwiązał ten problem? Szukałem podobnego rozwiązania i ten wątek okazał się bardzo pomocny, ale mam identyczny problem. Jeśli będe dusił przycisk co...
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...
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 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...
Kolega Duch__ ma rację, czujniki DS18B20 i DS1631 różnią się w sposobie komunikacji. Nic nie stoi jednak na przeszkodzie, aby zmodyfikować schemat i dodać obsługę 1Wire. W końcu to tylko jeden rezystor podciągający i jeden dodatkowy port µkontrolera :) Wykorzystałem układy na I2C z powodu ich mniejszej podatności na zakłócenia transmisji (głównie...
brodda , a co z fusebitem M103C w Twojej M128 :?: Piotrek
dziki, siedziałem nad tym trochę i już się komunikują, ale coś nie działa. Chce zrobić tak by obydwie atmegi zapalały diody w tym samym czasie i je gasiły o to kod: master: void SPI_master_init() { PORTB|=_BV(PB2);//wlaczenie lini ss na stan wysoki DDRB|=(_BV(PB2) | _BV(PB3) | _BV(PB5));//Piny SS,...
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ą...
http://obrazki.elektroda.pl/9114516200_1... Autorski projekt wyłącznika zdalnie sterowanego za pomocą pilota RC5. Cały układ kontrolowany jest za pomocą mikroprocesora z rodziny AVR, ATtiny2313. Na uwagę zasługuje zasilanie układu bezpośrednio z sieci elektroenergetycznej o napięciu 230V, zrealizowane przez zasilacz bez transformatorowy....
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...
Wlaczasz przerwania tylko po co skoro nie masz zadnych procedur do ich obslugi ?? Bardzo mozliwe ze Bascom wtedy skacze na poczatek pamieci powodujac ze wszystko rusza od nowa. Pozdro Dexter
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"...
Z zasilaniem nie jest tak źle - żeby nie oślepnąć w pomieszczeniu, używam jasności od 0 do 30 (powyżej nie daje się wytrzymać), a w animacjach świeci najwyżej 1/5 wszystkich diod. 288 diod zasilałem przez USB lub z ładowarki do telefonu, do 576 użyję zasilacza 3A. Efekty mam bardzo spokojne, bo nie lubię, jak mi coś za bardzo miga - błędne ogniki z...
- albo ustawiasz pin OC1A w automatyczne zmienianie stanu na przeciwny przy porównaniu z OCR1A poprzez wykorzystanie COM1A1 i COM1A0. Tylko tutaj musisz DDR pinu OC1A ustawić jako wyjściowy ) Dokladnie o takie rozwiazanie mi chodzi. Faktycznie zapomnialem o TCCR1A= (1<<COM1A1). Obecny kod: #define CLK_LED PD5 .... [syntax=c] DDRD |= (1<<CLK_LED)...
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ść...
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...
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 timer atmega32 przerwania
mastercook kuchenka zawór filtrze paliwa regulator szerokości impulsów
energy saver oszczędzanie energii energy saver oszczędzanie energii
Najlepsze taczki akumulatorowe: Makita, PowerPac, Scheppach, Greenworks Bateria w Fujitsu LifeBook E Series nie działa - przyczyny