Skocz do zawartości

Arduino i timery - problem ze zrozumieniem preskalerów


farmaceuta

Pomocna odpowiedź

Najbardziej mnie zadziwia że nie działa przy presc = 1; No ja odpaliłem i tyka ładnie. Hmm czyżby w arduino było coś nie tak? Albo inny mikrokontroler? Jeśli są jakieś zmiany w projekcie to ja za bardzo nie pomogę niestety

  • Pomogłeś! 1
Link do komentarza
Share on other sites

(edytowany)
8 minut temu, _LM_ napisał:

Najbardziej mnie zadziwia że nie działa przy presc = 1; No ja odpaliłem i tyka ładnie. 

Yyyy..😡 ale na arduino? Czy czysta atmega?

8 minut temu, _LM_ napisał:

Hmm czyżby w arduino było coś nie tak? Albo inny mikrokontroler? Jeśli są jakieś zmiany w projekcie to ja za bardzo nie pomogę niestety

No ja uzywam Uno i pro mini(oryginalne booty bez przerobek)...(klony co prawda) ale to znaczenia przeciez nie ma...procek to i tak ten sam..atmega328...i rozumiem ze sprawdzales ten moj kod tak?

Edytowano przez farmaceuta
Link do komentarza
Share on other sites

1 minutę temu, farmaceuta napisał:

Yyyy..😡 ale na arduino? Czy czysta atmega?

Wgrywam bezpośrednio do mikrokontrolera i tak, jest to kopia twojego kodu, zmieniłem tylko sterowanie pinami. No i zwiększyłem wartości graniczne zmiennej x bo jak za szybko led mruga to mnie nerwuje hahaha

Link do komentarza
Share on other sites

53 minuty temu, _LM_ napisał:

znów to powiem: być może Arduino zrobi to za programistę

Nie robi.

Chłopaki, przyjmijcie wreszcie do wiadomości, że nie istnieje żaden magiczny język Arduino, to najzwyczajniejszy w świecie C++ z jakimś tam dodatkowym prostym preprocesorem.

 

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

/*
 * main.c

 */

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/atomic.h>

volatile uint32_t x;

int main(void) {

	DDRC |= (1 << PC2);

	//  TCCR2B |= (1<<CS22) | (1<<CS21) | (1<<CS20);  //preskaler na 1024
	//  TCCR2B |=  (1<<CS22) | (1<<CS21);  //preskaler na 256
	//  TCCR2B |=  (1<<CS22) | (1<<CS20);  //preskaler na 256
    //	TCCR2B |=  (1<<CS20) | (1<<CS21);  //preskaler na 256
	//  TCCR2B |= (1<<CS22);  //preskaler na 64
	TCCR2B |= (1 << CS21);  //preskaler na 8
	//  TCCR2B |=  (1<<CS20);  //preskaler na 1
	TIMSK2 |= (1 << TOIE2);    //wlaczenie przerwania od przepelnienia

	sei();

	for (;;) {

		//	ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
		//	{
		if (x == 6100) {
			//digitalWrite(13, HIGH);
			PORTC |= (1 << PC2);
		}
		if (x == 12200) {
			//digitalWrite(13, LOW);
			PORTC &= ~(1 << PC2);
			x = 0;
		}
		//	}
	}
}

ISR (TIMER2_OVF_vect) {
	x++;
}

Sprawdziłem na wszystkich prescalerach

  • Pomogłeś! 1
Link do komentarza
Share on other sites

1 minutę temu, ethanak napisał:

Chłopaki, przyjmijcie wreszcie do wiadomości, że nie istnieje żaden magiczny język Arduino, to najzwyczajniejszy w świecie C++ z jakimś tam dodatkowym prostym preprocesorem.

kolego @ethanak  Jesli cos Ci do glowy przychodzi co nam umyka to chetnie poslucham...no mecze sie z tym i nie wiem co tu jeszcze nie tak jest...na arduino uzywaja rowniez tych timerow do generowania ppm np. I jakos to chodzi...wiec tak przypuszczam ze bootloader nic tu nie wadzi...

Link do komentarza
Share on other sites

5 minut temu, ethanak napisał:

Chłopaki, przyjmijcie wreszcie do wiadomości, że nie istnieje żaden magiczny język Arduino

Ja to wiem, ale nie znam wszystkich niuansów arduino bo zwyczajnie nie używam go, jedynie czasem jakiejś biblioteki głównie na potrzeby esp. Dlatego dobrze jak jest ktoś kto się na tym lepiej zna, ja wiem że avrgcc muszę o wszystko zadbać. Także @ethanak jeśli widzisz tu jakiś błąd to doradź bo ja już nie wiem co napisać farmaceucie. Mam na biurku uruchomiony ten program (napisany w C) i led mruga. 

Edytowano przez _LM_
Link do komentarza
Share on other sites

Przed chwilą, _LM_ napisał:

wiem że avrgcc muszę o wszystko zadbać.

W Arduino też - przecież to nic innego jak avrgcc (albo inna wersja gcc, zależna od płytki) w ładnej otoczce, z edytorem (no, umówmy się że będziemy ten twór tak nazywać) i takim magicznym wichajstrem, co sam wie jakie biblioteki ma dokompilować. Nikt nie wymyślał nowego "języka Arduino". A całe te delaje, setupy. lupy i digitalrajty to też nie Arduino tylko normalna biblioteka (Wiring), tyle że standardowo podpinana do programu. Nie ma przymusu korzystania z niej, możesz to sobie robić po swojemu łącznie z wrzuceniem swojego maina i pisaniem w C zamiast C++.

 

  • Lubię! 1
Link do komentarza
Share on other sites

1 minutę temu, ethanak napisał:

Nikt nie wymyślał nowego "języka Arduino". A całe te delaje, setupy. lupy i digitalrajty to też nie Arduino tylko normalna biblioteka (Wiring), tyle że standardowo podpinana do programu. Nie ma przymusu korzystania z niej, możesz to sobie robić po swojemu łącznie z wrzuceniem swojego maina i pisaniem w C zamiast C++.

Ja sobie doskonale z tego zdaje sprawe...ale sila rzeczy kod powyzej jest prawidlowy i powinien dzialac...ale nie dziala poprawnie lub nie dziala wcale...no nic, zostaja te smieszne fusy..jak sie zainstaluje AS to sie zobaczy

Link do komentarza
Share on other sites

3 minuty temu, ethanak napisał:

Nie doradzę bo też nie widzę, śledzę sobie wątek ale nie chciałem się wcinać (do momentu aż ktoś posądził Arduino o zdolności magiczne) 🙂

Nie no my tu wszyscy wiemy ze arduino to tylko marka a nie osobny jezyk...no nic walcze dalej😉

Link do komentarza
Share on other sites

Ostatnie co mi przychodzi do głowy że ten kod kompiluje się na inny mikrokontroler niż masz na płycie. Wtedy byłoby możliwe że nie wszystkie rejestry są prawidłowo ustawione, ze względu na to iż mogą mieć nieco inne adresy. Da się jakoś w tym całym Arduinowym bajzlu zmienić domyślny mikrokontroler? Jest jakiś plik makefile czy coś?

Link do komentarza
Share on other sites

3 minuty temu, _LM_ napisał:

Ostatnie co mi przychodzi do głowy że ten kod kompiluje się na inny mikrokontroler niż masz na płycie. Wtedy byłoby możliwe że nie wszystkie rejestry są prawidłowo ustawione, ze względu na to iż mogą mieć nieco inne adresy. Da się jakoś w tym całym Arduinowym bajzlu zmienić domyślny mikrokontroler? Jest jakiś plik makefile czy coś?

Napewno nie to bo gdybym wgrywal na Uno np. a inny procek bylby ustawiony "gdzies tam" to predzej czy pozniej cos innego by mi nie dzialalo...a ja juz na Uno,nano,pro mini setki kodow przerobilem i nigdy zadnych cyrkow...a jesli bym zmienial (narazie nie!) te fusy przez Usbasp to rozumiem ze boot mi zostanie w atmedze tak?? (bo innego sensu by to nie mialo w sumie)

Link do komentarza
Share on other sites

13 minut temu, farmaceuta napisał:

zostaja te smieszne fusy..

Jakbyś nie miał ustawionych tych fusebitów to timer musi działać co najwyżej wolniej co już wiesz.

 

18 minut temu, farmaceuta napisał:

a ludzie tez z niego korzystaja z tym ze trzeba pamietac ze wszelkiej masci delay() na nim chodza i to bedzie zaburzone...

Jak ogarniemy timery to pokażę Ci jak można pozbyć się delayów, i jak podzielić program na zadania wykonywane w casie

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

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