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 !
wo ist das problem ? i2c ist i2c, kann man über assembler, c, basic ansprechen. was geht denn nicht ?
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 !
Das ist genau das, was ich gerade mit Kopfschütteln und Verzweiflung gelesen habe. Mario
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
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
Hi Lt. Datenblatt musst du nur 2 Werte auslesen. Also kein Drama. MfG Spess
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.
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 -----
1 | #include <avr/io.h> |
2 | #include <avr/wdt.h> |
3 | #include <avr/interrupt.h> |
4 | #include <util/delay.h> |
5 | #include <avr/eeprom.h> |
6 | |
7 | |
8 | #include "i2c_software_master.h" |
9 | |
10 | void answer_uart(unsigned char c){ |
11 | while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */ |
12 | {
|
13 | }
|
14 | |
15 | UDR = c; |
16 | }
|
17 | |
18 | |
19 | // USART Init
|
20 | void init_uart(void) |
21 | {
|
22 | UBRRL = 25; |
23 | UCSRB = UCSRB | (1<<RXEN) | (1<<TXEN) | (1<<RXCIE); |
24 | |
25 | UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0); |
26 | |
27 | }
|
28 | |
29 | |
30 | int main(void) // Mainprogramm |
31 | {
|
32 | |
33 | init_uart(); |
34 | _delay_ms(1000); |
35 | |
36 | answer_uart(0x06); |
37 | _delay_ms(1000); |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | i2c_master_init(); |
44 | // i2c_master_start();
|
45 | |
46 | // i2c_master_write(0xf0);
|
47 | // i2c_master_write(0x00);
|
48 | |
49 | i2c_master_start(); |
50 | i2c_master_write(0xf1); |
51 | |
52 | uint8_t a = i2c_master_read(1); |
53 | uint8_t b = i2c_master_read(1); |
54 | uint8_t c = i2c_master_read(1); |
55 | uint8_t d = i2c_master_read(0); |
56 | |
57 | i2c_master_stop(); |
58 | |
59 | answer_uart(a); |
60 | answer_uart(b); |
61 | answer_uart(c); |
62 | answer_uart(d); |
63 | |
64 | |
65 | }
|
Vielen Dank, Markus
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
sollte heissen. Ich bekomme es egal mit welchem I2C/TWI C-Code nicht zum laufen.
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.