Szanowni Forumowicze,
od pewnego czasu interesuję się programowaniem mikroprocesorów. Wykonałem już kilka bardzo prostych projektów jak woltomierz cyfrowy czy termometr analogowy (mcp9700) z wyświetlaniem wyniku na LCD (HD44780). Problem mam jednak ze zrozumieniem sterowania elementami cyfrowymi. O ile w przypadku np. termometru mcp9700 sprawa jest prosta (bo temperatura jest funkcją napięcia na wyjściu to sobie to bez problemu przeliczę wykorzystując ADC i notę katalogową) to w przypadku termometru cyfrowego Dallas DS18b20 nie wszystko jest dla mnie takie jasne. Wiele rzeczy rozjaśnił mi fantastyczny artykuł znaleziony na elektrodzie: www.elektroda.pl/rtvforum/download.php?id=454850
Przechodzę do konkretów - mam kilka pytań odnośnie kodu z powyższego artykułu:
1) - dobrze rozumiem, że funkcja 'bit_is_set(port, pin)' jest zdefiniowana w pliku nagłówkowym io.h i sprawdza czy na danym pinie mamy stan wysoki?
2) na stronie 22. w listingu kodu z komentarzem "Funkcja odbiera bajt z magistrali" w piątej linijce od dołu jest użyta zmienna 'iCounter', która to nie jest nigdzie wcześniej w kodzie zadeklarowana. To jest jakaś zmienna z pliku io.h czy to błąd/literówka w artykule?
3) i chyba dla mnie najważniejsze - na stronie 23. w funkcji głównej programu w pętli głównej programu. W kilku miejscach jako argumenty funkcji podaje się adresy hex podane w dokumentacji termometru odpowiedzialne za konkretnie funkcje. Rozumiem ideę - wysyłam odpowiednie bity konfiguracyjne do termometru żeby on robił co chcę. Ale czy podając do funkcji argument w postaci adresu hex mikroprocesor wie w które miejsce w termometrze wysłać dany bit? I czy adres hex jest zgodny z typem danych char?
Właśnie tego najbardziej nie rozumiem - jak to się dzieje, że mikroprocesor wie w jakie miejsce wysłać dane nawet jeśli ma jego adres skoro mikroprocesor na wyjściu może jedynie ustawiać stan wysoki/niski?
Proszę o wskazówki i pozdrawiam
od pewnego czasu interesuję się programowaniem mikroprocesorów. Wykonałem już kilka bardzo prostych projektów jak woltomierz cyfrowy czy termometr analogowy (mcp9700) z wyświetlaniem wyniku na LCD (HD44780). Problem mam jednak ze zrozumieniem sterowania elementami cyfrowymi. O ile w przypadku np. termometru mcp9700 sprawa jest prosta (bo temperatura jest funkcją napięcia na wyjściu to sobie to bez problemu przeliczę wykorzystując ADC i notę katalogową) to w przypadku termometru cyfrowego Dallas DS18b20 nie wszystko jest dla mnie takie jasne. Wiele rzeczy rozjaśnił mi fantastyczny artykuł znaleziony na elektrodzie: www.elektroda.pl/rtvforum/download.php?id=454850
Przechodzę do konkretów - mam kilka pytań odnośnie kodu z powyższego artykułu:
1)
Code: C
2) na stronie 22. w listingu kodu z komentarzem "Funkcja odbiera bajt z magistrali" w piątej linijce od dołu jest użyta zmienna 'iCounter', która to nie jest nigdzie wcześniej w kodzie zadeklarowana. To jest jakaś zmienna z pliku io.h czy to błąd/literówka w artykule?
3) i chyba dla mnie najważniejsze - na stronie 23. w funkcji głównej programu w pętli głównej programu. W kilku miejscach jako argumenty funkcji podaje się adresy hex podane w dokumentacji termometru odpowiedzialne za konkretnie funkcje. Rozumiem ideę - wysyłam odpowiednie bity konfiguracyjne do termometru żeby on robił co chcę. Ale czy podając do funkcji argument w postaci adresu hex mikroprocesor wie w które miejsce w termometrze wysłać dany bit? I czy adres hex jest zgodny z typem danych char?
Właśnie tego najbardziej nie rozumiem - jak to się dzieje, że mikroprocesor wie w jakie miejsce wysłać dane nawet jeśli ma jego adres skoro mikroprocesor na wyjściu może jedynie ustawiać stan wysoki/niski?
Proszę o wskazówki i pozdrawiam
