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



Teraz jest 3 gru 2024, o 18:46


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 24 sty 2024, o 21:50 
Offline
Nowy

Dołączył(a): 24 sty 2024
Posty: 2
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2024, o 23:03 
Offline
Użytkownik

Dołączył(a): 09 lip 2019
Posty: 110
Pomógł: 11

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2024, o 23:33 
Offline
Nowy

Dołączył(a): 24 sty 2024
Posty: 2
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2024, o 07:03 
Offline
Użytkownik

Dołączył(a): 09 lip 2019
Posty: 110
Pomógł: 11

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ć :-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2024, o 22:18 
Offline
Użytkownik

Dołączył(a): 13 lut 2012
Posty: 173
Pomógł: 10

A czy ten wątek rozważałeś?
https://www.avrfreaks.net/s/topic/a5C3l ... AG/t151595



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sty 2024, o 11:43 
Offline
Użytkownik

Dołączył(a): 13 lut 2012
Posty: 173
Pomógł: 10

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sty 2024, o 19:43 
Offline
Użytkownik

Dołączył(a): 13 lut 2012
Posty: 173
Pomógł: 10

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.



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: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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