Dwa port I2c w Atmega128
Dwa port I2c w Atmega128
Jak w bascomie (programowy I2c) w czasie trwania programu zmienić „w locie” ustawienia portów SCL i SDA na inne piny.
Muszę mieć w jednym procesorze działające dwa porty I2C (nie muszą działać jednocześnie) tak, aby można czytać raz na jednym a po zmianie pinów SCL i SDA na drugim.
Umieszczenie polecenia np.:
Config Sda = Porte.5
Config Scl = Porte.6
I2cinit
Wewnątrz programu nic nie daje. Kompilator ustawia te linie SCL i SDA, które w tekście programu, zostały skonfigurowane (wystąpił wpis config…) jako ostatnie.
Proszę o radę jak to zrobić.
Muszę mieć w jednym procesorze działające dwa porty I2C (nie muszą działać jednocześnie) tak, aby można czytać raz na jednym a po zmianie pinów SCL i SDA na drugim.
Umieszczenie polecenia np.:
Config Sda = Porte.5
Config Scl = Porte.6
I2cinit
Wewnątrz programu nic nie daje. Kompilator ustawia te linie SCL i SDA, które w tekście programu, zostały skonfigurowane (wystąpił wpis config…) jako ostatnie.
Proszę o radę jak to zrobić.
Mam układ w którym pracują ze sobą dwa procesry i jeden z nich komunikuje się z drugim przez bufor - pamięć FRAM na i2c ( raz jeden jest masterem a raz drugi) oraz drugi z nich jeszcze z innym układem na i2c.
poterzebuję dwa porty I2c aby nie spowalniać wymiany danych między nimi.
Jeden zapisuje do FRAM a drugi w tym czasie może komunikować się z innym układem na I2c.
Troche to zawiłe ale konieczne.
Myślałe aby jeden z portów I2c zrobić w procedurach BASCOM (programowych) a inny w asemblerze.
Może ktoś ma jakieś ciekawe procedurki. Asembler nie jest moją mocną stroną
poterzebuję dwa porty I2c aby nie spowalniać wymiany danych między nimi.
Jeden zapisuje do FRAM a drugi w tym czasie może komunikować się z innym układem na I2c.
Troche to zawiłe ale konieczne.
Myślałe aby jeden z portów I2c zrobić w procedurach BASCOM (programowych) a inny w asemblerze.
Może ktoś ma jakieś ciekawe procedurki. Asembler nie jest moją mocną stroną
Oba wykorzystane są do komunikacji z PieCem? Jeden chyba do tego celu wystarczy...
Drugi w tym czasie może służyć za uniwersalną magistralę M-M...
Asembler za dużo tu nie pomoże, a stanie się źródłem dodatkowych problemów...
Ale - wykorzystujesz sprzętowe TWI, czy korzystasz z innych końcówek?
Jeśli TWI jest niewykorzystane, zawsze możesz ręcznie ustawić odpowiednie rejestry w BASCOM-ie...
Drugi w tym czasie może służyć za uniwersalną magistralę M-M...
Asembler za dużo tu nie pomoże, a stanie się źródłem dodatkowych problemów...
Ale - wykorzystujesz sprzętowe TWI, czy korzystasz z innych końcówek?
Jeśli TWI jest niewykorzystane, zawsze możesz ręcznie ustawić odpowiednie rejestry w BASCOM-ie...
Docelowo będzie potrzebny jeden UART drugi wykorzystuje jako podgląd danych (na czas uruchomienia programu) ale zastosowanie pamięci FRAM jest u mnie konieczne nie mogę i nie chcę połączyć dwóch procesorów bezpośrednio.
FRAM jest jakby "dyskiem twardym" z danymi dla obu procesorów.
Obecnie korzystam ze sprzętowego I2c (mam na myśli końcówki) ale zrobione jest to programowo. Na innych pinach chciałem zrobić komunikację z tym dodatkowym układem drugiego procesora (układ ma tylko interfejs I2c).
FRAM jest jakby "dyskiem twardym" z danymi dla obu procesorów.
Obecnie korzystam ze sprzętowego I2c (mam na myśli końcówki) ale zrobione jest to programowo. Na innych pinach chciałem zrobić komunikację z tym dodatkowym układem drugiego procesora (układ ma tylko interfejs I2c).
Myślałem o SPI ale mam już płytkę ( w założeniu miało byc po I2c) są nawet pamięci FRAM z iterjesem SPI. U mnie układ jest tak:
procesor_1 <------------> FRAM <-------------> procesor_2 <---------> (dodatkowe układy na I2c)
i taki chcę zachować. Nie ma być połączenia bezpośredniego między prockami.
Kombinuję już z wstawkami w asemblerze tak aby między 1 a 2 szło sprzetowo (TWI) a z 2 do dodatkowych układów programowo (po innych pinach) procedurami z BASCOM.
procesor_1 <------------> FRAM <-------------> procesor_2 <---------> (dodatkowe układy na I2c)
i taki chcę zachować. Nie ma być połączenia bezpośredniego między prockami.
Kombinuję już z wstawkami w asemblerze tak aby między 1 a 2 szło sprzetowo (TWI) a z 2 do dodatkowych układów programowo (po innych pinach) procedurami z BASCOM.