Gość Opublikowano 18 Maja 2006 Zgłoś Opublikowano 18 Maja 2006 (edytowane) taki maply problem poczatkujacego:P mam taka petle for(led=10;led>0;led--) { if(led>5) { led_on; delayms(500); led_off; delayms(500); } else { led2_on; delayms(500); led2_off; delayms(500); }} proste nie? petla odlicza od 10 i zapala ledy :P i teraz potrzebuje sie dowiedziec jak zapisac warunek petli if zeby wykonywal instrukcje gdy zmienna jest parzysta lub nieparzysta. Edytowane 18 Maja 2006 przez Gość Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Guardian_McLeavy Opublikowano 18 Maja 2006 Zgłoś Opublikowano 18 Maja 2006 Wykorzystujesz dzielenie modulo, które zwraca ci resztę z dzielenia. if(liczba%2) to liczba jest nieparzysta bo zwrocona wartosc to 1 else parzysta Proste nie? :D Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 18 Maja 2006 Zgłoś Opublikowano 18 Maja 2006 (edytowane) ale fajnie:> teraz bede migal ledami na zmiane :D dzieki:> edit: jupi dziala:> Edytowane 18 Maja 2006 przez Gość Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Guardian_McLeavy Opublikowano 18 Maja 2006 Zgłoś Opublikowano 18 Maja 2006 A ty programujesz jakiś obwód? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
radeksz Opublikowano 18 Maja 2006 Zgłoś Opublikowano 18 Maja 2006 a nie latwiej przerzutnik asynchroniczny tez beda migaly na zmiane, chociaz zalezy co tam grzebiesz Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
tomekdd Opublikowano 18 Maja 2006 Zgłoś Opublikowano 18 Maja 2006 Wykorzystujesz dzielenie modulo, które zwraca ci resztę z dzielenia. if(liczba%2) to liczba jest nieparzysta bo zwrocona wartosc to 1 else parzysta Proste nie? :D a nie na odwrot ? : if(liczba%2) i zwroci 0 to parzysta a jesli 1 nieparzysta :blink: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 18 Maja 2006 Zgłoś Opublikowano 18 Maja 2006 (edytowane) A ty programujesz jakiś obwód? ano :P ucze sie programowac procesorek:> a nie latwiej przerzutnik asynchroniczny tez beda migaly na zmiane, chociaz zalezy co tam grzebieszmoze i latwiej :> ale musze sie pobawic troche IO atmegi8 :> w kazdym razie pochwale sie troche i powiem ze do zbudowania programowalnego pjazdu gosienicowego brakuje mi tylko podwozia, dwoch przekladni i jednego silniczka z cdroma:> program i sterownik juz mam:P a do zbudowania autonomicznego pojazdu jeszcze troche wiedzy z zakresu programowania. jak juz wszystko bedzie gotowe pokaze na form :> Edytowane 18 Maja 2006 przez Gość Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 18 Maja 2006 Zgłoś Opublikowano 18 Maja 2006 ino w tej sytuacji zużywasz całą moc obliczeniową.. całe 16MHz czy ile on tam wyciska do bezproduktywnego stania w miejscu :) Zresztą jemu to i tak wszystko jedno co robi :) for(led=0;led<10;++led){ led_on; led2_off; delayms(500); led_off; led2_on; delayms(500); } to samo robi... (mruga na zmianę) bez modulo i bez warunków, bez rozgałęzień = wydajniej :) . Kompilator raczej nie zoptymalizuje kodu do takiej samej postaci z ifami i bez ifów... Zatem jak zależy Ci na bajtach które w mikrosterownikach kończą się dosyć szybko :D to trzeba by się nauczyć rozsądnie pisać kod. Z resztą sprawdź czy te 2 kody będą miały tyle samo bajtów po kompilacji albo można jeszcze szybciej i krócej .. nie wiem tylko jaki jest operator negacji bitowej (założyłem iż "!") led1=ON;led2=!led1;for(led=0;led<10;++led){ !led1; !led2; delayms(500);}dzięki temu na zmianę będą Ci się zmieniać wartości pinów sterujacych diodami... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 18 Maja 2006 Zgłoś Opublikowano 18 Maja 2006 no tak jak w pierwszym przykladzie mialem na poczatku. :> na czyms musze w koncu pocwiczyc petle:> moj procek wyciska cale 8MHz ale puki co uzywam 1MHz :D Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 19 Maja 2006 Zgłoś Opublikowano 19 Maja 2006 potem będzie OC AVRa :D z chłodzeniem wodnym :D Ciekawe na ile by poszedł :).. napisz mu superPi wersja pod AVR i będziesz mógł testować :D z resztą co tu dużo ćwiczyć w pętlach? :) if(warunki początkowe;warunki stopu; akcja po skończeniu pętli) akcja else akcja2 :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...