Forum: Mikrocontroller und Digitale Elektronik Atmega über i2c


von Thomas H. (anarchie78)


Lesenswert?

Hallo,

vielleicht kann mir einer bei unserem  Projekt helfen?
Wir haben 2 Atmega328p für eine Klimaregelung mit Arduinos programmiert 
und wollen diese nun auf einer Platine betreiben.
Der 1. Atmega (Master) bearbeitet das Hauptprogramm ab und der 2.(Slave) 
soll Messwerte übermitteln. Leider funktioniert die I2C- Verbindung ohne 
den Arduino Boards nicht wie erwartet, also gar nicht..
Eigentlich nsind wir davon ausgegangen, dass eine entsprechende LIB 
alles übernimmt ( I2c anything.h)
Müssen vielleicht die FuseBits angepasst werden oder die Baud Raten 
angepasst werden?

Hier der Anfangscode vom Master:

#include <Adafruit_GFX.h>    // Grafik library für den Touchscreen
#include <Adafruit_ILI9341.h> // Hardware-specific library
#include <TouchScreen.h>    //  Touchscreen Library
#include <Time.h>  // Zeit Library
#include <DS1307RTC.h>  //RTC Library
#include <SPI.h>      // SPI Library
#include <EEPROM.h>  //EEProm Library
#include <Wire.h>    //I2C Library
#include <I2C_Anything.h>

Hier der Anfangscode vom Slave:

#include <Wire.h>      // I2C Library
#include <I2C_Anything.h>

#define T_Mess_1  A0  // Temperatur Messfühler 1
#define T_Mess_2  A1  // Temperatur Messfühler 2
#define rH_Mess_1  A2  // Feuchtefühler 1
#define rH_Mess_2  A3  // Feuchtefühler 2
#define Vcc 5.0  //Eingangsspannung
#define MY_ADDRESS 0x20
#define MASTER_ADDRESS 0x10
//const byte MY_ADDRESS = 0x20;
//const byte MASTER_ADDRESS = 0x10;

von Robert C. (anykey)


Lesenswert?

Sind die PullUp Widerstände an den I2C Leitungen?

Gruß Robert

von Thomas H. (anarchie78)


Lesenswert?

Wir haben 2x 500 Ohm Pull-Up Widerstände verwendet

von Stefan F. (Gast)


Lesenswert?

> 500 Ohm

Normalerweise nimmt man 4,7k Ohm oder 10k Ohm. Probier das mal.

Habt ihr einen Logic Analyzer oder ein digitales Oszilloskop, damit ihr 
euch mal die Signale an SDA und SCL anschauen könnt?

von Alex R. (itaxel)


Lesenswert?

Wie sieht es mit der seriellen Übertragung aus (TX/RX)?

von Thomas H. (anarchie78)


Lesenswert?

Ok, werde das mal mit 10K versuchen.Oszi können wir organisieren.
Danke :)


 @ Alex R:

Was genau  meinst Du?

von MWS (Gast)


Lesenswert?

Thomas H. schrieb:
> Leider funktioniert die I2C- Verbindung ohne
> den Arduino Boards nicht wie erwartet, also gar nicht..

Ein ATM328p läuft frisch aus der Schachtel mit 1MHz (RC 8MHz und CKDIV8 
Fuse gesetzt), ein Arduino mit Resonator dagegen mit 16MHz

> Eigentlich nsind wir davon ausgegangen, dass eine entsprechende LIB
> alles übernimmt ( I2c anything.h)

Eine Lib kann keine Fuses schreiben.

von Alex R. (itaxel)


Lesenswert?

Thomas H. schrieb:
> Was genau  meinst Du?

Die Kommunikation über TX/RX laufen lassen.
- Pin0 und Pin1 auf dem Arduino-Board
- Pin1 und Pin2 am Chip

In der ArduinoIDE ist das ganz einfach mit Serial.available, 
Serial.write, Serial.read zu lösen.

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
Noch kein Account? Hier anmelden.