Forum - MCS Electronics

 

FAQFAQ SearchSearch RegisterRegister Log inLog in

I2C-MULTI Problem mit ATMEGA328PB und MCP79410

 
Post new topic   Reply to topic    www.mcselec.com Forum Index -> BASCOM-AVR
View previous topic :: View next topic  
Author Message
docHO

Bascom Member



Joined: 15 Oct 2011
Posts: 1

germany.gif
PostPosted: Thu Jun 20, 2019 11:07 am    Post subject: I2C-MULTI Problem mit ATMEGA328PB und MCP79410 Reply with quote

Hallo,
wer kann helfen?
Wegen eines Adresskonflikts auf dem I2C Bus, habe ich eine Lösung mit dem ATMEGA328PB versucht, scheitere aber an dem I2C_TWI_MULTI.
Zunächst konfiguriere und initialisiere ich den I2C_TWI_MULTI - BUS (Bascom Beispiel):
$lib "I2C_TWI-MULTI.lib"
Config Scl = Portc.5 ' we need to provide the SCL pin name
Config Sda = Portc.4 ' we need to provide the SDA pin name

Config Sda1 = Porte.0 'use this for the second TWI
Config Scl1 = Porte.1

Config Twi = 400000
Config Twi1 = 400000

Dim _i2cchannel As Byte ' you MUST dim this variable yourself when using the above lib
I2cinit 'default TWI init
I2cinit Twi1 'optional TWI1 to init that interface

Nach Auswahl des jeweiligen Kanals mit _i2cchannel = 0 bzw. _i2cchannel = 1 werden alle Komponenten bis auf den Mcp79410 gefunden.
I2cstart
I2cwbyte I2C_address 'send address
I2cstop
If Err = 0 Then 'got ack
Print "OK "
Else
Print "ERROR "
End If

OK - M24m02_1 -- &B1010_0000 'an _i2cchannel = 1
OK - M24m02_2 = &B1010_1000 'an _i2cchannel = 1
ERROR -- Mcp79410 'an _i2cchannel = 0
ERROR -- Mcp79410eeprom 'an _i2cchannel = 0
OK - HT16K33 -- &B1110_0000 ''an _i2cchannel = 0

Das Umschalten zwischen den I2C Kanälen funktioniert offensichtlich, nur der MCP79410 wird nicht gefunden.

Zur Überprüfung der Verdrahtung und der Hardware habe ich mittels Software I2C die verschiedenen I2C – Bausteine separat angesprochen:

'****** I²C bus *******
'ONLY I2C hardware BUS $lib "I2C_TWI.Lbx"
Config Sda = Portc.4
Config Scl = Portc.5
Config Twi = 400000
I2cinit
'********
I2cstart
I2cwbyte I2C_address 'send address
I2cstop
If Err = 0 Then 'got ack
Print "OK "
Else
Print "ERROR "
End If
Das funktioniert ohne Probleme, die Komponenten an C.4 / C.5 antworten mit ACK
OK -- Mcp79410 -- &B1101_1110
OK -- Mcp79410eeprom -- &B1010_1110
OK -- HT16K33 -- &B1110_0000

Aktiviere ich aber die Hardware I2C ($lib "I2C_TWI.lbx), dann erhalte ich nur noch von dem HT16K33 ein ACK, der RTC Baustein meldet sich nicht mehr.

Starte ich den gleichen Versuch mit dem zweiten Software I2C an E.0 / E.1, dann antworten wie erwartet die Speicherbausteine M24M02-DR.
OK - M24m02_1 -- &B1010_0000
OK - M24m02_2 = &B1010_1000


Zusammenfassend gesagt:
Immer wenn mittels der entsprechenden .lbx auf HARDWARE I2C umgeschaltet wird, funktioniert der MCP79410 nicht mehr.
Um den üblichen Rückfragen vorzubeugen:
Nein, der Chip ist nicht defekt, ich habe zwei Exemplare probiert, das Problem bleibt bestehen.
Nein, es wurden keine pull up Widerstände (4K7) vergessen.
Nein, die Busgeschwindigkeit ist nicht zu hoch, ich habe auch Config Twi = 100000 probiert.
Nein, die Leitungslänge ist nicht zu lang, sondern eher kurz, wobei der HT16K33 am weitesten entfernt ist, der MCP7941 sitzt nur etwa 3 cm vom Atmega entfernt.
Der AtmegA328PB läuft mit dem internen Oszillator mit 8 Mhz.

Eigentlich würde ich das Problem bei dem MCP79410 suchen, aber dieser funktioniert mit SOFTWARE I2C problemlos.
Mein Gedanke ist nun, dass das Timing des HARDWARE I2C irgendwie kritisch ist.
Mir steht momentan kein Oszi zur Verfügung, bei Gelegenheit werde ich aber versuchen das Timing zu überprüfen.
Hat jemand eine Idee? Mache ich irgendwo einen (Denk-) Fehler.
Kann man in der .lbx irgend etwas ändern?
Kann man in den Registern des Atmega328PB irgendetwas anpassen?
Vielen Dank für eure Mühe und das Gehirnschmalz

(BASCOM-AVR version : 2.0.8.1 )
Back to top
View user's profile
Display posts from previous:   
Post new topic   Reply to topic    www.mcselec.com Forum Index -> BASCOM-AVR All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum