Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 15 mar 2025, o 21:42


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 1 ] 
Autor Wiadomość
PostNapisane: 7 sie 2015, o 12:46 
Offline
Użytkownik

Dołączył(a): 14 gru 2014
Posty: 30
Zbananowany użytkownik

Pomógł: 0

Od kilku dni próbuje obsłużyć i2c na przerwaniach. W końcu mi się udało.
Zmieniłem bibliotekę i2c na Prycon http://www.procyonengineering.com/embedded/avr/avrlib/ i wprowadziłem zmiany w funkcji i2cMasterReceive(u08 deviceAddr, u08 length); przerzucając z jej końca odczyt bufora danych do nowej funkcji i2cMasterReceiveBuffer(u08 length, u08* data); a także napisałem funkcję MPU6050_Test_I2C() opierając się na kilkudniowych doświadczeniach z biblioteką avr315 atmel corporation.

main.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i2c_prycon.h
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i2c_prycon.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Z biblioteki do projektu należy także dodać pliki prycona
avrlibdefs.h
avrlibtypes.h
global.h
i2cconf.h
a także MKUART z bluebooka.
(oryginalna obsługa i2c prycona nazywa się i2c.c oraz i2c.h w jego bibliotece)

Tutaj otrzymany wynik :)
Obrazek

Aby obsłużyć urządzenie należy napisać sobie funkcję podobną do MPU6050_Test_I2C(), która podzieli zadania na zapis (tutaj wysłanie do urządzenia adresu komórki do odczytu), odczyt z urządzenia (odczyt n bitów do bufora) i odczyt z bufora I2C do własnego bufora i wyświetlenie go. Jeżeli i2c jest aktualnie zajęte i2cGetState() to wracamy do pętli głównej i wykonujemy inne zadania.

Przez odpowiednią zmianę twiState sekwencyjnie dokonujemy zapisu, odczytu i odczytu z bufora. Następnie ustawiam twiState na TWI_IDLE aby ponownie zmienić stan na TWI_REQUEST_REGISTER i zwrócić funkcją wartość 1, która spowoduje 3 sekundowe opóźnienie w pętli głównej przed kolejnym odczytem.

Jak obsłużę całkowicie żyroskop to zabiorę się za przerobienie biblioteki na atnelowską modę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 1 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO