Skocz do zawartości

Problem z programowaniem atmega8 w C


michal87

Pomocna odpowiedź

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

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.

  • Pomogłeś! 1
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

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

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

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

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

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.