Skocz do zawartości

[C] I2C sensowna biblioteka do C


Pomocna odpowiedź

Napisano

Z jakiej biblioteki korzystacie pisząc programy w C?

Ja próbowałem z tego opisanego tu http://www.mikrokontrolery.net/avr_c_09.htm

ale jak próbuje odczytać kilka bajtów pod rząd, to prawidłowo odczytuje się tylko pierwszy (reszta jako 255).

Aktualnie próbuję pisać swoją własną bibliotekę, ale jest właśnie problem z ACK itp. i jestem już trochę zmęczony niedziałaniem programu od kilku tygodni, a jest właśnie tylko ten jeden durny problem...

Może to niewychowawcze, ale za każdą nawet błahą poradę czy wskazanie błędu w tej bibliotece z linku stawiam piwo. Wszystkim się tak totalnie nie chce poświęcić mi 5 minut, na wszystkich forach, że mam już tego serdecznie dość.

Zabawa jest prosta: Osoba która pomoże mi rozwiązać problem dostaje ode mnie gratis 2 Atmegi8.Koszty przesyłki pokrywam ja. Rozwiązanie problemu to doprowadzenie do tego, żebym mógł odczytać z I2C kilka bajtów pod rząd, a nie wysyłać za każdym razem start i adres do odczytania.

i jeszcze linki na których problem aktualnie wciąż nie jest rozwiązany:

http://www.elektroda.pl/rtvforum/viewtopic.php?p=7607725#7607725

http://elportal.pl/forum/viewtopic.php?t=9370

wystarczy wejść na stronę atmela i wiedzieć gdzie szukać 🙂 :

PDFy opisujące jak wykorzystać TWI AVRka:

-w trybie slave:

http://www.atmel.com/dyn/resources/prod_documents/doc2565.pdf

tutaj biblioteki i przykładowy kod:

http://www.atmel.com/dyn/resources/prod_documents/AVR311.zip

-w trybie master:

http://www.atmel.com/dyn/resources/prod_documents/doc2564.pdf

biblioteki i przykładowy kod:

http://www.atmel.com/dyn/resources/prod_documents/AVR315.zip

Założyłem, że chcesz użyć ATtiny albo ATmega i wykorzystać moduł TWI. Jeśli chcesz to zrobić inaczej to też się coś poardzi. 🙂

  • Lubię! 2

No ciekawe 😉 Zapoznaję się

A co do TWI, to chyba nie za bardzo. Muszę wykorzystać inne końcówki, a w TWI chyba SDA I SCL są z góry narzucone w układzie, co mi nie pasuje

Wiem, że muszę skorzystać z SDA i SCL, kwestią które z nóżek mikroprocesora zaadaptuje jako sda i scl. W i2c jest tu chyba dowolność a przy wykorzystaniu sprzętowego twi muszę wykrozystać te nóżki które są jako sda i scl podane w nocie no nie?

TWI to tylko inna nazwa I2C. Jeśli wykorzystasz sprzętowe TWI czy I2C, musisz dostosować się do możliwości procesora.

Jeśli chcesz programowo implementować komunikację, nie ma różnicy jak to nazwać TWI/I2C.

  • Lubię! 1
TWI to tylko inna nazwa I2C. Jeśli wykorzystasz sprzętowe TWI czy I2C, musisz dostosować się do możliwości procesora.

No tak, ja chcę wykorzystać tylko programowe 😉

Narazie gotowych bibliotek brak, z każdą trzeba się zaznajomić 😉 Prawdopodobnie wykorzystam tę z kursu C w EdW, to jest na podstawie dokumentu AVR300. Bardzo podoba mi się tam osobne podejście do wpisywania bitu i odbierania sygnału ACK.

Jeśli by ktoś był jeszcze zainteresowany, to taka biblioteka do przeanalizowania 'Kurs C EdW 12/2005(str.37)'

No i biblioteka z EdW pomogła 😅

Ludzie nareszcie 😉 Miałem już tego dość...

Szkoda mi, że nikomu nie wyślę tych Atmeg, chociaz nes86 dostarczył np. kilku ciekawych materiałów, których nie wiedziałem jak szukać 😉

  • 10 miesiące później...

Mam podobny problem jak Kulpina

Podłączyłem DS1631 do Atmegi8 (wykorzystuję sprzętowy I2C). Zapisać i odczytać jeden bajt potrafię. Problem pojawia się przy próbie odczytu 2 bajtów:

- odczyt temperatury - 1 bajt 24, 2 bajt 255 - temperatura ok 24stC

- zapis i odczyt TH (ma funkcję termostatu) - zapisuje np. 40 41 a odczytuje 40 255

za każdym razem wartość drugiego rejestru wynosi 255.

Z góry dzięki za pomoc

  • 6 miesiące później...
mógłby ktoś dać link do tej biblioteki, bo nie mogę znaleźć.

z góry dzięki.

Google w łapkę i szukasz TWI, bo tak I2C nazwane jest w Atmelach (patenty) a jak sądzę o AVRy pytasz.

I np. znajdujesz: http://www.avrfreaks.net/index.php?func=viewItem&item_id=75&module=Freaks%20Tools

albo: http://jump.to/fleury

Powinieneś także wiedzieć, że większość bibliotek stosuje polling, a nie przerwania.

Więc szukając zwracaj na to uwagę. No i jeszcze tryb MASTER i SLAVE.

Przy czym pamiętajmy że w AVRech mamy do czynienia z I²C w 2 wersjach, pełnej pod szyldem TWI, i okrojonej pod nazwą USI (głównie procesory ATTiny), które nieco różnią się od siebie obsługą.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...