Skocz do zawartości

TIMER 3 w Atmedze128A- nie startuje


Pomocna odpowiedź

Napisano

Witam jestem w trakcie budowy platformy mobilnej( docelowo ma się poruszać bez ingerencji użytkownika ale to poźniej) na dowód załączam zdjęcie z początków prac.

Mój problem dotyczy timera3 w atmedze128A która jest sercem. Timer 1 wq tej instrukcji chodzi normalnie ale 3 już nie za bardzo, a jest mi potrzebny do sterowania silnikami :/ poniżej wadliwa intsrukcja.

void timer_init_tccr3()
{ 


TCCR3A=(_BV(COM3A1) | _BV(COM3B1));
TCCR3B=(_BV(COM3A1) | _BV(COM3B1));
TCCR3C=(_BV(COM3A1) | _BV(COM3B1));
OCR3A=150;
OCR3B=150;
OCR3C=100;
TCCR3A |=(1<<WGM32)|(1<<WGM30)| (1<<CS32); 
TCCR3B |=_BV(WGM32) |_BV(CS30); //preskaler 1, fastpwm 8 bit
TCCR3C |=_BV(WGM32) |_BV(CS30);
DDRD|=(_BV(PE3) | _BV(PE4) | _BV(PE5));
}

CAM00265.thumb.jpg.e0fa3b94b98717be7e829de33c50798e.jpg

Coś pokręciłeś z rejestrami TCCR. W Timerze 3, dokładnie tak samo jak w 1 są trzy rejestry TCCR i każdy służy do czegoś innego. Nie możesz wpisywać prawie tego samego do każdego z nich tak jak to robisz w pokazanym kodzie.

Bity odpowiedzialne za sterowanie wyjściami OC (COMxxx) masz tylko w TCCR3A. Tutaj także leżą dwa bity kontrolujące tryb pracy (WGMxx). W TCCR3B są kolejne dwa bity trybu pracy timera, dwa do sterowania łapaniem zdarzeń (ICxx) oraz trzy zmieniające prescaler (CSxx). W ostatnim TCCR3C są tylko najrzadziej używane wymuszenia komparacji (FOC) i to wszystko.

Twój kod robi z tymi rejestrami dziwne rzeczy, więc nie ma prawa działać. Otwórz opis tego timera i po prostu napisz tę funkcję jeszcze raz.

Przy okazji pochwal się co masz w środku tego pudełka i do czego potrzebujesz trzy PWMy na raz 🙂

Konstrukcja na razie w fazie testów więc znajduję się tam tylko wyżej wymieniona Atmega oraz dwa mostki l298n do sterowania silników oraz akumulator, jak będę miał więcej czasu to postaram się w miarę szybko dokończyć go i zaprezentować, no cóż, timer3 miał służyć do bajerów które znajdą się w konstrukcji, ewentualnie przeznacze go może do dekodowania rc5 z pilota(ale to już w wtedy nie będzie autonomiczna konstrukcja) oczywiście zamierzam umieścić trochę czujników(między innymi sharpy do mierzenia odległości) i jeszcze muszę pomyśleć nad układem który będzie służył do jego orientacji w danym terenie, a wracajać do tematu no ok, usiądę wieczorem i sprawdzę dokładnie w dokumentacji.

[ Dodano: 16-02-2014, 20:22 ]

NIe wiem o co z tym biega, obejrzałem dokumentację, popatrzyłem na tabelki, wpisałem i dioda nie świeci :/

TCCR3A |= (1<<WGM30);                      // Fast PWM 8bit
TCCR3A |= (1<<COM3A1)|(1<<COM3B1) ;       
OCR3A = 255;         

DDRD|=(_BV(PE3) | _BV(PE4) | _BV(PE5));

UDało mi się się odpalić, śmiga aż miło 🙂 tylko teraz zauważyłem że timer 1c nie reaguje na zmiany w OCR1C, tylko dioda lekko się zarzy, ale może sam dojdę.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...