eeeeh kolega Krauser mnie ubiegł
------------------------ [ Dodano po: 20 minutach ]infa08 napisał(a):
otrzymuję wynik lecz nie wiem jak go wykorzystać a chciałbym wiedzieć co oznacza otrzymany wynik ponieważ aby program działał na mojej ATMedze 644p muszę go trochę przerobić
Z góry dzięki za pomoc
Ja tylko może tutaj dodam, że makro tak sobie skonstruowałem aby na etapie kompilacji (a nie w programie) obliczane były odpowiednie wartości tyknięć timera w zależności od F_CPU i preskalera, żebym mógł w kodzie posługiwać się już wygodnie mikrosekundami....
zatem mogę sprawdzać czy upłynęło np 200us jeśli wpiszę
Kod:
if( PulseWidth > ir_micro_s( 200 ) ) .....
zamiast za każdym razem przeliczać sobie w głowie ile razy musi tyknąć timer w czasie 200us i wpisywać zawsze jakąś inną wartość..... Tzn żebyś to jeszcze lepiej zrozumiał to podpowiem, że przy danej częstotliwości taktowania i preskalerze można sobie pięknie tak dobrać parametry timera żeby 1 tyknięcie trwało 1us prawda ? czyli mógłbym pisać:
Kod:
if( PulseWidth > 200 ) .....
po co mi tu jakieś makro ????
no ale teraz wyobraź sobie że tą bibliotekę nagle potrzebujesz odpalić na swoim innym procku w którym masz całkiem inny kwarc np 20MHz, to co od nowa miałem sobie przypominać jak ja to obliczałem ??? a przecież z przyjemnością bym używał takiej biblioteki gdybym nie musiał sobie zawracać tym głowy niezależnie od taktowania prawda ?
dlatego raz na początku przy pisaniu biblioteki postanowiłem że potraktuję F_CPU jako zmienną i w takim makrze sobie będę na jej podstawie przeliczał te tyknięcia zawsze do 1us .... dzięki temu założony efekt się udał i można z biblioteki korzystać praktycznie na dowolnym procku AVR i dowolnej częstotliwości taktowania.
Zawsze mnie wkurzało kiedyś gdy na samym początku szukałem gotowca w necie na dekodowanie RC5, właśnie że ktoś np napisał jakąś fajną obsługę a pod spodem dopisek:
Cytuj:
biblioteka napisana i obliczona dla taktowania 8MHz.
no i ZONK bo ja potrzebowałem aby to pracowało przy kwarcu 11,0592MHz ..... i jak teraz ??? mam rozgryzać każdą linię biblioteki tego autora? dojść sposobu jego rozumowania? poprawić sobie ją? czasem się to udawało ale często nie. Zawsze było z takim czymś dużo zabawy......
dlatego jak ja teraz tworzę sobie biblioteki to staram się dodawać tego typu makra, które uniezależnią mnie od wartości F_CPU
i nie będę musiał nawet wracać myślami do tego co sam wcześniej napisałem - MA DZIAŁAĆ
i do takiego podejścia zachęcam.
z podobnym podejściem ale nieco innym makrem spotkasz się w książce w rozdziale o sterowaniu fazowym 230V .... warto poczytać chociaż nawet jeśli nie będziesz robił tego ćwiczenia i przeanalizować także tamto makro ok ?
_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]