Skocz do zawartości

TIMER 3 w Atmedze128A- nie startuje


mario246

Pomocna odpowiedź

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

Link do komentarza
Share on other sites

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 🙂

Link do komentarza
Share on other sites

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));
Link do komentarza
Share on other sites

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ę.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.