(at)seba_x:A co to za bzdura?:> • Peripheral Features – Two 8-bit Timer/Counters with Separate Prescaler, one Compare Mode – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode A co do pytania autora, nie, zliczanie umożliwiają tylko dwa pierwsze timery. Trzeciego można używać jako wewnętrznego. Nie tylko...
U mnie (Katowice) z DCF77 nie ma problemu, oczywiście zdarza się, że przez jakiś czas nie działa, ale przecież nie musi - wystarczy że złapie sygnał od czasu do czasu. Z tego co zauważyłem, to strasznie przeszkadza w odbiorze DCF77 komputer. Kiedy miałem zasilane układy przez USB to generalnie był problem, gdy je zasilałem osobno - z sieci lub z baterii...
Po 1) użyj znaczników [code]... Po 2) funkcje inline _delay_us i _delay_ms muszą być wywoływane z argumentami o wartości znanej w trakcie kompilacji (stałe) - było o tym wielokrotnie na forum. [url=http://www.nongnu.org/avr-libc/user... Po 3) co do inline asm to zobacz [url=http://www.nongnu.org/avr-libc/user...
Robi się to prosto na wejściu ICP Atmegi, mierzysz czas pomiędzy kolejnymi zboczami, raz jest opadające, raz narastające itd.. potem to tylko interpretacja wyników, liczenie bitów i po odliczeniu 64 bitów z transmitowanych 66, bo dwa ostatnie dla uproszczenia procedury pomijasz. wyświetlasz na LCD lub wysyłasz po RS232 do komputera, a tam wyświetlasz...
Czas/impuls czy impuls/czas to jest tylko kwestia programowa, zależy czego potrzebujemy. Ja do obliczania z tego prędkości musiałem użyć dzielenia wielobajtowego, ale niestety to było jedyne rozwiązanie, gdyż pozostałe dwa liczniki użyłem do załączania pasm w generatorze SRG. Dzielenie wielobajtowe zajmuje strasznie dużo czasu (ok. 700 cykli zegarowych...
Witam, W dokumentacji dowolnego mikrokontrolera ATmega z łatwością można odnaleźć tablicę z wektorami przerwań, np. taką: 1 $0000 RESET 2 $0002 INT0 External Interrupt Request 0 3 $0004 INT1 External Interrupt Request 1 4 $0006 INT2 External Interrupt Request 2 5 $0008 INT3 External Interrupt Request 3 6 $000A INT4 External Interrupt Request 4 7 $000C...
Witam wszystkich czy ktoś mógłby podpowiedzieć jak uzyskać odliczanie czasu w sek na atmedze? w programie CodevisionAVR uzyskuje taki kod w którym niby jest już jakiś wietrzny timer ustawiam go nawet na 8MHz ale nie wiem jak wyprowadzić to odliczanie sekund np na lcd wystarczy żeby ktoś podpowiedział to a dalsza cześć czyli odliczanie minut i godzin...
Witam, sytuacja wygląda następująco: chce zrobić PWM'a w przerwaniu TOV1, który sterowany jest z ADC. Problem polega na tym, że kod, który jest w tym przerwaniu nie powoduje żadnej zmiany na wyjściu PWM, jeżeli przenoszę kod do pętli nieskończonej wszystko chodzi jak należy i nie wiem dlaczego to w przerwaniu nie działa. Ponad to, gdy w przerwaniu tuż...
Dziękuję wam za wszystkie odpowiedzi wiele mi to pomogło jednak ciągle mam problem. Jest lepiej bo coś tam już widać ale jeszcze nie jest ok. Zaznaczam na początku że nie mam należytego sprzętu aby zrobić to jak należy jednak zanim zainwestuję w mikrokontroler taktowany 25 Mhz chcę mieć już jakiś wstęp na sprzęcie który posiadam a posiadam Atmegę16...
Witam , mam nadzieję iż nie zanudziłem bez reszty.. W zestawieniu z moimi "dokonaniami asm." kolega michalko12, jest najbliższy temu co ja kiedyś robiłem . Oto wersja asm z przełącznikiem kompilacji aby kompilować jako samodzielny plik - kto chce ->ten może :D ( ta wersja to 16-timerów, 16-nasto bitowych, każdy cztery tryby konfiguracji, oczywiście...
Hej, Dzielnik zmieniłem i jest przed diodą. Dodanie kondensatora C6 za diodą powodowało, że przy rozłączeniu zasilania mega nic nie zapisywała i zliczała od zera. Podobnie jak wpisanie polecenia RISING. Odlutowałem C6 i zmieniłem polecenie na FALLING. Zamieniłem dzielnik tak jak był na początku a więc 100K i 18K tak aby comparator wyzwalał się przy...
Jak to nic nie podłączone ? A jak ma uc odbierać kody z pilota jeśli nie na ICP ? This program works by connecting the Data output from the IS1U621 to the ICP ' Pin of the AVR and then uses the Capture1 interrupt to measure the time ' between each bit to know if it is a 1 or a 0 and then uses Compare1a interrupt ' to detect that there has not been a...
A w pliku "m8def.inc" stoi: .equINT0addr=$001; External Interrupt0 Vector Address .equINT1addr=$002; External Interrupt1 Vector Address .equOC2addr =$003; Output Compare2 Interrupt Vector Address .equOVF2addr=$004; Overflow2 Interrupt Vector Address .equICP1addr=$005; Input Capture1 Interrupt Vector Address .equOC1Aaddr=$006; Output Compare1A Interrupt...
Witam, czytając książkę A. Pawluczuka natknąłem się na inicjację wektorów przerwań. Jak wiadomo w książce jest wykorzystywany µC ATmega8515 (niestety ja korzystam z ATmegi32). Przykładowa tablica tutaj: .orgINT0addr ;External Interrupt0 Vector Address reti ; ;---------------------------------------... .orgINT1addr...
#include <mega128.h> #define RXB8 1 #define TXB8 0 #define UPE 2 #define OVR 3 #define FE 4 #define UDRE 5 #define RXC 7 #define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<OVR) #define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC)...
Rzut oka na datasheet, na pierwszej stronie: "Four 16-bit Timer/Counter with Separate Prescaler, Compare- and Capture Mode" Powinieneś więc dać radę zmierzyć nawet cztery takie sygnały i niekoniecznie zaczynające się w tym samym momencie. Trzeba wykorzystać tryb capture liczników. Chyba że chcesz się tak męczyć dalej to jeśli faktycznie oba sygnały...
A oto prosta funkcja (kompiluje się w najnowszym AVRStudio) :D : #include <ATmega8535.h> .include "m8535def.inc" ; Prohibits use of non-implemented instructions (ATmega8535) #define XTAL 11059200 #define USART_BAUD 19200 #define _UBBR(_X,_X_BAUD) ((_X/(16*_X_BAUD))-1... #message "_UBBR =="...
Zerżnięte z helpa : CONFIG TIMER1 = COUNTER , EDGE = RISING, CAPTURE EDGE = RISING , COMPARE A = DISCONNECT , COMPARE B = DISCONNECT -- Pozdrawiam, Daniel
Ja nie widzę problemu. :D Timer1: CONFIG TIMER1 = COUNTER | TIMER | PWM , EDGE=RISING | FALLING , PRESCALE= 1|8|64|256|1024 , NOISE CANCEL=0 |1, CAPTURE EDGE = RISING | FALLING , CLEAR TIMER = 1|0, COMPARE A = CLEAR | SET | TOGGLE I DISCONNECT , COMPARE B = CLEAR | SET | TOGGLE I DISCONNECT , PWM = 8 | 9 10 , COMPARE A PWM = CLEAR UP| CLEAR DOWN | DISCONNECT...
Prosty program na AVRStudio : #include <m16def.inc> ; Prohibits use of non-implemented instructions (ATmega16) .dseg .org SRAM_START .cseg ;—————R...
Sluchaj - krotka pilka - masz do dyspozycji trzy przewody - masa, zasilanie i sygnał. Zasilasz to z 5V. Odpalasz PWM na atmedze i sygnał zapinasz na pin od PWM atmegi np OC1A. Sterowanie polega na zmianie wypełnienia impulsu :) Realizujesz to w atmedze przez PWM oczywisccie :) U mnie smiga cos takiego: #include "naglowkowy.h" void Serwo_init(void)...
ADC w tym przypadku będzie się wyzwalać z częstotliwością zależną od OCR1A Czy aby na pewno? Jako wyzwalacz dla ADC mogę wybrać jedynie: - Timer/Counter1 Compare Match B , - Timer/Counter1 Overflow, - Timer/Counter1 Capture Event. Na tej liście nie ma Timer/Counter1 Compare Match A , które odpowiedzialne jest za tryb CTC...robiw
Z noty katalogowej ATmega8515 (pierwsza strona): • Peripheral Features – One 8-bit Timer/Counter with Separate Prescaler and Compare Mode – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode – Three PWM Channels – Programmable Serial USART – Master/Slave SPI Serial Interface – Programmable...
Faktycznie, tryby fast-PWM mają swoje ograniczenia, już nie pamiętałem dokładnie. Robisz więc tak: Zegar rejestru podłączasz do OC1B. Ustawiasz tryb CTC, toggle OC1B on compare match. Do OCR1A wpisujesz 2047, lub 4095 - itp. wartość, aby uzyskać okres >= 2ms z wymagana rozdzielczością. Z tym, że najlepiej dobrać tak preskaler, aby częstotliwość taktowania...
Witam, złożyłem płytkę, napisałem kod i coś nie działa, narazie podam kod bo płytka śmiga byłbym wdzięczny za sugestie co jest nie tak że to nie chce działać, kod zbudowany po części w CodevisionAVR. Wyświetlacz jest na wspólnej Katodzie stąd mój wniosek że aby zaświecić jakiś segment muszę wysłać 0 na pin, a aby go zgasić 1. Jeżeli źle myślę to poprawcie...
Witam, pisze program w assemblerze który pozwarciu INT0, będzie wykonywać określoną czynność(łączyć się z innym urządzeniem), Ale narazie utknąłem w martwym punkcie, napisałem program który po zwarciu INT0 wywołuje przerwanie które zapala diodę podpiętą do lini PC0 5 razy i gasi(zapalenie uzyskuje poprzez ustawienie PC0 w stan wysoki). Całość funkcjonuje...
Zainstalowałem AVR Studio4 i lecę od początku z google i pdf na temat ASM i AVR Powiedzcie chociaż czy w dobrym kierunku zmierzam? Bo jak w złym to odpuszczam i daje sobie spokój, pobawię się migającymi diodami w Bascomie. Tam gdzie nie ma komentarza to nie wiem co to znaczy i co robi ale było w pdf lub innych opisach, jeżeli ktoś może mi wyjaśnić instrukcje...
Może najpierw zacznę od tego co muszę zrobić. Potrzebuję generatora impulsów PWM, ma mieć kilka częstotliwości do wyboru z góry zdefiniowanych, po wybraniu jednej częstotliwości i naciśnięciu startu wypełnienie ma się zmieniać powiedzmy co 5 sekund o 5%. No to czeka cię zabawa z opcjami Prescaler i Pwm . Bo będzie to najprostszy sposób dla Ciebie....
Wciąż nie rozumiem skąd to ograniczenie częstotliwości o którym mówisz - mój timer1 jest skonfigurowany na 1MHz (prescaler /8, a zegar główny 8MHz). Ale to bez znaczenia, bo w takim razie jednak wykorzystam ten timer0 i przerwania zewnętrzne (zamiast input capture timera1). A więc serdeczne dzięki za pomoc ;) I chyba niestety się nie przekonam czy compare...
Witajcie! Robię bibliotekę mającą w zamyśle być modułem do I2C slave, z użyciem atmegi 128A. Wyizolowałem najmniejszą możliwą część błędu który doświadczyłem, może ktoś z Was będzie miał pomysł co może być przyczyną. Żebyśmy wiedzieli o czym dyskusja, kod programu: avr-g++ -O0 -std=gnu++1y -Wall -Wextra -Winline -mmcu=atmega128a Testowałem również z...
Wydaje mi się, że problem nie dotyczy wyjścia na diody (bo one tak naprawdę tylko w pewnym momencie programu sygnalizują jego etap), problemem jest chyba wejście sygnału do procesora (tak mi się wydaje). Wyjście mogę wyłączyć, bo de facto nie ma to żadnego znaczenia dla sensu czy działania. Tat właśnie przypuszczałem.. Wracając do wcześniejszej wypowiedzi:...
Witam. Jestem początkującym w dziedzinie programowania na elektronice znam się dobrze. Chciałbym zbudować komputer pokładowy do mojej hondy civic i znalazłem na elektrodzie projekt z pod tego linku. http://www.elektroda.pl/rtvforum/topic22... Płytkę zaprojektowałem na nowo pod atmege128 reszta bez zmian. Wyświetlacz od Siemensa s65 ls020 podłączyłem...
Do obsługi Timera1 są 4 wektory i nie wiem, które aktywować, co wpisać w procedurze odwołującej się, czy w ogóle jest taka potrzebna. Czy wystarczy tylko uruchomić te przerwanie i sygnał będzie generowany automatycznie ? Tabelka jest prosta: TIMER1 CAPT Timer/Counter1 Capture Event Zdarzenie z przechwycenia licznika (zwykle przez zmianę na pinie...
Pozwoliłem sobie uczytelnić kod dla pokazania jak można sobie ułatwić pisanie kodu - zmieniamy w jednym miejscu, a zmiany są uwzględniane w całym kodzie... Daje to bezbolesną możliwość dowolnego przepięcia linii sygnałowych pod inne wyprowadzenia µC przy minimalnych zmianach w kodzie (podobnie jak w językach wyższego poziomu). #include <m16def.inc>...
Witam Napisałem prosty program używający timera1 i timera 2 do zliczania częstotliwości, Chciałbym użyć dodatkowo serwa do mojego projektu ale używając intrukcji Servo coś nie tak dzieje się z serwem . Po włączeniu zasilania ciągle pracuje i próbuje przekręcić się o 360 stopni "ciągle pracuje". Kiedy w kodzie spełniony jest warunek i uruchamia się komenda...
Atmega32 ma rejestr TIFR, czyli usuń "1". [syntax=asm]; Clear interrupts (if any happened). sbi _SFR_IO_ADDR(TIFR), OCF1A[/syntax] ; TIFR - Timer/Counter Interrupt Flag register .equTOV1= 2; Timer/Counter1 Overflow Flag .equOCF1B= 3; Output Compare Flag 1B .equOCF1A= 4; Output Compare Flag 1A .equICF1= 5; Input Capture Flag 1 edit. Jeszcze TIMSK zamiast...
Witam! Polecam ATmega8: Features: • High-performance, Low-power AVR® 8-bit Microcontroller • Advanced RISC Architecture – 130 Powerful Instructions – Most Single-clock Cycle Execution – 32 x 8 General Purpose Working Registers – Fully Static Operation – Up to 16 MIPS Throughput at 16 MHz – On-chip...
Witam was wszystkich. W sumie chciałbym żebyście sprawdzili kod, który napisałem bo juz nie mogę znaleźć wyjścia. Kod to przepisywanie z 4 kanałów 8 bitowego ADC na kanały PWM. Problem w tym że nic na wyjściu PWM sie nie pojawia (nic tzn. stan wysoki). Żeby było prościej to powiem, że oddzielnie (program, który przepisuje tylko z jednego wyjścia ADC...
Już działa:) Jeżeli chodzi o same ustawienia i inicjalizację Timera0 oraz przerwań to okazało się tak jak mi się wydawało że wszystko miałem dobrze. Jak zwykle w takich przypadkach błąd okazał się błahy i leżał w zupełnie innym miejscu. Otóż przy definiowaniu wektorów przerwań nie używałem definiowania ".org". Początek mojego programu wyglądał tak:...
Witam, Chciałbym zaprojektować matrycę led 8x8 w której losowe (pseudolosowe) ledy przyciemniały się i rozjaśniały, nawet kilkanaście jednocześnie i żeby wszystkie równo nie przygasały, tylko to przemieszać trochę; tzn. jedna się rozjaśnia, druga się przyciemnia, no w różnych fazach, żeby były. Sterowanie PWM multipleksowanej matrycy zdaje się być...
nic to nie daje. Juz nie wiem co mam robić próbowałem jeszcze użyć LED - do portd.7 - w sygnalizacji przepełnienia T2. Przesyłam calutki kod programu: #include <mega8.h> #include <delay.h> int licz = 4; // Timer 2 overflow interrupt service routine interrupt [TIM2_OVF] void timer2_ovf_isr(void) { licz++; } // Declare...
Nie wiem z czym masz dokładnie problem, ale bawiąc się kiedyś w asm napisałem program zmieniający wypełnienie na PB1 (OC1A) w zależności od wartości odczytanej z przetwornika A/C. Może okaże się Tobie pomocny: #include "m8def.inc" .def acc = r16 .def result = r17 rjmp RESET ; Reset Handler reti ;EXT_INT0 ; IRQ0 Handler reti ;EXT_INT1 ; IRQ1...
Tryby CTC w ATMega32 są dwa. Ustawiasz WGM12 w rejestrze TCCR1B i wpisujesz wartość końcową do OCR1. Albo wpisujesz WGM12 i WGM13 do TCCR1B i wpisujesz wartość końcową do ICR. A co z obsługą przerwania? Czy dobrze rozumuję, że wystąpi ono odpowiednio Output compare dla 0CR1 i Input capture dla ICR?
$regfile = "m8535def.dat"0 ' Pewnie tutaj chodzi o ATmega8535... ;) Nieee LightI , u mnie jest "m8def.dat" bo mnie się ubzdurało ,że my tu mówimy o ATMega8 :) Config Timer1 = Pwm , CAPTURE EDGE = RISING , Compare A = Disconnect O to właśnie chodziło :wink: Pozdrawiam Piotrek
Z timerem2 się pomyliłem, myślałem że jest 8 bitowy ;-). Przejrzałem DS i jak byk jest napisane: "Two 8- bit Timer/Counters with Separate Prescaler, one Compare Mode One 16- bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode" Atmega8 ma 2 wejścia zewnętrznego interruptu, INT0(PD2) i INT1(PD3), bramki są 4, jak "odpowiednio kombinować"...
ISR(INT0_vect) { ISR(TIMER3_OVF_vect) { TCNT3 = WARTOSC_PRZELADOWANIA; czas++;}} ISR(INT1_vect) {} Pomijając fakt że atmega16 nie ma timera nr3 ( tylko 0,1,2) ta konstrukcja wygląda dziwacznie :) skoro mam podłączony kwarc 16Mhz, to preskaler ustawiam na taktowanie zewnętrzne Taktowanie zewnętrzne wymaga fizycznego podłączenia sygnału taktującego z...
Jeśli jeszcze aktualne :) W ten sposób to obliczasz częstotliwość sygnału, a nie wypełnienie. Powinno być raczej: ts zawiera (bez konieczności przeliczania) czas trwania impulsu w mikrosekundach.
Witam, najpierw program: .include "m88def.inc" ; procek ustawiam na prace z wewnętrznego oscylatora 8MHz ; tryb sleep ustawiam jako POWER DOWN ; PD3 (INT1) jest przyciskiem (wejscie) ; PB1 (OC1A) to wyjscie sterujace reglem ; PB5 to wyjscie sterujące MOSFETami zalaczajacymi zasilanie regla ; PD5 (OC0B) to wyjscie sterujace LEDem ; ADC6 - pomiar pradu...
Mam problem z tym call i ret mam taki kod: ldi R16, 0x00 Co jest źle? W przypadku procesorów AVR zawsze na sam początek musisz ustawić stos w odpowiednim miejscu w pamięci programu. Praktycznie każdy program więc zaczyna się (dla atmega32) od rozkazów ustawiających stos. Za manualem str 45: Address Labels Code Comments $000 jmp RESET ; Reset Handler...
1 strona: Peripheral Features – Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode – Real Time Counter with Separate Oscillator – Six PWM Channels – 8-channel, 10-bit ADC Differential mode with selectable gain at 1×, 10×...
capture compare capture atmega atmega bascom compare
ricoh reset bębna drukarka canon ip100 chrysler voyager napięcie ładowania
magnum snake stycznik panelowy
Schemat skrzynek bezpieczników VW Touareg 7L 2007 2.5 TDI – lokalizacja, opis, wartości Lokalizacja przekaźnika świec żarowych Kia K2700