Skocz do zawartości

[C] I2C sensowna biblioteka do C


Kulpina

Pomocna odpowiedź

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

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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?

Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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)'

Link do komentarza
Share on other sites

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ć 😉

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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ą.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.