www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hygrosens I2C Bus Spec


Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe den TEMOD-I2C von Hygrosens. Habe die Doku und deren I2C 
Beschreibung heruntergeladen, ich verstehe bloß rein gar nichts.

Hat jemand dieses Teil (mit einem AtMega) auf dem I2C Bus zum Laufen 
gebracht ?


Danke im Voraus !

Autor: was-willst-du (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wo ist das problem ?
i2c ist i2c, kann man über assembler, c, basic ansprechen.

was geht denn nicht ?

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe die AVRLIB.ZIP von Pascal Stang.
Da ist ein I2C Bus Treiber drinnen, der - ich hoffe ich habe diesen Bus 
richtig verstanden - es ermöglicht mit einem Baustein zu plaudern.

Dann braucht man scheinbar einen Treiber, der an die entsprechenen 
Register des Bausteines und dessen Verhalten angepaßt ist. Dort ist das 
der DS18irgendwas glaub ich.

Genau dieses Ding brauche ich. In der Spezifikation von Hygrosens ist 
immer die Rede von deren USB Interface für einen PC, von EEPROM und RAM 
usw. Keine Ahnung wozu dieses Zeug alles gut ist. Mir fehlt da noch der 
Durchblick !

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Datenblatt?

MfG Spess

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist genau das, was ich gerade mit Kopfschütteln und Verzweiflung 
gelesen habe.

Mario

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Das ist genau das, was ich gerade mit Kopfschütteln und Verzweiflung
>gelesen habe.

Ich dachte eher daran, das du uns daran teilhaben könntest. Die 
Hygrosens Webseite ist leider etwas unübersichtlich.

MfG Spess

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist die Spec im Anhang.

Autor: Mario (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
mal sehen ob es so geht

Autor: Jan Krause (jeangonzales)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen,
mal zum Verständis: Der I2C-Bus wie auch der SPI-Bus wie auch so 
ziemlich jeder andere Bus dieser Welt läßt zwei Operationen zu:
1) Daten lesen
2) Daten schreiben

Das ist das, was dein I2C Bus Treiber aus der Pascal Stang lib leisten 
wird.
Was du jetzt brauchst, ist eine Implementierung des Protokolls des 
TEMOD-I2C, wie es ab Seite 14 in dem PDF beschrieben ist.
Und du brauchst ein weiteres Dokument, in dem der Speicheraufbau des 
Gerätes beschrieben ist, denn die Kommandos da dienen in erster Linie 
dazu diverse interne Speicher deines TEMOD auszulesen und zu 
beschreiben.

Hoffe geholfen zu haben

Autor: spess53 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Lt. Datenblatt musst du nur 2 Werte auslesen. Also kein Drama.

MfG Spess

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habs jetzt nach kurzer Rückfrage bei Hygrosens geschafft 
(ausgezeichnet guter Support!!): Man muß eben von der I2C Adresse 0x78 4 
Bytes lesen. Das ist dann die am Bus angelegte Adresse 0xf1.

Warum man da nicht auf eine Flag warten muß und wieso das ratiometrisch 
und trotzdem linear mißt werde ich auch noch klären.

PS:  Hat jemand die Email von Pascal Stang ? In seiner Library ist ein 
Fehler.

Autor: Markus C. (ljmarkus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo..

ich habe den gleichen Sensor und bekomme leider nur 4x 0xFF ausgelesen.

Wo liegt mein Fehler ?

F_CPU = 4Mhz
Ich nutze die im Anhang beigefügte I2C Software.


main.c
-----
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/eeprom.h>


#include "i2c_software_master.h"

void answer_uart(unsigned char c){
while (!(UCSRA & (1<<UDRE)))  /* warten bis Senden moeglich                   */
    {
    }
 
    UDR = c;
}


// USART Init
void init_uart(void) 
{
  UBRRL = 25;
  UCSRB = UCSRB | (1<<RXEN) | (1<<TXEN) | (1<<RXCIE);
  
  UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);

}


int main(void)      // Mainprogramm
{

  init_uart();
  _delay_ms(1000);
  
  answer_uart(0x06);
  _delay_ms(1000);
  



  
  i2c_master_init();
//  i2c_master_start();
  
//  i2c_master_write(0xf0);  
//  i2c_master_write(0x00);
  
  i2c_master_start();
  i2c_master_write(0xf1);
  
  uint8_t a = i2c_master_read(1);
  uint8_t b = i2c_master_read(1);
  uint8_t c = i2c_master_read(1);
  uint8_t d = i2c_master_read(0);
  
  i2c_master_stop();
  
  answer_uart(a);
  answer_uart(b);
  answer_uart(c);
  answer_uart(d);

  
}


Vielen Dank, Markus

Autor: Frank X. (matrixx200x)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat das jetzt schon mal jemand zum laufen bekommen, und zufällig eine 
laufenden c-Code.

Ich bekomme es egal mit welchem I2C/TWI C-Code zum laufen.

Oder das Modul ist defekt.

Von daher wäre ich für einen laufen Code sehr dankbar.

Gruss

Autor: Frank X. (matrixx200x)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sollte heissen.

Ich bekomme es egal mit welchem I2C/TWI C-Code nicht zum laufen.

Autor: Tom E. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank W. schrieb:
> Ich bekomme es egal mit welchem I2C/TWI C-Code zum laufen.

Woran fehlt es denn. Kommt auf dem I2C-Bus das Acknowledge vom Baustein 
nicht, sind die Werte anders als du denkst, kommt am Analogausgang nicht 
das Richtige raus?

Da gibt es viele Möglichkeiten.

Autor: Frank X. (matrixx200x)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also das Modul geht mit der Beschaltung.
Analog sowie auch Digital.

Habe den Bus mal gescannt mit einem Programm im BASCOM da ich nix 
vernünftiges in c oder so gefunden habe.

Und siehe da das Modul ist vorhanden mit der Write Adresse 0xF0 und mit 
der Read Adresse 0xF1 was ja 0x78 schifft nach links +0 für Write oder 
+1 für Read entspricht.

Soweit alles super

Dann habe ich das BASCOM Programm geändert so das die Werte( 2 Bytes ) 
gelesen werden.
Und Hurra ja das geht auch.

Jetzt gibt es nur das Problem das mein eigentlich Programm in den der 
Code eingefügt werden soll in c und nicht in BASCOM geschrieben ist.

Und ich habe bestimmt 5 oder noch mehr verschiedene I2C/TWI C-Codes 
ausprobiert.

und keiner läuft mit dem Modul
Init geht
Send START condition geht

und danach geht nix mehr.

Jetzt muss ich mal blöd fragen was macht BASCOM anders das es damit 
geht.
Unter anderem läuft so ein Modul bei einigen auch auf einem arduino.
http://forum.arduino.cc/index.php?topic=90805.0


ich habe mal das BASCOM "test" Programm angehängt.

Wenn ich die selben schritte mit avr-C mache läuft es nicht.
Also irgendwo sind da Unterschiede in den I2C Routinen zwischen BASCOM 
und den bekannten I2C avr c-Routinen.

Zur arduino Routine kann ich nix sagen habe nur gelesen das es auf dem 
arduino läuft und auch der Programm Code die machen genau das selbe wie 
ich im BASCOM oder im avr-C nur mit letzterm läuft es nicht. :-(


Mir fällt langsam nix mehr ein.

Daher fragte ich ob jemand das Ding am laufen hat mit einem AVR und 
einem c-Code.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.