Atmega16 mit THMOD-I2C als Slave... keine Rückmeldung

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 28 9 2024  14:13:59      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( Vorherige Seite 1 | 2 )      


Autor
Atmega16 mit THMOD-I2C als Slave... keine Rückmeldung
Suche nach: atmega16 (131) i2c (576)

    







BID = 833571

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika
 

  



Zitat :
/* SLA+R has been transmitted; NOT ACK has been received */

Wenn ein NACK zurückkommt, deutet das aber darauf hin, dass der Slave gar nicht angesprochen wurde.
Denn NACK ist HIGH-Potential, was über den Pullup-Widerstand anliegt. Das wird nicht aktiv durch den Slave erzeugt.

Es gibt halt nicht das I²C-Protokoll für solche Geschichten.

Nach meinem Verständnis muss der Slave aber an dieser Stelle mit einem ACK antworten, um zu bestätigen, dass er seine Adresse gelesen hat.

Bei Slaves, von denen gelesen wird, ist es aber auch üblich, vor dem eigentlichen Lesen noch ein paar Daten zu schicken, z.B. eine Registeradresse oder eine Instruktion. Dann kommt ein zweites Start, ein sogenannte repeated start condition und man beginnt zu lesen.

Hast du mal geguckt, ob es für diesen Slave schon Code gibt?


Sind die Massen synchronisiert?
100nF-Blockkondensatoren verbaut?
Für mich klingt das immer noch nach fehlerhafter Hardware.

_________________

BID = 833642

1ncept10n

Gerade angekommen


Beiträge: 8
Wohnort: regensburg

 

  

Nun was die Stabilität anging war es sehr dürftig mit einem 100 nF am Ausgang des Spannungsreglers ausgestattet...

Habe ihm noch einen 100 nF (Keramik) von der Spannungsversorgung des Moduls gegen Masse verpasst... und noch direkt am Vcc gegen GND am ATmega16 einen.

Siehe da ein kleines Wunder is geschehen:

i2c_start();
/* A START condition has been transmitted */

i2c_transmit(0x78 << 1);
/* SLA+W has been transmitted; ACK has been received */

received_data = i2c_receive(NACK);
/* Data byte has been transmitted; NOT ACK has been received */

i2c_stop();
/* Data byte has been transmitted; NOT ACK has been received */


Der Slave hat quasi geantwortet, nur sendet er keine Daten... auch nicht mit i2d_receive(ACK)

Hilfreichen Code finde ich hierzu leider wenig:

Hier ein Beitrag..

BID = 833725

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Hallo,


Zitat :

i2c_start();
/* A START condition has been transmitted */

i2c_transmit(0x78 << 1);
/* SLA+W has been transmitted; ACK has been received */

received_data = i2c_receive(NACK);
/* Data byte has been transmitted; NOT ACK has been received */

i2c_stop();
/* Data byte has been transmitted; NOT ACK has been received */


Der Slave hat quasi geantwortet, nur sendet er keine Daten... auch nicht mit i2d_receive(ACK)

Ja, ist klar.
Du sendest ja auch SLA+W, nicht SLA+R.

Versuch mal sowas in der Art:

#define SLA (0x78<<1)
#define READ 1

uint8_t data[4];

i2c_start();
i2c_transmit(SLA + READ);
data[0] = i2c_receive(ACK);
data[1] = i2c_receive(ACK);
data[2] = i2c_receive(ACK);
data[3] = i2c_receive(NACK);
i2c_stop();


Für Debug würde ich nach jeder i2c-Transaktion via i2c_get_status() den Status über die UART an den PC senden und dann mit dem Datenblatt die Zustände abgleichen.


Offenbar hört der Slave ja auf seine Schreibadresse, nur ist das hier uninteressant.

_________________


Vorherige Seite      
Gehe zu Seite ( Vorherige Seite 1 | 2 )
Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 17 Beiträge im Durchschnitt pro Tag       heute wurden bisher 15 Beiträge verfasst
© x sparkkelsputz        Besucher : 182088596   Heute : 3077    Gestern : 6155    Online : 676        28.9.2024    14:13
8 Besucher in den letzten 60 Sekunden        alle 7.50 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0357189178467