Możesz użyć jednego timera. Procedura obsługi przerwania nie może przeszkadzać w obsłudze innych przerwań. W Twoim przypadku nie ma innych przerwań, więc jedyny warunek to ten, żeby procedura obsługi wykonała się w czasie mniejszym niż odstęp pomiędzy przerwaniami. To jest w sam raz dobry materiał na projekt z pustą pętlą główną, i tak to należy zrobić.
W google piszesz atmega32 i pierwszy link to dokument doc2503.pdf http://www.atmel.com/dyn/resources/prod_...
To, kiedy jest generowane przerwanie i jakie, nie zależy od tego, jakie napiszesz procedury obsługi przerwań, a od tego, jakie przerwania włączysz w odpowiednim rejestrze. Do każdego włączonego przerwania musisz napisać procedurę jego obsługi. Jeśli włączasz TOIE - musisz mieć procedurę timerX_ovf_vect, jeśli włączasz OCIE1A - musisz mieć TIMER1_COMPA_vect....
kolega ma kompletnie skopane procedury obslugi przerwań, nie wiem czemu nikt dotychczas tobie nie napisał że obsługa przerwania to nie jest miejsce na stosowanie procedury delay(). To także nie jest miejsce na to aby wstawiać tam instrukcje case-select choć to jeszcze od biedy przejdzie. Przerwanie musi byc maksymalnie zwięzłe. Dla wyświetlacza musisz...
OCR0=0x20; /// podobno mozna zjechac do 0 i otrzymac fck/2 Zjechać może i można, ale chyba tylko do sprzętowego przełączania pinu. bo obsługa przerwania w 1 cyklu jest niemożliwa. void timer0_comp_isr(void) { PORTC ^= BIT(0); } Wrzuć co kompilator wyrzuca do assemblera do kompilacji. W sumie na obsługe jest 32 takty razem...
Twój problem prawdopodobnie polega na tym, że stosujesz instrukcje: [syntax=c]ISR(ADC_vect) // Obsługa przerwania po zakończeniu konwersji ADC { if(wsk_kan==1) { ... wsk_kan=2; } if(wsk_kan==2) { ... wsk_kan=3; } if(wsk_kan==3) { ... wsk_kan=1; } } [/syntax] Przeanalizuj krok po kroku powyższy uproszczony Twój kod, gdy na początku wsk_kan = 1 i wykona...
Niedawno było: TWI_master.c i TWI_master.h może wydawać się nieco skomplikowany, ale skorzystanie z zaimplemntowanych tam funkcji jest stosunkowo proste. We wątku, do którego link podałem, jest przykład obsługi pamięci I2C z wykorzystaniem tych funkcji.
Witam! Mam mały problem. Od kilku godzin próbuję ustalić przyczynę braku możliwości obsługi przerwania w moim zestawie EVB 5.1 z ATMega 32. Mianowicie, próbowałem wszystkich możliwych opcji uruchomienia przerwania poprzez naciśnięcie przycisku i niestety nie wychodzi. Po naciśnięciu przycisku 3 diody mają zostać wyłączane/włączane zależnie od poprzedniego...
Witam Potrzebuje pomocy w obsłudze przerwań. Muszę zrobić projekt skrzyżowania na zajęcia z sieci automatyki, i napotkałem problem z przerwaniami. Próbowałem na wiele sposobów coś napisać, ale bez skutku. Potrzebuje jakiś testowy kod, który np: będzie mi zapalać i gasić diodę podpiętą do jakiegoś portu. Oto kod poprany z jakiejś strony, lecz też mi...
Prosze o podpowiedz-przykladzik jak configurowac (w ATMEGA32)przerwanie np. INT1 aby reagowalo na opadajace zbocze
Używam PWM do generowania różnych współ. wypełnienia dla diody RGB. Jeden przycisk jest odpowiedzialny za zmienianie trybów, jest on podłączony do INT0 (pin pracuje jako wej. z podciąganiem do plusa, a przycisk podpięty do masy). W skrócie, gdy zostaje naciśniety przycisk program wchodzi do obsługi przerwania, inkrementuje zmienna m. Gdy wychodzi z...
Witam! Mam problem z uzyskaniem przerwania od licznika 8-bitowego. Piszę w C i w żaden sposób nie mogę się doczytać jak skonfigurować rejestr TCCR0. Przerwanie potrzebne jest mi do całkowania numerycznego metodą trapezów sygnału z żyroskopu. Doczytałem się, że trzeba coś ustawić w rejestrze SREG, ale mało mi zostało czasu, a potrzebuję tego do pracy...
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...
Witam! Mam program, który wykorzystuje liczniki do wysyłania impulsów o danej częstotliwości. Częstotliwością steruję za pomocą zmiennej okres1, która jest mnożnikiem preskalera. Np. preskaler=8 clkio=1000000Mhz okres1=127, czyli co 8*128=1024us zmienia się stan na danym pinie przerwania od przepełnienia licznika (dla timera1a jest to pd5), co znaczy,...
Witam. W swoim robocie mam zainstalowane dwie diody nadawcze IR i dwa czujniki SFH5110. Czujniki te są podłączone do portów INT0 i INT1 (ATmega32). Chciałbym się dowiedzieć jak przy pomocy avr-gcc ustawić odpowiednio stany początkowe portów na których jest odbiornik oraz wywołać przerwanie w przypadku odebrania odbitej wiązki z nadajnika. Pozdrawiam...
Witam Jak napisac w programie tak aby przerwanie zewnetrzne od PCF8583 co 1s bylo przez mikrokontroler krótko widziane (obojetnie zbocze narastajace albo opadajace). Chodzi mi tu o ATmega32, w atmegach to sie jakosc inaczej robi niz pozostalych AVR. Prosil bym o krótki listing jak ustawiamy INT0 w ATmega i jak trzeba co musimy wpisac do PCF8583 zeby...
Witam, Tak ustawiałem przerwanie a ATmega644 [syntax=c] EIFR = (1<<INTF2); EICRA |= (1<<ISC21) | (1<<ISC20); EIMSK |= (1<<INT2) ; [/syntax] z racji że brakowało mi w procesorze USARTA zmieniłem w projekcie procesor na AVR128DA32, przerwanie ustawiam tak. [syntax=c] PORTD.DIRCLR = PIN0_bm; PORTD.PIN0CTRL = PORT_ISC_RISING_gc;...
Chciałbym napisać przerwanie do mojego programu zegara. Chcialbym aby przerwanie bylo wywolywane zmiana jednego pinu tzn zmiana PINA4 z 1 na 0. Gdy zmienie ten przycisk chcialbym aby wykonalo sie przerwanie. oto moj KOD: int main(void) { char B1; DDRA=0x00; DDRD |= (1 << PD1); LCD_Initialize(); TWI_Init();...
Witam. Próbuję uczyć się C na Atmedze 8 i mam problem z obsługą przerwania. Kod wygląda następująco (z resztą pisany na podstawie kursu z EdW): #include <c:\WinAVR-20090313\avr\include\a... #include <c:\WinAVR-20090313\avr\include\a... #define F_CPU = 1000000 int volatile wyjscia; int indeks; int main (void)...
Witam Nie mogę uruchomić przerwania zewnętrznego na pinie PA7 (ani żadnym innym). Konfiguracja: [syntax=c]PORTF.DIRSET = PIN0_bm; PORTA.DIR &= ~(PIN7_bm|PIN0_bm); PORTA.PIN7CTRL |= PORT_PULLUPEN_bm | PORT_ISC_BOTHEDGES_gc; sei(); [/syntax] Przerwanie:[syntax=c]ISR(PORTA_PORT_vect... { PORTA.INTFLAGS = PIN7_bm; PORTF.OUTSET = PIN0_bm; } [/syntax] Rejestr...
Chciałbym dostać przerwanie od PCF po 15 sekundach. Więc ustawiam rejestry następująco: [syntax=c] PCF8583_write(0x00,00000100); PCF8583_write(0x07,0); PCF8583_write(0x08,11001010); PCF8583_write(0x0f,15); [/syntax] Pin PE4 jako ustawiam jako wejście i podciągam do vcc. Obsługa przerwania poniżej. Coś jest nie tak i zmienna zwiększa się przy każdym...
Witam. Chciałbym prosić o pomoc. Czy ten kod jest poprawny. Program działa bez zarzutów. Natomiast, gdy włączę przerwanie"sei". Układ się zawiesza. [syntax=c]void init_Ex1() { // Timer clock = I/O clock / 1024 TCCR0 |= (1<<CS02)|(1<<CS00); // Clear overflow flag TIFR |= (1<<TOV0); // Enable Overflow Interrupt TIMSK |= (1<<TOIE0);...
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 , przy kwarcu #define F_CPU 4000000UL timerze0 i preskalerze 1 mam przepelnienie po 256 krokach po czasie 0,000064 s. zliczajac 15625 przerwan powinienem miec sekunde. jednak wystepuja u mnie 5 sekund opoznien z kazda kolejna minuta. zliczajac w ten sposob popelniam blad ?
Witam Otóż mam taki dylemat ... Mam taki prosty programik robiący mi za licznik modulo 8. Samo liczenie odbywa się w przerwaniu timer'a ale to nie jest kwestia którą chce poruszyć. Po wywołaniu zewnętrznego przerwania, nie da się go przez czas paru/parunastu sekund wywołać. Czego to może być wina ? (pomijając że moja). Czy przypadkiem nie powinno to...
Witam. Próbuje uruchomić program testowy, który polega na tym, że po wysłaniu na RS-a liczby 2 dioda zapala się na okres 1 sekundy i na ten sam czas również gaśnie przez okres 30 s. Wysyłanie na port szeregowy wykonuje za pomocą przerwania z USART. Odmierzanie sekund z przerwania Timera w trybie asynchronicznym(RTC). Program nie działa, bo mam problem...
Enkodery dają na wyjściu kod Graya i trzeba to zdekodować zanim zaczniesz zliczać impulsy. Jak to zrobić masz w przykładach do mojej książki o C na AVR (link w stopce, przykłady są za darmo).
Witam i pozdrawiam. Chciałbym co 5 minut wysyłać przerwanie z pcf8583 do atmegi32. W pcf wszystko działa, chyba (co zadany czas odpowiednie bity są ustawione i jak mierzę napięcie pomiędzy wyprowadzeniu pinu int pcf a +5v to najpierw mam zero a po upływie zadanego czasu 5v,czyli int jest w stanie niskim), obsługa przerwania w Atmega32 działa jak trzeba,...
Można użyć USART w trybie SPI, bufor działa, ale niewiele to zmienia. Jeśli obsługa przerwania (łącznie z czasem potrzebnym na obsługę hardwarową - to jakieś 4-6 taktów) zajmie więcej niż owe 32 takty, to problem będzie się kumulował, aż dojdzie do przepełnienia bufora i koniec zabawy. Można zrobić tak jak piszesz - w pierwszym przerwaniu czekać na...
[syntax=asm] .device ATmega32 .include "m32def.inc" .def temp= r16 .def counter= r17 .org 0 RJMP start .org $016 ;wektor przerwania dla przepełnienia timera RJMP przerwanie start: ldi temp, high(RAMEND) out SPH, temp ldi temp, (1<<CS00) | (1<<CS02) ;konfiguracja preskalera i zegara out TCCR0, temp ;w rejestrze TCCR0 (ustawienia główne timera)...
Mam kłopot z obsługą przerwania INT0 w ATmega32. Chciałem, żeby były generowane zboczem opadającym. Na nogę ITN0 wchodzi sygnał prostokątny 1Hz z wypełnieniem 50%. Jest rezystor podciągający do +5V. Kod jak niżej. Powinno generować sygnały na beeperzerz podłaczonym do portu D ale nic się nie dzieje. Bascom odmawia skompilowania linijki zawierającej...
cały kod aktualnie wygląda tak. Docelowo w pętli głównej będą inne rzeczy jeszcze. . Może moja metoda jest zła, próbowałem z trybie CTC ale wtedy właśnie nie mam płynnej f wyj tylko właśnie skokowo w związku z rozdzielczością i preskalerem. Stosując prescaler = 1, oraz timer0 preload = 96 zakładasz że przrwania wywołane przez Ovf0 wystąpią co 160 cykli...
Osobiście używam własnej procedury na zboczach i nie odczuwam z tym żadnej niedogodności. Przerwanie na zboczu opadającym musi być potwierdzone na zboczu narastającym, ot cały debouncing. Obsługa przerwania to mikrosekundy i jest niczym w porównaniu z namiętnie stosowanym przez niektóre przypadki waitms() ;).
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 obsługą przerwania zegara czasu rzeczywistego PCF8583....
Jezyki wysokiego poziomu nie nadaja sie dopisania zegarka. Z tym stwierdzeniem się nie zgodzę. Napisałem w C dla ATmega32 program sterujący tablicą świetlną, która mierzy: zegar czasu rzeczywistego stoper do 99 min sześć timerów niezależnie startowanych i stopowanych obsługa przerwania od INT0 do odbioru transmisji z CC1000 (2400boud) i jakoś przy...
Zasada pierwsza jak najkrótsza obsługa przerwania. Czy możesz jednocześnie sygnał z czujnika podać na wejście przerwania INT0 i wybrany pin prcka , czyli czujnik pierwszy podaje masę przez diody na INT0 i pinb.0 czujnik drugi podaje masę na przez diody na INT0 i oinb.1 itd .... Czyli jeśli wystąpi 0 ( masa ) na powolnym pinie jednocześnie zostanie wywołane...
Witam, Czy mógłbym kogoś prosić o pomoc w zbudowaniu instrukcji dającej mi w języku C wartość ostatnich dwóch zmiennych na stosie ? Problem z jakim się borykam wygląda tak, że gdy program zbytnio 'zmęcze' danymi przychodzącymi, to przestaje wywoływać pętlę główną i skacze gdzies... niewiem gdzie. Lecz obsługa przerwania od odebrania znaku cały czas...
Coś lukashb Ci się chyba poplątało. Przy takim ustawieniu Timera próbkę pobierasz co 7.936ms. Pobranie 205 próbek trwa 1.626s. Nieważne czy asm czy Bascom- tak ustawiłeś timer. A to że obsługa tego przerwania trwa w Bascomie 50-100ms to trochę trudno uwierzyć. Chyba że jakieś straszne obliczenia w tym przerwaniu robisz.
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...
"Aż 10 instrukcji.." Ok. Zarejestrowanie strobu - min. 2 instrukcje w pętli. Odczyt dwóch części adresu po 8 bitów - min 2 instrukcje. Sklecenie adresu i odczyt pamięci (skąd w ATmega wziąć 64 KiB RAM na emulowany EPROM?) - załóżmy optymistycznie, że 3 instrukcje. Wystawienie danych na port - min. 1 instrukcja. Wykrycie końca cyklu - min. 2 instrukcje...
Jest już trochę późno i nie chce mi się dokładnie sprawdzać, ale problem jest chyba z obsługa przerwań. Wygląda tak jak by przerwania się nakładały. A wyświetla różne rzeczy przy różnych typach zmiennych, bo korzystasz z gotowych funkcji (lcd_int). Nazwa funkcji od razu sugeruje że najprawdopodobniej służy do wyświetlania zmiennych typu int, a jak dajesz...
Poczytaj [url=http://stsystem.elektroda.eu/progra... Dodatkowo w załączniku masz bezpośrednio kody opisane w tamtym przykładzie. Wszystko działa. Zapewniona jest obsługa dni tygodnia, lat przestępnych etc. Dodatkowo w Timer1 umieszczona jest obsługa autodostrajania pcfa w przypadku problemów z kwarcem. Wsio bazuje na wykorzystaniu...
Ale jak poprzez obsługę przerwania spowodować, że np. po przesłaniu 0x80 (128) uC rozpocznie nadawanie i będzie nadawał aż do otrzymania 0x81 (129)? Musiałbym zdefiniować zmienne globalne, których wartość zmienia obsługa przerwania. A w wiecznej pętli postawić warunek np.: [syntax=c]ISR (UART_RXC_vect) { if(UDR == 0x80) Transmit = 1; if(UDR == 0x81)...
Nie programuję w bascomie bo jest to dla mnie jezyk mało precyzyjny ale go znam. Z tego co piszesz wynika że obsługa 1 wire ( w bascomie)może blokować przerwania (aby nie rozsynchronizowaly odczytu) i to skutkuje tym że wyswietlacz nie jest obsługiwany z zamierzoną czestotliwością. Zaznaczam ze jest to rozważanie teoretyczne na podstawie Twoich uwag...
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 25MHz z gotowego modułu ENC a nie własnym kwarcem....
Witam! ATmega32 16MHz jako slave odbiera dwa bajty po SPI 1MHz ( 15cm taśmy 10 żyłowej )od mastera LPC2148 . Jeżeli jest włączone tylko SPI, a inne przerwania są wyłączone jest wszystko dobrze. Jeżeli włączę przerwanie od timera2 generowane co 100us to zdarza się że atmega gubi jeden bajt i krzaczy się cała transmisja, ale po jakimś czasie jak zgubi...
Jak obiecałem tak wstawiam program demo do testowania enkoderów/impulsatorów. Podłączajcie pod procka przetarte ("iskrzące") stare enkodery i katujcie ile się da. Moje próby wyprowadzenia programu z równowagi nie powiodły się :D Konkretny impuls zawsze należał do konkretnego pyknięcia i nie udało mi się zarejestrować ani jednego błędu mimo prób bardzo...
Witam, 1. Mam nie lada zagwozdkę z obsługą zegara PCF8563p przez Atmege32 + wyświetlacz LCD. Sam zegar działa dobrze. Poprawnie wpisuje datę i godzinę. Problem pojawia się z odczytem. W PCF ustawiam wyjście na 1Hz, które jest połączone z Atmegą jako przerwanie INT0. Co kilka razy, przy resecie uC, gdy program startuje od nowa, to czas zaczyna się niepoprawnie...
No to transmisja może się posypać. Bo jeden bajt jest przesyłany w około 1,25ms. Ten bufor UARTa trochę ratuje bo przetrzyma dodatkowe 3 znaki czyli wyjdzie 3,75ms. Ale obsługa DSa na pewno będzie trwała dłużej więc co jakiś czas mogą być gubione jakieś znaki. Przerwania pasowało by wyłączać i włączać wewnątrz procedury obsługującej DSa. Co każdy bit...
Witam Mam problem z multipleksowaniem wyświetlaczy LED. .......... najpierw próbowałem ustalić, które segmenty mają się zapalać, aby poprawnie wyświetlać cyfrę. No i zaczyna się problem, bo chociaż cyfry zapalają się poprawnie to zapalają się wszystkie. Próbuję kodem, jak poniżej: W zamieszczonym programie brakuje multiplexowej procedury obslugi wyświetlaczy...
Mało tego jak "wyrzucę" 1 << ADIE (zezwolenie na przerwania od adc), to program się nie resetuje. "Gdy wyrzuciłem klucze od samochodu, to nie zużywa benzyny ale" Co za głupie porównanie. Czytaj ze zrozumieniem Fakt, że przetwornik nie działa ale reszta tak. niestety nie działa. Jak chcesz by dział i nie resetował się, skoro włączając przerwania...
Witam Nie chcę zakładać nowego wątku, więc piszę tutaj, bo problem podobny, choć nie do końca. Piszę program na procek XMega, który realizuje wiele rzeczy, a z istotnych tutaj steruje silnikiem krokowym i odczytuje temperaturę z DS18B20. Sterowanie silnikiem oparte jest na przerwaniu timera, w Którym wykonywany jest jeden krok, oraz określane jest opóźnienie...
Witam, Zacząłem obsługę standardu MODBUS RTU. Na wstępie wziąłem pod rozpatrzenie biblioteki FreeMODBUS BerliOS. Udało mi się to uruchomić wstępnie bez problemów dla AVR na prockach typu ATmega8 czy ATmega32 działa ok Tylko pytanie: Czy ktoś używał z szanownych kolegów tych bibliotek (już nawet nie ważne czy dla AVR czy dla innych procków) i mógłby...
(...) Rzecz jasna na 8088. Nie mogę tylko zgromadzić potrzebnych układów scalonych. Jakby ktoś miał Pc/XT do odsprzedania to jestem chętny. Ta architektura jest bardzo fajna, przez 16-bitowość przewyższa AVR i Z80. 16 bit na szynie 8 bit i 20 linii adresowych. Geniusze w tym Intelu. Janek Geniusze w intelu :-) A co powiesz o Motorolli: 68000, zrobiony...
Wytyczne są takie: - Atmega32 - pomiar co 0,2s wejść ADC ( czyli przerwanie np Timer1) - PWM ( i tu musi byc osobny układ lub druga atmega) częstotliwość ok 1kHz - oczywiście ewentualna zmiana aktualnego procentu wypełnienia PWM też co 0,2 sek. Z tego co sie orientuje to wykorzystanie 2 przerwań nie jest proste, a my tego nie potrafimy. Ważne jest to...
Witam wszystkich. Rozwiązałem problem. Okazało się że 1 problem polegał na tym iż jak sie włączyło przerwania i była obsługa i2c softwarowa to Atmega i układ pcf poprostu w pewnych miejscach miały sprzeczne stany - pcf 0 a atemaga 1 i zwarcie, oczywiście port nie padł ponieważ układ pcf ma zabezpieczenia. Problem rozwiązano poprzez sterowanie wyprowadzeniami...
Całkowicie zapomniałem o temacie :) Z problemem poradziłem sobie w następujący sposób, jest to wycinek z większego programu więc coś może być źle wycięte :) [syntax=c] //--------------------------------------... // Dołączone biblioteki //--------------------------------------...
Witam, mam mały problem ze sterowaniem silnika krokowego za pomocą potencjometru. Postaram się szerzej opisać mój problem. Podczas działania programu wartość ADC dość mocno skacze mimo zrobionego zabezpieczenia. Silnik gubi kroki. Do celów testowych używam płytki prototypowej z procesorem ATMega32 i sterownika silników krokowych na układzie scalonym...
Tak negatory to IC2. Służą one do sterowania silnikami DC poprzez mostki STA434A. Jeśli zabraknie prądu to silniki przestaną pracować i w zasadzie obojętne jest jaki będzie wówczas stan na wyjściach negatorów. Nie wiem też czy mostek pobierałby wtedy prąd czy nie, ale z tego co zrozumiałem to sam negator by pobierał dla utrzymania takiego stanu? Jeśli...
Witam Serdecznie. Już założyłem raz ten temat ale został skasowany z powodu braku schematu. Zamieszczam schemat w załączniku, oraz kod : [syntax=c] #include <avr/io.h> #include <avr/delay.h> #include <avr/interrupt.h> #include "spi.h" #include "ioinit.h" #include "animacje.h" #define BUZZ_ON PORTD |= _BV(PD5) #define BUZZ_OFF PORTD...
mirekk36 . Na razie nie wiemy jakie kolega ma długieee te transmisje danych. RAM nie jest z gumy, a powinno jeszcze starczyć na całą masę zmiennych i trzy stosy, a zwłaszcza na HWStack, który by tu mocno puchnął. Jeśli to jest ATtiny2313 to pewnie, że nie ma o czym w ogóle mówić ale jeśli już coś co ma na pokładzie z 16kB Flash'a (nawet 8kB) i 1k RAM...
delayX to procedury opóźniające w przerwaniu akurat ma służyć odczekaniu do wygaśnięcia drgań styków przycisku. Według sugestii zamieszczam program bez definicji rejestrów i trybu SPECIAL, żeby nie zaciemniać, a to akurat nie ma wpływu na działanie. .CSEG ; początek segmentu programu .ORG 0x00 ; wektor przerwania od resetu rjmp Reset .ORG 0x04 ; wektor...
Zainstalowałem AvrStudio7 , jest ok. Znalazłem część starego kodu ale to tylko szkielet jest niekompletny. [syntax=csharp] //**************************************... // NIXIE CLOCK //**************************************... #include <stdint.h> #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h>...
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...
Witam Dzięki pomocy elektrody i 2 mądrych książek udało mi się coś takiego naskrobać. Przez moment używałem 2 timerów ale po jakimś czasie wyszło coś takiego: $regfile = "attiny2313.dat" $crystal = 4000000 Config Portb = 255 'wszystkie końcówki jako wyjścia Portb = &B11111111 'na początek wygaś Config Portd = &B1111111 'dwie najmłodsze jako...
Nie potrafię zrobić tego multipleksu , próbowałem kilka rozwiązań i w końcu sięgnąłem po kod michaloko12 do którego odnosząc się dopisałem funkcje wyświetlania w przerwaniu ale niestety nie działa. Jak mam rozwiązać ten multipleks bo z pomocą książki tego nie zrobię [taka zachwalana a przykładów realizacji na lekarstwo]. Tak wygląda teraz [surówka]....
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 nie ten, który jest przypisany w kodzie ( działa...
Witam Mam program budzika, który jako dodatkową atrakcję miał mieć możliwość mówienie czasu na żądanie i odtwarzanie oprócz buzzera utworu jako alarmu. Atmega steruje przez jedno SPI programowe układem MAX7219, a przez konwerter poziomów i drugie SPI programowe odtwarzaczem WTV020SD. O ile sam WVT020SD + PCF8563 ( wyjście CLK do INT1 ) działają dobrze,...
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] //======================================... int main() { DDRB=0x01; //podświetlenie LCD (reszta...
atmega32 przerwania przerwania atmega32 atmega32 przerwania zl3avr
wysycanie elektrolitu identyfikacja diody szklanej wzmacniacz glosnik buczy
Dławik zaporowy LTP 0,5-1200-27 – parametry, zamienniki, interpretacja oznaczenia Play Now TV Box 2 – przypięcie HDTV, brak aktywacji, nie działa Bluetooth, DVB-T2, pilot