mmmega02, problem z obsluga zegara i BMP085

Aug 26, 2013 14 Replies

Witam Bascom, wiem...:( Macie jakis pomysl jak obsluzyc te dwie rzeczy na raz? Problem jest taki, ze BMP085 dziala na 3 przewodach, (miso i mosi sa na jednej linii) a zegar ds1307 na dwoch.



konfiguracje mam taka Config Sda = Portb.2 'BMP085 podlaczenie Config Scl = Portb.1 'BMP085 podlaczenie



a konfiguracja DS-a: Sdi - Portb.2 Sdo -Portb.3 Scl -Portb.1



jak to ugrysc? Nie da sie przerobic na 3 linie (trzeba by ciac plytke i przepinac, wiec pozostaje software



Macie jakis pomysl?



Obsluga BMP085 dziala.



Drugie pytanie mam takie, jakis inny sposob na czyszczenie LCD T6963? CLS nie dziala, cls text oraz lcs graph tez nei do konca.. Moze trzeba zastowowac jakis myk?



Mam kikla podprogamow i musze wyszyscic lcd-ka, niestety tylko nadpisuje linie.


wchpikus snipped-for-privacy@wytnijto.wp.pl> napisa³(a):

Oba dzia³aj± na I2C i nie ma tam ¿adnego MISO ani MOSI. I2C jest dwuprzewodowe. Je¶li chodzi Ci o XCLR, to to jest reset BMP085 i nie ma nic wspólnego z I2C.

Ale z czym masz problem? ATmega32 ma SDA na PC1 a SCL na PC0, druga strona datasheeta.

Po co tak kombinujesz? Wiesz jak dzia³a I2C? ¯e wszystkie urz±dzenia s± na jednej szynie?

Tak, zacz±æ czytaæ dokumentacjê ze zrozumieniem. Przede wszystkim do mikrokontrolera którego siê u¿ywa.

W dniu 2013-08-26 12:58, Grzegorz Niemirowski pisze:

formatting link
na ostatniej stronie jest schemat, zegar ma rozdzielone sdi i sdo, czujnik cinienia ma jedna linie danych,

Zle sie wyrazilem, sorry Mam dwie linie sdi i sdo w zegarze, czy linie sdo mam nie obslugiwac?

wchpikus snipped-for-privacy@wytnijto.wp.pl> napisa³(a):

Ale na schemacie masz DS1305, a napisa³e¶, ¿e u¿ywasz DS1307. DS1305 komunikuje siê po SPI albo po jego odmianie half-dupleksowej, która zwiera linie SDI i SDO. DS1307 u¿ywa I2C i dlatego Ci o I2C napisa³em. Wiêc mo¿e siê zdecyduj.

wchpikus snipped-for-privacy@wytnijto.wp.pl> napisa³(a):

Ale z którego zegara chcesz korzystaæ? Je¶li DS1305 to masz do wyboru klasyczne SPI albo ten 3-wire interface. Jak siê zdecydujesz na interfejs do dopiero wtedy zajmij siê pod³±czaniem. Ja wzi±³bym zwykle SPI.

Quidquid MsgId est, timeo wchpikus et dona ferentem...

Coś zakręciłeś.

- ds1307 gada przez SPI (trzy linie, PB1,PB2,PB3)

- BMP085 gada przez I2C (dwie linie, PD0, PD1 - plus ewentualnie reset) Masz dwa urządzenia na różnych interfejsach, różnych pinach. Nie powinieneś mieć żadnego problemu.

Chyba że z jakichś powodów upierasz się żeby podłączyć czujnik ciśnienia koniecznie do tych samych pinów co zegar...

Sławek

W dniu 2013-08-26 13:52, Sławomir Szczyrba pisze:

Ok namieszalem:) Juz sie poprawiam Zegar na ds1305 czujnik cisnienia jaki jest (BMP085). Maja dzialac na tych samych pinach, czyli czuknik BMP085 podpiety jest pod PB2, jak na schemacie.

Z tego co rozumiem zegar dziala po SPI, a mam na tym samym pinie czujnik cisnienia..czy da sie jakos to pogodzic?

Ic2 mam dla ds18b20 na innym pinie..

wchpikus snipped-for-privacy@wytnijto.wp.pl> napisa³(a):

Czujnik ci¶nienia masz na I2C, ju¿ Ci to pisa³em. Skoro jest na I2C, to jest na INNYCH pinach ni¿ zegar, który jest na SPI. Wiêc nic nie musisz godziæ, bo to s± inne piny. Przeczytaj ze zrozumieniem post S³awomira.

DS18B20 nie jest na I2C, tylko na 1-Wire,

I odezwał się tymi oto słowy, user znany nam jako wchpikus :

Mają, ale czy koniecznie MUSZĄ?

Teoretycznie tak. Włączyć SPI, odpytać zegar, wyłączyć SPI, odpytać czujnik, obsługując cały protokół komunikacyjny I2C 'ręcznie' i pamiętając o blokowaniu 'drugiego' scalaka odpowiednim sygnałem CE. Biblioteki do bitbank I2C są na sieci. Ale raczej nie chcesz tego...

ds18b20 to 1wire, może być na dowolnym pinie bo i tak musisz go ręcznie obsłużyć. mega128 nie ma sprzętowego 1wire (AFAIR)

Sławek

W dniu 2013-08-26 14:07, Grzegorz Niemirowski pisze:

jezu, chyba faktycznie wszystko mi sie pomerdalo:(

- ds1305 gada przez SPI (trzy linie, PB1,PB2,PB3) ok to rozumiem

- BMP085 gada przez I2C (dwie linie, PD0, PD1 - plus ewentualnie reset), czyli spokojnie moge przepiac na inny port? Czyli ta konfiguracja nie ma sie ni jak do SPI?

Config Sda = Portb.2 Config Scl = Portb.1

Jesli SPI jest podlaczony w atmega128 do Pb0, PB1 i PB2 to SPI mam hardwarowy- tak?

Czyli

1wwrite odwoluje sie do 1wire I2cwbyte odwoluje sie do i2c

konfiguruje np spi:

sbi DDRB,7 ; SCK output cbi DDRB,6 ; MISO input sbi DDRB,5 ; MOSI output i obsuga poprzez SPIINIT SPIOUT

dobrze rozumuje? sorry za moje LAMERSTWO:)

wchpikus snipped-for-privacy@wytnijto.wp.pl> napisa³(a):

Nie znam siê na Bascomie, ale wygl±da dobrze. I nie pytaj o podpinanie, bo masz to napisane w datasheecie od ATmega128 (bo chyba tego mikrokontrolera u¿ywasz). Tam masz napisane (zaraz na stronie numer 2) na jakich pinach jest I2C a na jakich jest SPI. Wiêc po prostu pod³±cz zegar i czujnik do pinów odpowiednich interfejsów. Tu nie ma ¿adnej szczególnej filozofii. Na tych pinach te interfejsy s± realizowane sprzêtowo. Inaczej jest z termometrem. Z tego co pamiêtam, ¿adna ATmega nie ma sprzêtowego 1-Wire. W ogóle trudno znale¼æ mikrokontroler ze sprzêtowym

1-Wire. Dlatego 1-Wire realizuje siê programowo na dowolnym wolnym pinie. I dlatego termometr mo¿esz sobie przepinaæ, ale z czujnikiem ci¶niienia i zegarem nie masz tak naprawdê wyboru.

wchpikus nie tuman, nie da się wytępić!

Powinieneś.

SPI i I2C MOŻESZ mieć hardwarowy.

Tak. Ale...

Już ustalilismy przed chwilą, że SPI jest na pinach 0,1,2, więc dlaczego ustawiasz 5,6,7? :) BTW, jesli włączysz sprzętowe SPI/I2C odpowiednie piny są 'konfigurowane' automatycznie.

Z grubsza ;)

- ściagnij datasheeta do atmega128 i zaglądaj

- zdecyduj się czy chcesz stosować SPI/I2C hardware'owe czy programowe, (bo funkcje które cytujesz najwyraźniej ze sprzętu nie korzystają...)

- w zależnosci od tego co postanowisz, poszukaj odpowiedniej biblioteki (lub próbuj sam coś napisać)

Kazdy kiedyś zaczynał... :)

Sławek

To przyklad, chodzilo mi o to ze inna komenda jest do wywolania i sterowania spi a inna do i2c.

u mnie jest 1, 2, 3 PB

Dokaldnie, chyba zabralem sie za projekt ktory mnie przerosnie:)

Odpalilem wyswietlacz, czujnik cisnienia, temteratury i wilgotnosci, mam jeszcze do odpalenia zegar i pamiec..

Na szybko zaintalowalem PCF8583 i dziala, tylko nie mam procedury ustawienia czasu. Ale jesli mam na pokladzie ds1305, chcialbym go wykorzystac,szczegolnie ze mam podstawke pod baterie orginalnie.

Szukam gdzies w sieci przykladu dla ds1305 ale nigdzie nie ma, jest za to to 1307... Nie wiem jak to ugryzc.

Piszesz ze hardwerowo to nie jest SPI, w dokumentacji wlasnie pod portami 1 2 3 (portb) mam sck, mosi miso, wiec to chyba spi?

Juz neich tak zostanie, mam na osobnych cisnienie, na osobnym temperature i wilgotnosc, zostal tylko zegar..

Moze uda sie cos sklecic.

Witam! Mam jakis dzwiwny problem z obsluga t6963 (240x64 lcd) Nie moge wyczyslic ekranu, funkcja lcs w bascomie nie dziala...cls text czy cls graph tez nie.. Spotkal sie ktos w takim czyms?

W c szukam tez bibliotek do modulow, ale nie znalazlem.. ds1305, bmp085 oraz dth11... ds18b20 widzialem ze jest....

Co do t6963, jest tego troche, wiec sobie poradze.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required