Tutaj druga instrukcja anuluje pierwszą. Zrób to w jednej instrukcji lub w drugiej użyj operatora |= Poza tym nie ma bitow CS02 i CS00 w rejestrze TCCR1B. Wprawdzie są w rejestrze TCCR0 i mają takie same pozycje, więc kod ma szansę działać, ale jakoś źle się na to patrzy :) To jest zezwolenie na przerwanie od timer overflow. Zezwolenie na przerwanie...
[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)...
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...
Zamieszczam przyklad programu napisanego na kolanie, zmienia stan lini PC3 co okolo (LicznikMax*10ms ) - wychodzi co ok. 100 ms Gdybyś miał wątpliwości to podniosłem moje kości z krzesła przed komputerem po płytkę z AtMega32 i sprawdziłem w ukladzie - DZIAŁA! Kompilowany pod ICC626, polecam "Wizarda" ,pomaga w minute ustawić co potrzeba bez sięgania...
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...
Więc jeszcze do zrozumienia timerów w atmega32 do przykładu i analizowania przebiegów na oscyloskopie dorzucę Timer0 8bit i kilka zrzutów. Zrobiłem taką konfigurację: DDRB |= (1<<PB3); TCCR0 |= (1<<WGM01) | (1<<WGM00) | (1<<COM01) | (1<<CS02); OCR0 = 104; Preskaler 256, częstotliwość Fast PWM jaką chcę uzyskać to 300Hz....
Coś namieszałeś... Jeżeli chcesz ustawić licznik w trybie CTC to musisz: -włączyć tryb: TCCR0 |= (1<<WGM01); -wybrać preskaler w rejestrze TCCR0 -podział w rejestrze OCR0
Narazie chciałbym obsłużyć serva tylko na Atmega32 później ewentualnie dodać to co ma się dziać na timerze ICP i wybrać odpowiedniego procka. Ale chciałem zapytać tylko o timer ICP, ponieważ nie chcę zakładać oddzielnego tematu w którym będzie jedno pytanie i odpowiedzi tak lub nie. Dodano po 20 Sprawdziłem mój kod na wewnętrznym oscylatorze 8MHZ i...
Takie coś jest poprawne? Przykład dla Atmega32 i 8MHz Nie za bardzo rozumiem o co chodzi z tym ATOMIC_BLCOK [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> unsigned long milisekundy; int main(void) { TCCR0 |= (1<<WGM01); TCCR0 |= (1<<CS01)|(1<<CS00); OCR0 = 124; TIMSK |= (1<<OCIE0);...
Witam W dokumentacji napisane jest, że preskaler dla TIMER0 i TIMER1 jest wspólny. Ustala się go w TCCR0 (TIMER0) albo TCCR1B (TIMER1). Nie mogę znaleźć informacji z którego rejestru ustawianie ma wyższy priorytet (jest ważniejszy) czy TCCR0 czy też TCCR1A. Sprawdziłem, że kolejność ustawiania rejestrów nie ma znaczenia. Może ktoś wie jak to działa??
Tu uruchamiasz timer0 z preskalerem ... [syntax=c] //######## konfiguracja timera1 ############## TIMSK |= (1<<TOIE0); //Przerwanie overflow (przepełnienie timera) TCCR0 |= (1<<CS02) | (1<<CS00); // źródłem CLK, preskaler 1024 TCNT0 = timer_start;// //Początkowa wartość licznika //######################################... [/syntax]...
Witam :) Próbuje odpalić tryb CTC na Atmega8-przerwanie co 5ms i nie mogę sobie poradzić pomimo czytania PDF.Mało rzeczy robiłem na przerwaniach a jeśli już to na Atmega32 gdzie korzystałem z tego: Przerwanie co 5ms więc mam 1 sekundę. ATMEGA32: [syntax=c] TCCR0 |= (1<<WGM01); tryb CTC TCCR0 |= (1<<CS02)|(1<<CS00); preskaler = 1024...
Program prawie gotowy, tylko mam kilka pytań: 1. Jak zrobić, żeby przerwanie zostało uruchamiane po otrzymaniu pewnego sygnału, a w przypadku jego braku zostało wyłączone (dla przykładu podaję sygnał na port atmegi, zostaje włączony timer który naliczy ileś tam impulsów, w przypadku zabrania sygnału timer przechodzi do stanu początkowego bez względu...
#define PORTD2 2 Po co ta definicja, jeżeli później jej i tak nie wykorzystujesz. Tym bardziej, że wg. mnie jest błędnie zapisana. TCCR0 |= (1<<=CS01) |1<<(CS00); //preskaler 64 Przesunięcie bitowe powinno wyglądać tak: TCCR0 |= (1<<CS01) | (1<<CS00); + brak ustawienia odpowiedniego trybu przerwań, w tym przypadku pewnie musiałby...
pisze program w assemblerze i nie moge skonfigurawac timera0 do pracy w trybie CTC robie tak: -mam w wektorze przerwan instrukcje skoku do procedury -mam dzialajaca procedure -ustawiam stos -ustawiam wartosc TCNT0 -ustawiam wartosc OCR0 -wpisuje do TCCR0 wartosc 0x0D ( ctc + prescaler 1024) -ustawiam TIMSK na 0x02 -odblokowuje przerwania poleceniem...
Zrobiłem coś takiego. Dodano po 14 O to efekt.
...Pojawił mi się problem który nawet trudno wytłumaczyć. Faktycznie trudno , bo z tego co napisłeś , niewiele można wywnioskować :( ...Napisałem program z wykorzystaniem Timera T0 - odmierza zadany czas i zapala diodę po czym przy następnym przerwaniu gasi ją i tak w kółko. Może zdradź tajemnicę i napisz , w którym trybie pracuje T0. Dokonuję zmiany...
Witam, Czy ktoś może mi zmodyfikować tak mój program aby działał mi wyświetlacz LCD ? Chodzi tutaj o to że mam podłączony mały silnik krokowy oraz potencjometr a do tego jeszcze przyciski "start, stop, zmień kierunek obrotu". Wszystkie przyciski działają, potencjometr również, a teraz chciałbym aby zakres mojego potencjometru był wyświetlany na LCD...
Problem polega na tym , że zmienna nrzn działa poprawnie tylko w ciele funkcji przerwania, w pętli programu już nie. Jej wartość wynosi 0 poza przerwaniem. //Biblioteki #include <avr\io.h> #include <util/delay.h> #include <avr\pgmspace.h> #include <avr/signal.h> #include <avr/interrupt.h> //Zmienne unsigned char znak [10]...
Witajcie, próbuję wyrzucać wartość z regulatora pid (avr221) do wypełnienia pwm na timerze0. Poczyniłem następujące kroki: [syntax=c] #define PWMH ((PINB)&(1<<PB3)) ... struct GLOBAL_FLAGS { //! True when PID control loop should run one time uint8_t pidTimer:1; uint8_t dummy:7; } gFlags = {0, 0}; struct PID_DATA pidData; #define TIME_INTERVAL...
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...
Z jednej strony masz rację, a z drugiej nie... Mianowicie masz rację pisząc, że większość budowanych amatorskich konstrukcji da się zastąpić chińskimi odpowiednikami za niewielką cenę, natomiast budując układ samemu można nauczyć się wiele. Dla mnie budowa tego układu pomogła nauczyć się zasady działania kodu RC5 (bo kod pisałem w pełni samodzielnie...
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, Posiadam czujnik odległości HC-SR04. Mam problem z obsługą tego czujnika na atmedze32. Napisałem bardzo prosty program który powinien moim zdaniem działać ale nie działa :) Siedzę na nim już 3h i nic... Wszystkie kabelki są dobrze podłączone (sprawdzone 5 razy), czujnik jest dobry bo sprawdziłem go programem z bascoma znalezionego na forum [url=http://www.elektroda.pl/rtvforum/to...
analogicznego uzywam i w innych programach... i dziala... no ale na innych procesorach :/... void Timer_Init() { OCR0 = 150; USART_Transmit('^'); TCCR0 = (1<<CS02)|(0<<CS... TIMSK |= OCIE0; } ISR(TIMER0_COMP_vect) { USART_Transmit('*'); OCR0 += 150; }...
Witam, Wiem, że RC5 ten wątek był poruszany wiele razy na forum, ale chcę sie nauczyć programować w C, wiec chciałem wykorzystać odbiornik podczerwieni z mojego zestawu(ZL3AVR) i napisać protokół do RC5 Pracuje na kwarcu 16MHz i ATmega32. Odbiornik podczerwieni podłaczylem do PD3 #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h>...
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ąć do rejestru OCR0 wpisuję wartość do której licznik...
Uzupełniłem bibliotekę do sterowania silnikiem o komentarze, mam nadzieję, że teraz będzie dokładnie wiadomo, o co mi chodzi. [syntax=c]#ifndef STEPPER_H_ #define STEPPER_H_ #define TURN 400 //ilosc krokow na obrot silnika #define MAX_DELAY 255 //maksymalna wartosc opoznienia miedzy krokami #define MIN_DELAY 5 //minimalna wartosc opoznienia miedzy krokami...
Zacznę od końca (przejrzałem oryginalne źródła): 3. put_char() by wysłać znak czeka, aż flag_tx_ready będzie inne od 0 (FALSE) Akurat odwrotnie. Czeka, aż flaga stanie się FALSE, czyli aż zakończy się bieżąca transmisja. Przy okazji. W deklaracjach zmiennych współużywanych przez program główny i przerwania (jak np. ta flaga) w oryginalnym kodzie brak...
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 = 0x01; //timer interrupt sources TCCR0 = 0x00; //stop OCR0...
Ok., zrobiłem. Mam trzy 8-bitowe PWMy. int setup_t1(){ TCCR1A = _BV(COM1A1) | _BV(COM1B1) | _BV(WGM10) ; TCCR1B = _BV(CS11); OCR1A = 25; OCR1B = 230; } void setup_t0(){ TCCR0 = _BV(COM00) | _BV(CS01); //powinien być ustawiony bit COM01 a nie COM00 OCR0 = 128; } Nieaktualne:...
Wiem ze mam załączyć Timer1, tylko w którym miejscu to zrobić, tak aby to było zsynchronizowane z liczeniem ? Jakby ktoś narysował mi strzałkę w poniższym kodzie byłbym wdzięczny :) #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <avr/interrupt.h> #include <inttypes.h> #include...
Walcze z licznikiem na Atmega 32 inicjacja wyglada tak : DDRB = 0xff; // DDRB jako wyjscie // t0 JAKO LICZNIK PORTB |= _BV(0); // BEZ PODCIAGNIECIA NIE CHCE LICZYC TCCR0 = _BV(CS01)|_BV(CS02); //_BV(CS00)| cs0 rosnace/~opadajace zbocze TCNT0 = 200; TIMSK |= _BV(TOIE0); // T0 wywoluje przerwanie Caly problem polega...
Witam. Mam problem z wyświetlaniem cyfr przy użyciu atmegi32, która steruje trzema wyświetlaczami LED w trybie multipleksalnym. Otóż, gdy na wyświetlacz podaję te same znaki (cyfry) to wszystko jest dobrze. Natomiast, gdy wysyłam różne cyfry to pojawiają się błędy. Poniżej zamieszczam kod z przykładami. Ponieważ katody podłączone są do PORTC, więc żeby...
[syntax=c] /* * woltomierz.c * * Created on: 19-04-2013 * Author: Michał */ #include <avr/interrupt.h> #include <avr/io.h> #include "woltomierz.h" volatile uint8_t cy1; volatile uint8_t cy2; volatile uint8_t cy3; volatile uint8_t cy4; volatile uint8_t tryb; volatile uint16_t zadana; uint8_t cyfry[] = {0x3F , 0x06 , 0x5B , 0x4F , 0x66 , 0x6D...
Wiec sprawa wygląda tak, dane na wyjściu rejestru powinny wyglądac następująco: Q0=1 Q1=1 Q2=1 Q3=0 Q4=1 Q5=0 Q6=1 Q7=0 pierwsza próba: TCCR0 = (1 << CS01) | (1 << CS00); TIMSK |= (1 << TOIE0); PORTD &= ~_BV(6) | ~_BV(2); do{}while(clk<16); TCCR0 = 0; clk = 0; PORTD &=...
Mam takie pytanie. Bo jak sobie pisałem funkcje do obsługi wyświetlacza 7_segmentowego to tablice z segmentami dla liczb zapisałem w pamięci flash, możliwe że ta temperatura skacze mi dlatego że, z pamięci flash jest wolniejszy odczyt...?? To jest kod obsługi tego przerwania: #ifndef WYS_7_H_ #define WYS_7_H_ //definition ports #define anody_port PORTD...
Mam pewien problem. Pobrałem z internetu bibliotekę do LCD HD44780, działa ładnie ale pod m.in. ATMega32 a pod ATMega8 nie kompiluje się. Postanowiłem ją poprawić i jak łatwo się domyśleć nadal nie działa ;/ Kompiluje się teraz ale nie nic nie wyświetla. Powiedzcie gdzie popełniłem błąd? Kod po zmianie: #include "delay.h" volatile uint16_t...
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...
Witam, mam problem z uruchomieniem programu do zliczania impulsów na T1 przez 1 sekundę. Wyświetla mi ciągle zero. Co źle ustawiłem z Timerami ?? Atmega 32 [syntax=c] #define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <hd44780.h> volatile unsigned char licznik = 0; //liczba...
Faktycznie, moje niedopatrzenie bawiłem się kodem zanim go umieściłem i nie poprawiłem :) Zatem zmieniłem [syntax=c] #include <avr/io.h> //dołączenie podstawowej biblioteki #include <util/delay.h> // biblioteka obsługująca opóźnienia #include <avr/interrupt.h> //// biblioteka obsługująca przerwania volatile flaga1 = 0; volatile flaga...
Witam! Stworzyłem kiedyś projekt na atmega32 w którym za pomocą dwóch timerów 8-bitowych regulowałem dwie częstotliwości wyjściowe ustawiając timery w tryb ctc Tccr2 = &B10011001 Ocr2 = Wartosc Tccr0 = &B10011001 Ocr0 = Wartosc1 wszystko idealnie działało jednak z czasem pojawiła się potrzeba aby regulować częstotliwość z większą dokładnością. Postanowiłem...
skorzystam jednak z wejścia analogowego ATmega32 i czujnika pt100, ale wciąż mam problem z przerwaniami :/ nie mam zielonego pojęcia, jak w C rozwiązać problem odświeżania wyświetlacza. Znalazłem gdzieś podobny przykład, który przerobiłem, ale mimo wszystko nie działa. // Pliki naglowkowe #include <avr/io.h> #include <avr/interrupt.h> #include...
Witam. Enkoder z otworem wygląda następująco (nie posiadam, żadnej noty pdf...) Przypuszczam, że jest to enkoder inkrementalny z wyjściem pojedynczym - sygnały A,B (TTL, Push-Pull, otwarty kolektor). http://img854.imageshack.us/img854/9044/... Sposób podłączenia: http://img232.imageshack.us/img232/29/sc... Jak enkoder kreci sie w...
Witam wszystkich :) Postanowiłem zrobić sobie detonator bezprzewodowy 433MHz do odpalania moich petard ;) Komunikacja miedzy modułami to RS232. A to mój kod: KEY_START ma uzbroić ładunki(umożliwic odbieranie znaków po RS232),niestety wysłanie jakiegoś znaku z pilota jeszcze przed KEY_START uzbraja ładunki ponieważ kod z pilota jest już w buforze. Chciałbym...
Witam, mam problem ze sterowanie sygnałem PWM. Program służy do zaczytywania wartości częstotliwości z czujnika TCS3200 . W zależności od koloru jaki wykryje czujnik ma nastąpić zmiana wartości wypełnienia PWMa. W tym momencie dioda, którą mam podłączona pod wyjście OC2 cały czas świeci tak samo, niezależnie od wartości OCR2 . Próbowałem na różne sposoby...
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 jest tu jakiś prosty błąd ale nie mogę...
To co z waszą pomocą spłodziłem działa świetnie na napięciu stałym. Wyniki są praktycznie bezbłędne i bardzo stabilne. Jednakże na AC jest beznadziejnie. Wyniki są totalnie losowe. Wnioskuję, że próbkowanie jest nierównomierne i stąd te problemy. Ustawiłem OCR na 2 przy preskalerze 1024 daje 2604 Hz. Przy częstotliwości sieciowej da to 52 próbki na...
Bardzo dziękuję za te informacje. W przyszłości będę to rozbijał na dwie linie(zerowanie i ustawianie bitów rejestru). Tymczasem, po przeczytaniu datasheet, a konkretnie sekcji dotyczącej Timer0 i Timer2, stwierdziłem, że mogę po prostu wpisać jedną liczbę do np. rejestru TCCR0. Np TCCR0 = 0b00001111. To powinno spowodować włączenie pinów 7:4 jako wejścia...
Witam, Mam problem z PCF8563, tzn. nie wiem do końca, czy to na pewno wina PCF8563, nie wiem jak sprawdzić czy jest sprawny, bo czas i datę zwraca poprawne. Problem polega na tym, że przy pierwszym załączaniu zasilania na płytce stykowej PCF8563 zachowuje się jakby zawiesił się. Wystarczy teraz tylko wyłączyć i włączyć zasilanie ponownie (od razu, bez...
tccr0 atmega tccr0 atmega128 atmega8 tccr0
zmiana zmienna bascom zmienna adresem głowica panasonic
Fagor błąd E8 bF - problem z napełnianiem wody Mercedes-Benz NOx Sensor A0009057208 Pinout, Connector Details, Wire Colors