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;
> 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?
Ok, werde das mal mit 10K versuchen.Oszi können wir organisieren. Danke :) @ Alex R: Was genau meinst Du?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.