60 nap alatt Arduino #28 - I2C busz általában

A "60 nap alatt Arduino" tanfolyam házi feladatai és közvetlen témái
Avatar
Robert
Elektronbűvölő
Hozzászólások: 9993
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

60 nap alatt Arduino #28 - I2C busz általában

HozzászólásSzerző: Robert » 2012. augusztus 20. hétfő, 10:07

Az I2C protokoll alapalkalmazása, általános irányelvek.

Avatar
szegoj
SzínkódFestő
Hozzászólások: 92
Csatlakozott: 2010. február 4. csütörtök, 7:00
Tartózkodási hely: Budapest

HozzászólásSzerző: szegoj » 2012. augusztus 21. kedd, 13:55

A 28. leckében leírt I2C szkenner (első pillanatra) bonyolultnak tűnik.
Megkíséreltem annak alapján, de a 29. leckében ismertetett parancsok alkalmazásával egy egyszerűbb változatot írni.

Kód: Egész kijelölése

/*---------------------------------------------------------------- 
 Projekt:       AVR-DUINO/Shieldboard Ext1
 Fájlnév:       I2C_SCANNER.PDE
 ------------------------------------------------------------------
 */

#include <Wire.h>

int counter, data;


void setup() {
  // a ledpin kivezetést kimenetként konfigurálja
  pinMode(13, OUTPUT);
  // ledpin kivezetés magasba állítása (háttérvilágítás kikapcsolása)
  digitalWrite(13, LOW);
  // soros port inic
  Serial.begin(9600);
  Serial.println();   
  Serial.println();   
  Serial.println("I2CScanner ready!");
  Serial.println("starting scanning of I2C bus from 1 to 127");
  Serial.println("------------------------------------------");
  Serial.println();   
  Wire.begin();                     
}


void loop() {
  for (counter=1; counter<128; counter++) {
    Wire.requestFrom(counter,1);
    Serial.print("addr: ");
    if (counter<16) Serial.print("0");
    Serial.print(counter,HEX);
    if (Wire.available()) {
      Serial.print(" found!");
    }
    else {
      Serial.print("       ");
    }
    Serial.print( (counter%4) ? "\t":"\n");
    delay(1);
  }
  while(1) {
    digitalWrite(13,HIGH);
    delay(300);
    digitalWrite(13,LOW);
    delay(300);
  }
}


Remekül működik, az EXT1 panelen 3 I2C eszközt talált: 0x48, 0x50 és 0x51 címeken!
:D

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9993
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. augusztus 21. kedd, 14:00

Tetszik!
Tényleg jobb!

A címek is stimmelnek:)
EEPROM (0x50), Hőmérő (0x48(?) ) és az Óra (0x51)...

Avatar
macsek
Bitmanipulátor
Hozzászólások: 121
Csatlakozott: 2008. december 4. csütörtök, 7:00
Tartózkodási hely: Bp

HozzászólásSzerző: macsek » 2012. augusztus 21. kedd, 14:03

szegoj írta:A 28. leckében leírt I2C szkenner (első pillanatra) bonyolultnak tűnik.
Megkíséreltem annak alapján, de a 29. leckében ismertetett parancsok alkalmazásával egy egyszerűbb változatot írni.


Tök jó! És tényleg egyszerűbb + érthetőbb.

Avatar
szegoj
SzínkódFestő
Hozzászólások: 92
Csatlakozott: 2010. február 4. csütörtök, 7:00
Tartózkodási hely: Budapest

HozzászólásSzerző: szegoj » 2012. augusztus 21. kedd, 14:30

Robert írta:A címek is stimmelnek:)
EEPROM (0x50), Hőmérő (0x48(?) ) és az Óra (0x51)...


A hőmérő címe is jó, az EXT1 panel dokumentációja szerint a TC75/LM75 címe &H90, osztva 2-vel kapjuk a 0x48-at.
:D

Avatar
szegoj
SzínkódFestő
Hozzászólások: 92
Csatlakozott: 2010. február 4. csütörtök, 7:00
Tartózkodási hely: Budapest

HozzászólásSzerző: szegoj » 2012. augusztus 21. kedd, 17:18

És az I2C szkanner futtatásának eredménye:

Kép
A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu

Avatar
GPeti
Bitmanipulátor
Hozzászólások: 131
Csatlakozott: 2011. március 3. csütörtök, 7:00
Tartózkodási hely: Tápiószőlős

HozzászólásSzerző: GPeti » 2012. augusztus 29. szerda, 20:00

Gyakran előfordul hogy 5V on működő mikrokontrollert szeretnénk egy 3,3V-os I2C eszközt csatlakoztatni, ilyenkor nem árt shift level áramkört alkalmazni.

http://www.rcpilot.hu/users/1827/15882/ ... 449289.jpg

Avatar
GPeti
Bitmanipulátor
Hozzászólások: 131
Csatlakozott: 2011. március 3. csütörtök, 7:00
Tartózkodási hely: Tápiószőlős

HozzászólásSzerző: GPeti » 2012. augusztus 29. szerda, 20:03


Avatar
macsek
Bitmanipulátor
Hozzászólások: 121
Csatlakozott: 2008. december 4. csütörtök, 7:00
Tartózkodási hely: Bp

HozzászólásSzerző: macsek » 2012. augusztus 29. szerda, 20:46

GPeti írta:Gyakran előfordul hogy 5V on működő mikrokontrollert szeretnénk egy 3,3V-os I2C eszközt csatlakoztatni, ilyenkor nem árt shift level áramkört alkalmazni.


Máshoz lehet jó, I2C-hez nem kell, 5V-ra kell kötni a buszt.
ld. 1995-ös magyar Philips I2C leírás, 21. ábra.

ugyanitt 10.0:
A 1,5 és 3 voltos fix bemeneti jelszintű I2C eszközök mind rendelkezhetnek megfelelő saját tápfeszültséggel. A felhúzó ellenállásokat 5V+/-10%-os tápfeszültségre kell kötni

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9993
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. augusztus 29. szerda, 20:52

trükk: felhúzóellenállás ne 1k5 legyen:).
4k7 esetén már működik...

nagylevin
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2015. március 29. vasárnap, 16:20

Re: 60 nap alatt Arduino #28 - I2C busz általában

HozzászólásSzerző: nagylevin » 2015. április 26. vasárnap, 16:17

Most egy kicsit elakadtam, nem csak a szavam.
A tanfolyamos program már a fordítóban elakad, van benne egy rész amivel nem tud mit kezdeni :
..." Serial.print(" ");
}
Serial.print( (counter%4) ? "\t":"\n");
&n
bsp;
delay(1);
}
while(1) {"
Amennyiben ezt eltávolítom akkor lefordul, és feltölthető, de a 43-as cím után a futás megáll (lefagy) a szkennelésben. szegoj programja hasonlóan viselkedik, az is ugyanott áll meg.
Lehetséges , hogy szegény EXT1 shildem beteg? ( az arduino Uno-mon shild nélkül szépen végig megy a szken).

Van valakinek véleménye javaslata?

(Arduino Uno R3 Ext1 shild, Arduino 1.0.6 verzival próbáltam)

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9993
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: 60 nap alatt Arduino #28 - I2C busz általában

HozzászólásSzerző: Robert » 2015. április 26. vasárnap, 17:16

Kellene a teljes programkód, ill képernyőkép hogy hol akad el....

nagylevin
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2015. március 29. vasárnap, 16:20

Re: 60 nap alatt Arduino #28 - I2C busz általában

HozzászólásSzerző: nagylevin » 2015. április 26. vasárnap, 17:52

a kód :

Kód: Egész kijelölése

/*  I2Cscan EXT1
 I2CScanner minta
 60 nap alatt arduino tanfolyam
 (c) TavIR http://www.tavir.hu
 
 */

#include <Wire.h>

int counter, data;

void setup() {
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
  Serial.begin(9600);
  Serial.println();   
  Serial.println();   
  Serial.println("I2CScanner ready!");
  Serial.println();   
  Wire.begin();                     
}

void loop() {
  for (counter=1; counter<128; counter++) {
    Wire.requestFrom(counter,1);
    Serial.print("addr: ");
    if (counter<16) Serial.print("0");
    Serial.print(counter,HEX);
    if (Wire.available()) {
      Serial.print(" found!");
    }
    else {
      Serial.print("       ");
    }
    Serial.print( (counter%4) ? "\t":"\n");
// az alábbi 2 sor benne van a lecke programjában, kivettem.
 //  &n
//   bsp;

 delay(1);
  }
  while(1) {
    digitalWrite(13,HIGH);
    delay(300);
    digitalWrite(13,LOW);
    delay(300);
  }
}
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.

nagylevin
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2015. március 29. vasárnap, 16:20

Re: 60 nap alatt Arduino #28 - I2C busz általában

HozzászólásSzerző: nagylevin » 2015. április 26. vasárnap, 18:37

A lekérdezés megakadásának ellenére Macsek órás programja (32-es lecke) nagyon kedvesen működik, ír és olvas is.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9993
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: 60 nap alatt Arduino #28 - I2C busz általában

HozzászólásSzerző: Robert » 2015. április 28. kedd, 7:54

A cím eszköz nem válaszol vagy pedig hibás az eszköz.
Tipp: valamelyik felhúzó-ellenállás (SCL, SDA) elengedett, megnyúlt...


Vissza: “60 nap alatt Arduino - Házi feladatok”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég