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

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.