ATNEL tech-forum https://forum.atnel.pl/ |
|
Atmega4809 w połączeniu z ADS1115 za pomocą I2C https://forum.atnel.pl/topic24615.html |
Strona 1 z 1 |
Autor: | Smykowskii [ 24 sty 2024, o 21:50 ] |
Tytuł: | Atmega4809 w połączeniu z ADS1115 za pomocą I2C |
Cześć, Uczę się obecnie programować Atmega4809. Kawałek programu napisałem i działa według założeń, lecz utknąłem przy pisaniu biblioteki do obsługi I2C. Szukałem w sieci czegoś na czym można się oprzeć i znalazłem biblioteki na poniższej stronie z pierwszego posta. avrfreaks.net/s/topic/a5C3l000000UZlVEAW/t151275 Próbowałem modyfikować rejestry w tej bibliotece według dostępnego manuala i dokumentacji od Microchipa, Rejestrów jest tak dużo że nie wiem co ma być dokładnie ustawione. Pomyślałem o Tym forum z myślą o naprowadzeniu i wskazaniu czym powinienem się zainteresować. Co do HW to Atmega4809 obecnie jest taktowana z wewnętrznego generatora na 10 MHz, zasilanie to 3V3 więc to najwyższe taktowanie. Nie wiem czy nie zasilić z 5V i zwiększyć taktowanie do 20 MHz, ale wtedy musiał bym zastosować konwerter poziomów napięć dla OLED. Potrzebuję zastosować w miarę dokładny ADC najlepiej z pomiarem różnicowym. Postawiłem więc na ADS1115 podpięty jest do magistrali TWI za pomocą pinów PA3 i PA2 Co do biblioteki to coś działa w wersji oryginalnej. Jednak jak wysyłam ramkę TWI_Start(0x48); to tak naprawdę jest wysyłana 0x24. A jak wysyłam ramkę TWI_Write(0x01); to wartość jest wysyłana poprawnie, ale jak chcę nadać kolejną TWI_Write(0xC1); to muszę między nimi dać kilkadziesiąt do set opóźnienia w mikrosekundach gdyż wysyła się tylko jedna, a pozostałe już nie są wysyłane. Dzięki za rady z góry. W razie czego dostarczę kod i odczyty z analizatora. Pozdrawiam Smykowskii |
Autor: | moscow [ 24 sty 2024, o 23:03 ] |
Tytuł: | Re: Atmega4809 w połączeniu z ADS1115 za pomocą I2C |
Tej biblioteki o której piszesz niestety nie znam, ale na serio może warto po prostu zaopatrzyć się atnelową bibliotekę MK I2C jeśli chcesz nastawić się na szybki rezultat. https://sklep.atnel.pl/pl/p/0581_0582-M ... teka-C/244 Ja pisałem swoją własną obsługę I2C na przerwaniach (akurat mi na tym zależało), ale też poważnie się zakałapućkałem z tym I2C i gdybym nie miał Mirkowej biblioteki jako referencji, to bym wszystkie włosy chyba z głowy wyrwał. Z rzeczy na których utknąłem w którymś momencie mogę wymienić: - niepoprawne oczekiwanie na zakończenie operacji TWI (jeśli nie przerwanie, to trzeba czekać na bit TWINT w rejestrze TWCR) - odpowiednie ustawianie ACK/NACK przy transmisji - błąd potrafi "zawiesić magistralę" w subtelnych okolicznościach - np. kiedy ostatni bit transmisji jest zerem. - na implementację I2C trochę trzeba patrzyć jak na graf operacji, albo maszynę stanów - zauważyłem, że przejście z poprzedniego stanu do następnego musi być zrobione dokładnie tak jak dokumentacji procka opisane - jak zrobi się coś inaczej, to zaczynają się fajerwerki ![]() podrzucam mój własny przykład implementacji TWI (w trybie Slave) - w dość specyficznym wykorzystaniu - niezbyt generyczne - ale być może się przyda jako referencja, choć z perspektywy czasu nie wydaje mi się ten kod zbyt czytelny - mimo, że sam go pisałem ![]() https://github.com/k-moskwa/kmSigGen/bl ... TWISlave.c |
Autor: | Smykowskii [ 24 sty 2024, o 23:33 ] |
Tytuł: | Re: Atmega4809 w połączeniu z ADS1115 za pomocą I2C |
Myślałem o zakupie tej biblioteki ale z tego co wiem są inne rejestry. W końcu to jest dużo nowszy kontroler niż przykładowo Atmega32. Atmega4809 jest wyprodukowana przez Microchip, a nie Atmel. Pozdrawiam Smykowskii |
Autor: | moscow [ 25 sty 2024, o 07:03 ] |
Tytuł: | Re: Atmega4809 w połączeniu z ADS1115 za pomocą I2C |
Smykowskii napisał(a): Myślałem o zakupie tej biblioteki ale z tego co wiem są inne rejestry. W końcu to jest dużo nowszy kontroler niż przykładowo Atmega32. Atmega4809 jest wyprodukowana przez Microchip, a nie Atmel. Pozdrawiam Smykowskii W sumie racja, nie zwróciłem uwagi, że to nowszy procek. Ale może warto rozpylać temat na starszym i z działającą biblioteką, a potem sportować na nowszy. U samych podstaw filozofia działania nie powinna aż tak bardzo się różnić ![]() |
Autor: | JarekK [ 26 sty 2024, o 22:18 ] |
Tytuł: | Re: Atmega4809 w połączeniu z ADS1115 za pomocą I2C |
A czy ten wątek rozważałeś? https://www.avrfreaks.net/s/topic/a5C3l ... AG/t151595 |
Autor: | JarekK [ 27 sty 2024, o 11:43 ] |
Tytuł: | Re: Atmega4809 w połączeniu z ADS1115 za pomocą I2C |
Alternatywą do wyżej wymienionej gotowej dla atmega4809 biblioteki na https://start.atmel.com/ która jak się okazuje może stwarzać trudności jest ewentualnie biblioteka dla TWI z attiny817. Rejestry i funkcjonalność wydają się być niemal identyczne (atmega4809 ma tylko jeden rejestr więcej, który chyba jest używany bardzo sporadycznie). https://ww1.microchip.com/downloads/en/ ... 02543C.pdf Przykład jest działający, pytanie tylko na ile otwarty jest w tym przykładzie kod do prawidłowego działania TWI z czujnikiem temperatury. |
Autor: | JarekK [ 28 sty 2024, o 19:43 ] |
Tytuł: | Re: Atmega4809 w połączeniu z ADS1115 za pomocą I2C |
Jeśli na I2C ma być tylko jeden slave i można zrezygnować z I2C na przerwaniach, to jest fajny tutorial dla Attiny817 z wyjaśnieniem i kodami I2C: https://www.youtube.com/watch?v=ojBST0XEFl8 Zmiana na ATmega4809 to już kosmetyka. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |