michal87 Napisano Październik 13, 2011 Udostępnij Napisano Październik 13, 2011 Witam wszystkich. Do tej pory programowalem Arduino ale teraz zapragnalem przesiasc sie na wlasne pomysly wykorzystujace mikrokontrolery np atmege8. Kupilem gotowy programator i zrobilem wszystko jak na tej stronie: http://www.mikrokontrolery.e-snp.net/usbasp_pisanie.php Niestety ale po zaprogramowaniu nowego uC i ustwienie opoznienia np 1000ms dla migajacej diody ona miga z czestotliwoscia ok 4-5 sek, po ustawieniu na 6 sekund dioda miga co 10 sek.. nic nie zmienialem z fusebitami, wiec uC powinien uzywac zegara wewnetrznego 1MHz. probowalem zdefiniowac w kodzie czestotliwosc zegara ale to nic nie dawalo. Wytlumaczy mi ktos dlaczego tak sie dzieje? Z gory wszystkim dziekuje za pomoc. Link do komentarza Share on other sites More sharing options...
Armir Październik 13, 2011 Udostępnij Październik 13, 2011 Tak bywa. Wewnętrzny oscylator jest nie dokładny ale to powinny być różnice max kilka procent. Link do komentarza Share on other sites More sharing options...
BlackJack Październik 13, 2011 Udostępnij Październik 13, 2011 Oscylator to jedno, a i sama funkcja delay do dokładnych nie należy. Link do komentarza Share on other sites More sharing options...
dondu Październik 13, 2011 Udostępnij Październik 13, 2011 Dokładność oscylatora nie ma tutaj znaczenia. Pokaż program. A co do schematu ze strony, którą podałeś, to więcej z niej nie korzystaj, a wiedzę zaczerpnij stąd: http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html Oscylator to jedno, a i sama funkcja delay do dokładnych nie należy. Proszę zastanówcie się co piszecie. Człowiek ustawił 1 sek, a otrzymuje 4-5sek. F_CPU: http://mikrokontrolery.blogspot.com/2011/04/bledy-kompilacji-programu.html http://mikrokontrolery.blogspot.com/2011/03/fcpu-gcc-gdzie-definiowac.html Dokładność oscylatora: http://mikrokontrolery.blogspot.com/2011/04/stopery-timery-itp.html ... i pokaż cały program. 1 Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
michal87 Październik 13, 2011 Autor tematu Udostępnij Październik 13, 2011 kod programu pochodzi ze stronki ktora zamiescilem wczesjniej - a w tym linku jest screen kodu: http://www.mikrokontrolery.e-snp.net/files/1-miganie_ledem/1-mig-led.png a tak przy okazji - piny w arduino ustawialem w sposob int ledPin = 13 a tutaj PORTD = 0x01 i troche sie w tym gubie - jest na to jakis prosciejszy sposob? oczywiscie szukalem ale nic konkretnego nie znalazlem. Link do komentarza Share on other sites More sharing options...
dondu Październik 13, 2011 Udostępnij Październik 13, 2011 kod programu pochodzi ze stronki... Ale w pierwszym poście piszesz, że coś w nim zmieniałeś, więc wstaw tą wersje, no chyba, że nie chcesz pomocy? Poza tym dostałeś linki z informacjami o F_CPU i optymalizacji, a nic na ten temat nie piszesz. Mamy się domyślać, wróżyć czy zgadywać? Link do komentarza Share on other sites More sharing options...
michal87 Październik 13, 2011 Autor tematu Udostępnij Październik 13, 2011 poczytalem teraz materialy od usera dondu i wprowadzilem niewielka zmiane ktora pomogla, mianowicie: bylo: #define F_CPU 1000000L zmienilem na: #define F_CPU 1000000UL caly kod: #define F_CPU 1000000UL #include // dołączenie biblioteki io.h #include // dołączenie biblioteki delay.h int main (void) { DDRD = 0x01; while (1) { PORTD = 0x01; _delay_ms (5000); PORTD = 0x00; _delay_ms (5000); } } edit: wroc.. po testak wyszlo ze jednak nie dziala - delay dla 5000ms dziala idelanie, dla 15000ms wychodzi 7,5 sek a dla 3000ms 8 sek Link do komentarza Share on other sites More sharing options...
dondu Październik 13, 2011 Udostępnij Październik 13, 2011 poczytalem teraz materialy od usera dondu ... Szybko czytasz, ale lepiej czytaj dokładnie. Kod OK, edit: wroc.. po testak wyszlo ze jednak nie dziala - delay dla 5000ms dziala idelanie, dla 15000ms wychodzi 7,5 sek a dla 3000ms 8 sek To jest związane z tym, że _delay_ms() ma ograniczenie do 6,5sekundy, możesz to znaleźć w pliku nagłówkowym dealy.h: When the user request delay which exceed the maximum possible one, _delay_ms() provides a decreased resolution functionality. In this mode _delay_ms() will work with a resolution of 1/10 ms, providing delays up to 6.5535 seconds (independent from CPU frequency). The user will not be informed about decreased resolution. Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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ę »