i2c

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
winnerbt
Chipfüstölő
Hozzászólások: 844
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

HozzászólásSzerző: winnerbt » 2011. február 27. vasárnap, 19:11

Az nem lenne egyszerűbb, hogy ugyan olyan slave-address-el bekapni a buszról az adatokat? Keresésnél gondolom pörög az infófolyam, tehát
nem biztos, hogy le tudod olvasni. (bár nem tudom, milyen a cucc...)
De ha ilyen sokszor van egyébbként szabadon a busz, szerintem működhet.

Avatar
nobody_hun
Bitfaragó
Hozzászólások: 425
Csatlakozott: 2005. november 14. hétfő, 7:00

HozzászólásSzerző: nobody_hun » 2011. február 27. vasárnap, 19:36

A slave elkapása azért nem jó, mert ha ugyanazon a címen van, akkor az AVR is generál ACK-ot.
Na még vajúdok...
"Az IC-k füsttel működnek. Ha kijön belőlük a füst, nem működnek tovább." - ismeretlen szerző
"Az ID:FFFFFF egyenlő az Atmel még nem kiadott processzorával."

Avatar
tetye
Chipgyilok
Hozzászólások: 279
Csatlakozott: 2007. augusztus 29. szerda, 6:00
Tartózkodási hely: Perbál
Kapcsolat:

HozzászólásSzerző: tetye » 2011. június 5. vasárnap, 10:58

Sziasztok!
Lenne egy olyan kérdésem hogy ha egy atmega32-n portb.0 és portb.1 re programozom az i2c-t, és még nincs a buszon az eszköz (mcp portbővítő) , nem olvasom a portot ,csak inicializálom és írom, okozhat e olyat hogy kifagy a proci egy időre 1-2 perc talán aztán fut a progi tovább? A main az ami eléggé későn indul el, a bla bla rész...
Lehet ezt lekezelni valahogy egyszerűen ? pl ha nem talál eszközt, egy byte típusú változót átír egyre és akkor nem próbálkozik az i2c vel?

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

Config Sda = Portb.0
Config Scl = Portb.1
Config I2cdelay = 10
I2cinit
Declare Sub I2cportkiir
Dim Hova As String * 1
Dim I2c_a As Byte
Dim I2c_b As Byte
Dim Io0 As Byte
Dim Io1 As Byte
Dim Io2 As Byte
Dim Io3 As Byte
Dim Io4 As Byte
Dim Io5 As Byte
Dim Io6 As Byte
Dim Io7 As Byte
Const Iocon = &B00001100
Const Iodirki = 0
Const I2c_address_r = &B01000001
Const I2c_address_w = &B01000000
I2cinit
I2cstart
I2cwbyte I2c_address_w
I2cwbyte &HA
I2cwbyte Iocon
I2cstop
Waitms 500
'PORT.A = OUTPUT
I2cstart
I2cwbyte I2c_address_w
I2cwbyte &H0                                                ' IODIRA = H0
I2cwbyte Iodirki
I2cstop
'PORT.B = OUTPUT
I2cstart
I2cwbyte I2c_address_w
I2cwbyte &H1                                                ' IODIRB = H1
I2cwbyte Iodirki
I2cstop
Io0 = 0
Io1 = 0
Io2 = 0
Io3 = 0
Io4 = 0
Io5 = 0
Io6 = 0
Io7 = 0

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

'MAIN___________________________________________________________________________
Hova = "c"
I2c_a = 0
I2c_b = 0
Call I2cportkiir
blabla



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

Sub I2cportkiir
Select Case Hova
   Case "a":
      I2cstart
      I2cwbyte I2c_address_w
      I2cwbyte &H14
      I2cwbyte I2c_a
      I2cstop
   Case "b":
      I2cstart
      I2cwbyte I2c_address_w
      I2cwbyte &H15
      I2cwbyte I2c_b
      I2cstop
   Case "c":
      I2cstart
      I2cwbyte I2c_address_w
      I2cwbyte &H14
      I2cwbyte I2c_a
      I2cstop
      Waitms 100
      I2cstart
      I2cwbyte I2c_address_w
      I2cwbyte &H15
      I2cwbyte I2c_b
      I2cstop
   End Select
End Sub


Köszi

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

HozzászólásSzerző: Robert » 2011. június 5. vasárnap, 11:09

A felhúzóellenállásod hiányzik a buszról....
Vagy rövidzár van benne...

Avatar
tetye
Chipgyilok
Hozzászólások: 279
Csatlakozott: 2007. augusztus 29. szerda, 6:00
Tartózkodási hely: Perbál
Kapcsolat:

HozzászólásSzerző: tetye » 2011. június 5. vasárnap, 11:19

Hát most hirtelen nem látom hogy mit csinál a port, még nem szedtem ki a nyákot, most hozom le a szerszámokat meg bővítőt, de ettől lehet hogy kis időre kifagy? Le lehet kezelni valahogy? vagy elég ha az ellenállásokat ráteszem?

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

HozzászólásSzerző: Robert » 2011. június 5. vasárnap, 11:28

Elég ha az ellenállás ott van rajta.... Mind a 2 :)

Avatar
monsun
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2012. március 7. szerda, 7:00
Tartózkodási hely: Balatonfűzfő

HozzászólásSzerző: monsun » 2012. május 1. kedd, 17:04

Segítséget kérek, elakadtam. Uno-val (Atmega 328) csináltam egy áramkört, ami kezel LCD-t, DS18B20-at és PCF8583-at. Minden működött, míg rátettem a programot egy Atmega8-ra. Ezen majdnem minden jó, kivéve az I2C kommunikációt az óra chippel. Változás az eredeti felálláshoz képest, hogy itt belső órajelet használok. Kísérletképpen ráakasztottam egy 4MHz-es kristályt, a jelenség ugyanaz. Mi lehet a gond?

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

HozzászólásSzerző: Robert » 2012. május 1. kedd, 17:21

Kód?
Bascom alatt?
HW vagy SW I2C?

Memóriahasználat? Mennyi marad szabadon?

Igaz M8 esetén újrafordítottad?

Avatar
monsun
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2012. március 7. szerda, 7:00
Tartózkodási hely: Balatonfűzfő

HozzászólásSzerző: monsun » 2012. május 2. szerda, 13:21

Bascom, a kódot innen vettem: http://avr.tavir.hu/modules.php?name=Fo ... 23&start=0
Igen, újrafordítottam, a teljes program 60%-ot foglal a memóriából.

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

HozzászólásSzerző: Robert » 2012. május 2. szerda, 15:26

Teljes kód?
Stack-ok hogy vannak? Méret? foglaltság?
Csak az óraIC van I2C-n?
Felhúzóellenállás alatt gyantamaradék?
4MHz külső kvarc? A $crystal átírva?
I2Cdelay növelésre mit csinál?
Az I2C felhúzó viselkedése (i2cdetect) -> ellenállás, GND-fele rövidzár? Felhúzók értéke?

Avatar
monsun
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2012. március 7. szerda, 7:00
Tartózkodási hely: Balatonfűzfő

HozzászólásSzerző: monsun » 2012. május 2. szerda, 19:57

Hát persze hogy figyelmetlen voltam! Rosszul címeztem az óra chipet. Program megír, kapcs. rajz megrajzol, dugdozós panelen kipróbál és gondolom itt hibáztam, a panelen módosíthattam a címzést nem a programban és a rajzot nem javítottam. A panelt viszont ez alapján terveztem, ez volt a bibi. Robinak köszönöm a telefonos segítséget :)

Samu
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2017. január 9. hétfő, 12:21
Kapcsolat:

Re: i2c

HozzászólásSzerző: Samu » 2017. január 9. hétfő, 12:37

Üdv Mindenkinek
Van i2c meghajtású LCD kijelzőm(nem szabvány Hitachi) aminek sem a címét sem az ott zajló adat forgalmat nem ismerem. Az eddig fel lelt leginkább arduino programok úgy vettem észre, csak az eszköz felderítését csinálják. Létezik-e olyan program akár arduinora akár windowsra ami képes az I2C adat forgalmat "lehallgatni", és logolni?
köszi
Samu

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

Re: i2c

HozzászólásSzerző: Robert » 2017. január 9. hétfő, 13:00

A legegyszerűbb:
http://shop.tavir.hu/product_info.php/p ... ator-p-112
Ezzel sokkal-sokkal tobb mindent láthatsz...

Protokollfigyelő alkalmazás létezett még LPT portra régen....
http://www.tavir.hu - a gazda :)


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

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