PIC w praktyce

Sep 20, 2005 41 Replies

Pad³o pytanie co do I2C na pic 16F84.



Kto¶ z grupy poleci³ mi ksi±¿kê Mikrokontrolery PIC w praktyce i okaza³o siê ¿e w ksi±¿ce przy I2C w inicjalizacji interfejsu jest b³±d. Autor opisuje zasadê konfiguracji portu ³adnie piêknie a za moment w kodzie ¼ród³owym pope³nia b³±d.



"Wpisanie w TRISB 0 powinno na wyj¶ciu daæ stan logiczny 0. W kodzie natomiast napisane jest



bsf TRISB, 0 ----> Ustawienie portu wyj¶cie



To teraz powtarzam moje pytanie ma kto¶ dzia³aj±cy przyk³ad? Obecnie siedzê i analizujê dok³adnie kody ¼ród³owe z ksi±¿eczki co nie jest ³atwe z braku czasu i wiecznego odrywania siê od kodu.



Na googlu co¶ w Hiszpañskim siê znalaz³o ale niestety nie znam tego jêzyka :(



Za pomoc z góry dziêkujê


Edit przemówił ludzkim głosem:

Czemu uważasz, że tu jest błąd ? W/g not katalogowych tris steruje kierunkiem portu (0 - wy, 1 - we). Więc wszystko wygląda ok. Jeśli wcześniej do rejestru wyjściowego zastało wpisane 0, a następnie wpisano wartość do trisb, to po wykonaniu tej drugiej instrukcji powinieneś rzeczywiście uzyskać zero na wyjściu.

Użytkownik Edit napisał:

Jeszcze nie znalazłeś? Oj, człowieku!

formatting link
dokładniej:
formatting link
A jak chcesz sam rzeźbić, CO JEST ŁATWE, to weź dowolnego PDF-a z jakimś E2ROM-em I2C, tm jest wszystko jak wół napisane, i zapewniam że zadziała przy dowolnej prędkości i regularności regara, bylebyś tylko błędu w programie nie zrobił.

Zbych przemowil ludzkim glosem :

(ehhh, powitanie zupelnie jak w news.alcanet)

Zbychu ... bsf - oznacza w wolnym tlumaczeniu Bit Set, czyli ustawia bit (wpisuje jedynke jak kto woli) trisb,0 - jest to zerowy bit rejestr trisB

czyli instrukcja [bsf TRISB, 0] oznacza, ze ustawiamy bit zerowy rejestru trisB. Jest to tozsame z zadeklarowaniem zerowego pinu portu B (rb0 jak kto woli) jako wejscie (input)

W tej pozycji literaturowej (wydawniscto BTC), przytoczonej przez Edit'a nie jest to jedyny b³±d. Powa¿niejszym b³êdem jest to, ze auto w kilku miejscach myli cylk maszynowy z zegarowym, a w nastepstwie wykonuje bledne kalkulacje czasow wykonywania instrukcji. Idea rozwiazywania problemow jest przedstawiona dosc dobrze, jednak nalezy miec sie na bacznosci i caly czas sprawdzac autora w tym co pisze. Jest to niestety nie do pomyslenia. Osobiscie zaluje tych prawie 40 pln wydanych na ksiazke, kiedy sie jeszcze uczylem PICow. Jako wiarygodne zrodlo informacji pozostaje mirror producenta -

formatting link
, oraz nauka angielskiego, dla niekumatych.

pozdrawiam

Edit napisał(a):

To jest dobrze :) Za jakiś czas wyjaśnie zagadkę, ale pozwolę innym zgadnac/napisać/itp :-)

insane napisał(a):

tak w ogóle tam nie ma błędu tylko komentarz mało wyjaśnia. Poza tym książka jest bardzo dobra jeśli chcieć sięuczyć od zera, wiem bo mam i na niej się uczyłem.

Tam są pull-upy do Vdd i steruje się tak że 1 jest gdy piny ustawione są na wejście a 0 gdy na wyjście

insane przemówił ludzkim głosem:

Masz rację, bredzę jak potłuczony :-)

U¿ytkownik "szlovak" <quakex snipped-for-privacy@o2.pl napisa³ :

Owszem sa pull-up'y, tylko musisz je sobie najpierw wlaczyc, poprzez wyzerowanie 7go bitu rejestru OPTION, mniej wiecej tak:

bcf option_reg,7

Zerujesz, poniewaz po wlaczeniu zasilania, bit ten jest zawsze ustawiony, podobnie jak caly rejestr OPTION.

dalej troche nie jasno opisales, ale domyslam sie, ze chodzi Ci o kierunkowosc kolejnych bitow portu. Oczywiscie zgadza sie ze : 1 - (input) wejscie oraz 0 - (output) wyjscie.

ps. polecam forum majkroczipa w j.polskim ->

formatting link

U¿ytkownik "szlovak" <quakex snipped-for-privacy@o2.pl napisa³ :

oj, ja bym uwazal z tym stwierdzeniem. Egzemplarz, ktory posiadam pochodzi z

2002r. i jest to wydanie pierwsze. Zeby bylo jasne - mowie o ksiazce T.Jablonskiego "Mikrokontrolery PIC16F8x w praktyce" z BTC. Moim zdaniem ona nadaje sie dla osob co nieco kumatych ze wzgledu na dosc ciekawe przyklady - np. programowa transmisja po RSie czy i-kwadracie.

IMO bardzo dobra ksiazka, jezeli chce sie nauczyc od zera, jest taka pozycja :

S.Pietraszek "Mikroprocesory jednoukladowe PIC" Helion

Co prawda blad jest w samym tytule i pare literowek w srodku, do ktorych errate udostepnia Helion, ale nie ma takich bykow jak w tej z BTC. Kniga ta obejmuje prawie cala rodzine mid-range mikrokontrolerow Microchipa, a przynajmniej te najwazniejsze uklady peryferyjne.

insane napisał(a):

owszem są ale są za słabe, są chyba po 10k i do I2C przy 400kHz albo i więcej trzeba dać mniejsze

a jakże ,znam

A dok³adniej w których miejscach- na przyk³ad numer strony - by³bym wdziêczny :-))

Idea rozwiazywania problemow jest

Chyba nie jest tak ¼le ;-))) A tak wogole to zapraszam do ujawniania wszystkich zauwa¿onych b³edów, ale bez takich uwag jak tutaj. One niczego nie wnosza, a poziomen nawiazuja do prowadzonej obecnie kampanii wyborczej :-)))). Jezeli insane widzisz taka straszna ilosc bledow to wal i sie krepuj, ale dokladnie - strona to i to zle. Zaliczylem juz wiele takich uwag ale najczesciej konkretow brak. Co nie oznacza ze bledow nie ma, tak jak bledy sa w ksiazce bardzo szanowanego przeze mnie Pana Pietraszka (Helion) Pzdr Tomasz Jab³oñski snipped-for-privacy@ep.com.pl

Jest to niestety nie do pomyslenia.

U¿ytkownik "Tomasz Jab³oñski" snipped-for-privacy@ep.com.pl>

Witam Panie Tomku :)

Prosze bardzo :

Mowa o wydaniu pierwszym z 2002 roku strona 64 podrozdzial : 4.3 Timer0 i rejestr specjalny TMR0 wiersz 5 : "Gdy T0CS=0, to uk³ad pracuje jako timer. Zliczane s± wtedy impulsy z zewnêtrznego przebiegu zegarowego mikrokontrolera."

Co jest oczywiscie bledem, gdyz przy ustawieniu T0CS=0, MCU zlicza impulsy cylku maszynowego rownego 1/4 cyklu zegarowego.

Rysunki 4.8 i 4.9 sa ok.

Jako prawidlowe zrodlo informacji podaje noty katalogowe Microchip'a : DS30445C - z 1997 roku, dotyczy PIC16C84, strona 25, diagram 6-1 DS40044A - z 2002 roku, dotyczy PIC16F627A/628A/648A, strona 46, diagram 6-1 DS39582B - z 2003 roku, dotyczy PIC16F87xA, strona 53, diagram 5-1

Znajde chwile, to poszperam troche i jeszcze cos znajde. Pamietam, ze w przykladach jest byk - rowniez chodzi o pomylke z serii cykl maszynowy i zegarowy.

Owszem sa bledy. Nikt nie jest doskonaly. Jednak Helion udostepnia errate do tej ksiazki (jaki do wielu innych z reszta). Tutaj mozna miec pretensje bardziej do wydawnictwa niz do Pana.

jezeli trzeba, mozna wbijac do mnie na mejla snipped-for-privacy@wp.pl (usun cyfry)

Pozdrawiam.

z wyrazami szacunku

U¿ytkownik "insane" snipped-for-privacy@prv.prv napisa³ w wiadomo¶ci news:dh0t6j$aig$ snipped-for-privacy@news.onet.pl...

Zgadzam sie, ¿e wkrad³ siê w tym zdaniu b³±d, lub mo¿e bardziej nie¶cis³o¶æ. Timer0 zlicza w tym trybie cykle maszynowe. Czas trwania tego cyklu to 4 cykle (okresy) zegra oscylatora. Stwierdzenie...."zlicza impulsy cylku maszynowego rownego 1/4 cyklu zegarowego...." nie jest niestety równie¿ prawdziwe- prosze mnie poprawiæ je¿eli sie mylê. Mo¿na napisaæ, ¿e MCU zlicza impilsy o czêstotliwo¶ci równej 1/4 czêstotliwo¶ci zegra oscylatora. No w³a¶nie jest to przyk³ad jak trudno pisaæ nie tylko ksi±¿ki, ale te¿ niezle¿ne korekty do nich ;-))). W tym kontekscie nale¿y tez oceniæ do¶æ powa¿n± krytykê Pana insane :

przedstawiona dosc dobrze, jednak nalezy miec sie na bacznosci i caly czas sprawdzac autora w tym co pisze. Jest to niestety nie do pomyslenia<<<

Ponawiam pro¶be o przesy³anie dalszych zauwa¿onych b³edów i nie¶cis³o¶ci. mam nadziejê, ¿e korekta do tej ksi±zki zostanie neibawem umiesczona na stronach BTC Pzdr T.J.

Użytkownik Tomasz Jabłoński napisał:

A ogólny wniosek jest taki, że książek tego rodzaju kupować nie należy. Od tego są dane producenta - PDF-y w których jest wszystko. Do czytania potrzebne są jedynie PODSTAWY angielskiego, bez których tak czy owak w elektronice daleko zajechać się nie da.

U¿ytkownik "A.Grodecki" <ag.usun snipped-for-privacy@modeltronik.com napisa³ w wiadomo¶ci news:dh8ih4$hua$ snipped-for-privacy@atlantis.news.tpi.pl...

No to jest prawda niestety ze daleko sie nie da :-)). Ale po pierwsze ze znajomoscia angielskiego tak czy owak nie jest nalepiej, po drugie (mo¿e jeszcze niezbyt d³ugo;-p), ale oficjalnie mowimy i piszmy po polsku i czesc ludzi chcia³oby sobie poczytac w tym jezyku - w koncu maj± wybór.

Id±c tropem Kolegi A. Grodeckiego nie ma sensu wydawaæ czegokolwiek w jezyku polskim bo sa ksiazki po angielsku. Ciekawe czy Kolega podstaw swojego wykszta³cenia uczy³ siê z podrêczników akademickich po angielsku ( sa na pewno bardzo dobre, ale nie wiem czy wystarcz± PODSTAWY angielskiego) , czy z napisanych tym niepopularnym jezykiem przez zasciankowych autorów ;-p.

Co do materia³ów firmowych producentów to te¿ nie jest tak, ¿e s± bez b³edów, a i korekta je¿eli jest to zostawia wiele do ¿yczenia czego mam okazji wielokrotnie do¶wiadczaæ. Pozdrawiam T. Jab³oñski

U¿ytkownik "A.Grodecki" <ag.usun snipped-for-privacy@modeltronik.com napisa³ w wiadomo¶ci news:dh8ih4$hua$ snipped-for-privacy@atlantis.news.tpi.pl...

To nie jest ksi±¿ka dla fachowca, który ma za sob± mnóstwo zaprogramowanych kontrolerów ró¿nych typów. To jest ksi±¿ka dla pocz±tkuj±cego, który chcia³by zapoznaæ siê z tym o co chodzi w mikrokontrolerach i jako taka jest bardzo po¿yteczna i ka¿dy uczeñ hobbysta elektroniki powinien j± kupiæ. Tego nie znajdzie w *.pdf. Ba, nawet nie przebrnie przez ich czytanie, jak bêdzie zna³ jêzyk angielski literacki uczony w szkole.

*.pdf nowych produktów zwykle s± b³êdne. Erraty pojawiaj± siê, jak u¿ytkownicy masowo zg³osz± problem.

Użytkownik Tomasz Jabłoński napisał:

Kiedy zdobywałem wykształcenie, miałem przyjemność opanować obowiązkowo jedynie język rosyjski, który niestety nie nadawał się do niczego poza zaliczeniem przedmiotu.

Moja opinia nie wynika z faktu, że jestem przeciwny polskim autorom, bo nie jestem. Ale przytoczę zdarzenie, które miało miejsce w sobotę. Otóż udałem się do Księgarni Elektronika w W-wie przy ulicy Mokotowskiej w celu zakupu książki na pewien temat. Półki się uginają! I co? I nic. Można by rzec - szkoda było las wycinać. Same bzdety, treści przeciętnej jakości na 50 stron a reszta to "obowiązkowy" rys historyczny, przegląd egzotycznych rozwiązań i do tego po łebkach, że nic konkretnego dowiedzieć się nie da. Na końcu również standardowe dodatki w stylu tabela ASCII, słowniczek o wątpliwej wartości poznawczej itp. Ksiązka ogółem 300 stron, cena 49,90 :) Wychodzi 1zł za stronę treści, reszta to makulatura. I żeby jeszcze ta treść była taka, że poważnie można skorzystać, ale gdzie tam! Przeleciałem całą półkę i odpuściłem sobie. Przy okazji kupiłem 2 książki na inne tematy, z których jedna interesująca krajowego autora, a druga OCZYWIŚCIE tłumaczenie autora anmerykańskiego. Klasa sama w sobie. Po prostu książki trzeba umieć pisać i jest to bardzo trudne. Wiedza to nie wszystko. Żeby książka nadawała się do czegoś innego niż do zawieszenia na gwoździu w wychodku, trzeba mieć dar nauczania.

Owszem, ale rodzime kompilacje mają tych błędów do kwadratu więcej.

Użytkownik SP9LWH napisał:

Moim zdaniem idea i podstawy działania układów mikroprogramowanych są w bardzo wielu pozycjach. Nie musi być to omawiane na przykłądzie konkretnej rodziny. Idea jest jak dotąd niezmienna. Z takimi podstawami można spokojnie zabierać się za PDF-a. Co do języka - wystarczy zasób 200 słów.

Nie używasz Atmeli, i po problemie.

U¿ytkownik "A.Grodecki" <ag.usun snipped-for-privacy@modeltronik.com napisa³ w wiadomo¶ci news:dh9oeu$8ci$ snipped-for-privacy@atlantis.news.tpi.pl...

bardzo wielu pozycjach.

Ogólnie masz racjê, ale jak kto¶ nie ma bladego pojêcia o mikrokontrolerach, a mo¿e nawet doszed³ do wniosku, ze zacznie zabawê od PICów, to ta ksi±¿ka jest godna uwagi. Mo¿na kupiæ dowoln±,ogóln±, to czemu nie od razu o popularnym PICu. Powiem po sobie, ¿e ja stary jestem i kiedy¶ wiedzia³em jak dzia³a 6502 , Z80, a potem ma³o mi to by³o potrzebne i nie bawi³em siê mikroprocesorami od podstaw. Miêdzy Z80 a PIC jest przepa¶æ i pozycja literatury o Z80 nijak siê nie nadaje do u¿ycia PICa. A czy du¿o jest ksi±¿ek o mikrokontrolerach ? Zapewne za du¿o. Po co mi ogólne, jak ja chcê poæwiczyæ na konkretnym, ³atwo dostêpnym scalaku do którego jest na rynku ksi±¿ka? Taka ksi±¿ka od razu napêdza zbyt na pewn± rodzinê scalaków, bo o innych popularnej informacji brak.

Nawet popularny 16F628 mia³ w datasheet istotne b³êdy, które uniemo¿liwi³y mi u¿ycie pewnej jego funkcji bez znalezienia erraty. Errat wydano mnóstwo, a byæ mo¿e jeszcze za ma³o.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required