Több LM75 használata...
- gergobmwe30
- DrótVégénSzéndarab
- Hozzászólások: 19
- Csatlakozott: 2010. október 24. vasárnap, 6:00
Hello.
Elég alap dolgot kérdezek, de most ismerkedek avr-el. Adott 3 db LM75, amit I2C-n kellene vezérelni. TINY24 lenne a proc, termosztát-hőkapcsoló, 2*16os LCDvel. A progi már félig megy, jelenleg MEGA8on, csak a 3 LM75öt nem tudom megkülönböztetni. Azt hogy kell??
(gondolom A0A1A2 lábbal állítom be a címet, csak ezt nem tudom milyet, és azt hogy kell meghívni.... )
Bocsi, de még tényleg elég kezdő vagyok...
Előre is köszi a segítséget!
Üdv. Gergő
Elég alap dolgot kérdezek, de most ismerkedek avr-el. Adott 3 db LM75, amit I2C-n kellene vezérelni. TINY24 lenne a proc, termosztát-hőkapcsoló, 2*16os LCDvel. A progi már félig megy, jelenleg MEGA8on, csak a 3 LM75öt nem tudom megkülönböztetni. Azt hogy kell??
(gondolom A0A1A2 lábbal állítom be a címet, csak ezt nem tudom milyet, és azt hogy kell meghívni.... )
Bocsi, de még tényleg elég kezdő vagyok...
Előre is köszi a segítséget!
Üdv. Gergő
Bascom könyv -> I2C fejezetben az alapok....
Az A1/A2/A3 a cím, amin meg tudod a chipet szólítani....
http://avr.tavir.hu/modules.php?name=Co ... age&pid=17
Az A1/A2/A3 a cím, amin meg tudod a chipet szólítani....
http://avr.tavir.hu/modules.php?name=Co ... age&pid=17
- gergobmwe30
- DrótVégénSzéndarab
- Hozzászólások: 19
- Csatlakozott: 2010. október 24. vasárnap, 6:00
Aha, értem... Ezek alapján ezt dobtam össze:
LM75 adatlapon sokadik olvasásra megtaláltam a címet 1001 - A0A1A2
...
Const Lm75write = &H90
Const Lm75read = &H91
Const Lm75resolution = 0.0625
I2cstart
I2cwbyte 1001100
I2cwbyte Lm75read
I2crbyte Tempbytehi , Ack
I2crbyte Tempbytelo , Nack
I2cstop
I2cstart
I2cwbyte 1001000
I2cwbyte Lm75read
I2crbyte Tempbytehi2 , Ack
I2crbyte Tempbytelo2 , Nack
I2cstop
......
Sajnos nem akar menni....Tuti valamit rosszul írtam.
Tudnál segíteni, mit gondoltam rosszul?
LM75 adatlapon sokadik olvasásra megtaláltam a címet 1001 - A0A1A2
...
Const Lm75write = &H90
Const Lm75read = &H91
Const Lm75resolution = 0.0625
I2cstart
I2cwbyte 1001100
I2cwbyte Lm75read
I2crbyte Tempbytehi , Ack
I2crbyte Tempbytelo , Nack
I2cstop
I2cstart
I2cwbyte 1001000
I2cwbyte Lm75read
I2crbyte Tempbytehi2 , Ack
I2crbyte Tempbytelo2 , Nack
I2cstop
......
Sajnos nem akar menni....Tuti valamit rosszul írtam.
Tudnál segíteni, mit gondoltam rosszul?
Kód: Egész kijelölése
'********************************************************************
'* Program nev: Duino-Mini-all.bas *
'* Board : AVR-Duino MiniBoard v1 *
'* Fordito : BASCOM AVR, (V.1.11.9.1R) *
'* Datum : 2008-05-28 *
'* Honlap : http://avr.tavir.hu *
'* *
'* Irta : Cseh Róbert *
'* E-mail : csehrobert@tavir.hu *
'********************************************************************
'i2cdetect.bas
'--- Alapadatok ---
$crystal = 16000000 'Sebesseg
'$regfile = "M168def.dat" 'Chip
$regfile = "M328pdef.dat" 'Chip
$baud = 9600
$swstack = 128
$hwstack = 128
$framesize = 128
Dim Temp1b As Byte
Dim Temp2b As Byte
'configure the used port pin for I2C
Config I2cdelay = 10 ' default slow mode:5
Config Sda = Portc.4
Config Scl = Portc.5
Print "I2c-locator 1=no_device 0=device"
Print
Print " 0 2 4 6 8 A C E"
Print " 00 ";
For Temp1b = 0 To 254 Step 2
Temp2b = Temp1b Mod 16 ' addresses
If Temp2b = 0 And Temp1b > 0 Then
Print ' end of line?
Print " " ; Hex(temp1b) ; " ";
End If
I2cstart ' generate start
I2cwbyte Temp1b
Print " " ; Err ; " "; ' 1 no device, 0 device
I2cstop
Next Temp1b
Print
End
Megvan!
2x adod ki az olvasási címet!
Hibás/error!:
helyett!
OK:
2x adod ki az olvasási címet!
Hibás/error!:
Kód: Egész kijelölése
Const Lm75write = &H90
Const Lm75read = &H91
Const Lm75resolution = 0.0625
I2cstart
I2cwbyte 1001100
I2cwbyte Lm75read
I2crbyte Tempbytehi , Ack
I2crbyte Tempbytelo , Nack
I2cstop
I2cstart
I2cwbyte 1001000
I2cwbyte Lm75read
I2crbyte Tempbytehi2 , Ack
I2crbyte Tempbytelo2 , Nack
I2cstop
OK:
Kód: Egész kijelölése
Const Lm75write = &H90
Const Lm75read = &H91
Const Lm75resolution = 0.0625
I2cstart
I2cwbyte 1001100
' I2cwbyte Lm75read - ez nem kell! vagy ez, vagy az előző sor!
I2crbyte Tempbytehi , Ack
I2crbyte Tempbytelo , Nack
I2cstop
I2cstart
I2cwbyte 1001000
' I2cwbyte Lm75read - ez nem kell! vagy ez, vagy az előző sor!
I2crbyte Tempbytehi2 , Ack
I2crbyte Tempbytelo2 , Nack
I2cstop
- gergobmwe30
- DrótVégénSzéndarab
- Hozzászólások: 19
- Csatlakozott: 2010. október 24. vasárnap, 6:00
LM75 nem hőmérőnek kell, csak annyit kell megoldani, hogy egy cső hőmérsékletét mérje (sacc/kb már elég pontos), elektromos szelepet állítva.
Lényeg: bőven elég az 1-2 fokos pontosság. Mind1, hogy 40 vagy 43 fokos a víz, csak ne 80legyen.
Viszont a progi miníg nem megy... Egyik chipen minden A láb gnd, másikon A2 vcc.. Címeknek rendben kell lennie...
Van led, ami a do loop ciklusban világít, majd kialszik. de folyamatosan megy, mintha a progi megfagyna... Pedig az olvasáson kívül csak a 2-2 értéket íratom ki.....
Lényeg: bőven elég az 1-2 fokos pontosság. Mind1, hogy 40 vagy 43 fokos a víz, csak ne 80legyen.
Viszont a progi miníg nem megy... Egyik chipen minden A láb gnd, másikon A2 vcc.. Címeknek rendben kell lennie...
Van led, ami a do loop ciklusban világít, majd kialszik. de folyamatosan megy, mintha a progi megfagyna... Pedig az olvasáson kívül csak a 2-2 értéket íratom ki.....
- gergobmwe30
- DrótVégénSzéndarab
- Hozzászólások: 19
- Csatlakozott: 2010. október 24. vasárnap, 6:00
Kód: Egész kijelölése
$regfile = "m8def.dat"
$crystal = 8000000
Config Sda = Portd.4
Config Scl = Portd.3
Config I2cdelay = 100
Config Pind.0 = Output
Const Lm75write = &H90
Const Lm75read = &H91
Const Lm75resolution = 0.0625
Dim Tempbytelo As Byte
Dim Tempbytehi As Byte
Dim Tempbytelo1 As Byte
Dim Tempbytehi1 As Byte
Do
initlcd
Cursor Off
Set Portd.0
'reSet Portd.1
Cls
Wait 1
I2cinit
I2cstart
I2cwbyte 1001000
'I2cwbyte Lm75read ' - ez nem kell! vagy ez, vagy az előző sor!
I2crbyte Tempbytehi , Ack
I2crbyte Tempbytelo , Nack
I2cstop
I2cstart
I2cwbyte 1001100
' I2cwbyte Lm75read ' - ez nem kell! vagy ez, vagy az előző sor!
I2crbyte Tempbytehi1 , Ack
I2crbyte Tempbytelo1 , Nack
I2cstop
Lcd Tempbytehi
Locate 1 , 8
Lcd Tempbytelo
Lowerline
Lcd Tempbytehi1
Locate 2 , 8
Lcd Tempbytelo1
Wait 1
Loop
End
Az I2C detect at látja a chipet?
De MIT ÍR KI nálad?
Szerintem hibásan címzed a chipet...
Saját mintám, 1 db chipre:
(az LCD-t, chipet, sebességet, LM75 (TCN75) címet, sorosportot állítsd be...)
De MIT ÍR KI nálad?
Szerintem hibásan címzed a chipet...
Saját mintám, 1 db chipre:
(az LCD-t, chipet, sebességet, LM75 (TCN75) címet, sorosportot állítsd be...)
Kód: Egész kijelölése
$crystal = 16000000 'orajel
$regfile = "m168def.dat" 'chip
$baud = 9600 '0.16%
'lcd
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.7 , Db6 = Portb.0 , Db7 = Portb.1 , E = Portd.5 , Rs = Portd.4
'i2c
'configure the used port pin for I2C
Config I2cdelay = 10 ' default slow mode:5
Config Sda = Portc.4
Config Scl = Portc.5
Dim Tempmsb As Byte 'Egesz fok
Dim Templsb As Byte 'Tort fok
Const T75aw = &H90 'Irasi cim (1001.000x)
Const T75ar = &H91 'Olvasási cim (1001.000x)
I2cinit
Print "Start..."
Do
I2cstart
I2cwbyte T75aw
I2cwbyte &H00
I2cstop
I2cstart
I2cwbyte T75ar
I2crbyte Tempmsb , Ack
I2crbyte Templsb , Nack
I2cstop
If Templsb = 128 Then Templsb = 5 Else Templsb = 0
Locate 4 , 1
Print "OnBrd:" ; Tempmsb ; "," ; Templsb ; " "
Cls
Lcd "OnBrd:" ; Tempmsb ; "," ; Templsb ; ""
Wait 1
Loop
- gergobmwe30
- DrótVégénSzéndarab
- Hozzászólások: 19
- Csatlakozott: 2010. október 24. vasárnap, 6:00
I2C detectet nem tudom, hogy kell használni, és hogy mit kellene kiírnia.
Jelenleg a progi amit küldtem 4db "255"öt ír ki és villog..
1db chip nekem is megy, azzal semmi baj, de akkor nem címet írok, hanem
Ezzel megy tökéletesen.... Szerintem is a címzés nem jó... De adatlap azt írja:1001 és utána A2A1A0
Nem tudom már mi van vele... Elszomorít...
Jelenleg a progi amit küldtem 4db "255"öt ír ki és villog..
1db chip nekem is megy, azzal semmi baj, de akkor nem címet írok, hanem
Kód: Egész kijelölése
2cstart
Const Lm75write = &H90
Const Lm75read = &H91
Const Lm75resolution = 0.0625
I2cwbyte Lm75read
I2crbyte Tempbytehi , Ack
I2crbyte Tempbytelo , Nack
Nem tudom már mi van vele... Elszomorít...
- ampervadasz
- Bitmanipulátor
- Hozzászólások: 119
- Csatlakozott: 2008. január 19. szombat, 7:00
Kód: Egész kijelölése
Do
I2cstart
I2cwbyte 10010001
I2cwbyte &H00
I2cstop
I2cstart
I2cwbyte 10010000
I2crbyte Temp1msb , Ack 'Egész fok
I2crbyte Temp1lsb , Nack 'Félfok
I2cstop
I2cstart
I2cwbyte 10010011
I2cwbyte &H00
I2cstop
I2cstart
I2cwbyte 10010010
I2crbyte Temp2msb , Ack
I2crbyte Temp2lsb , Nack
I2cstop
I2cstart
I2cwbyte 10010101
I2cwbyte &H00
I2cstop
I2cstart
I2cwbyte 10010100
I2crbyte Temp3msb , Ack
I2crbyte Temp3lsb , Nack
I2cstop
I2cstart
I2cwbyte 10010111
I2cwbyte &H00
I2cstop
I2cstart
I2cwbyte 10010110
I2crbyte Temp4msb , Ack
I2crbyte Temp4lsb , Nack
I2cstop
Locate 1,1 : Lcd Temp1msb;",";Temp1lsb
Locate 1,6 : Lcd Temp2msb;",";Temp2lsb
Locate 2,1 : Lcd Temp3msb;",";Temp3lsb
Locate 2,6 : Lcd Temp4msb;",";Temp4lsb
Loop
Kód: Egész kijelölése
Dim A As Byte
Dim Lm75w As Byte
Dim Lm75r As Byte
Dim Tempa(4) As Byte
Dim Tempb(4) As Byte
Do
A=1
For A=1 To 4
Select Case A
Case 1:
Lm75w=&H90
Lm75r=&H91
Case 2:
Lm75w=&H92
Lm75r=&H93
Case 3:
Lm75w=&H94
Lm75r=&H95
Case 4:
Lm75w=&H96
Lm75r=&H97
End Select
I2cstart
I2cwbyte Lm75w
I2cwbyte &H00 'Regiszter: Hőmérséklet adatok
I2cstop
I2cstart
I2cwbyte Lm75r
I2crbyte Tempa(a) , Ack
I2crbyte Tempb(a) , Nack
I2cstop
Next
'LCD kiírás
Locate 1 , 1 : Lcd Tempa(1) ; "," ; Tempb(1)
Locate 1 , 6 : Lcd Tempa(2) ; "," ; Tempb(2)
Locate 2 , 1 : Lcd Tempa(3) ; "," ; Tempb(3)
Locate 2 , 6 : Lcd Tempa(4) ; "," ; Tempb(4)
Loop
End
A programod azért hibás, mert:
1, hibás eszközt címzel,
2, NEM mondod meg, hogy melyik regisztert akarod kiolvasni, hanem olvasol _valamit_.
3, Csak az első kiolvasásod jó, a többi nem (látatlanban)
Az I2Cdetect programot nem véletlen kérdem. Ezzel tudod meglesni, h melyik címen kommunikál chiped! (sorosporton át küdi vissza az eredményt)
1, hibás eszközt címzel,
2, NEM mondod meg, hogy melyik regisztert akarod kiolvasni, hanem olvasol _valamit_.
3, Csak az első kiolvasásod jó, a többi nem (látatlanban)
Az I2Cdetect programot nem véletlen kérdem. Ezzel tudod meglesni, h melyik címen kommunikál chiped! (sorosporton át küdi vissza az eredményt)
- gergobmwe30
- DrótVégénSzéndarab
- Hozzászólások: 19
- Csatlakozott: 2010. október 24. vasárnap, 6:00
Aha, akkor ez nem annyira egyszerű mint ahogy elképzeltem...
Tuti valami nem stimmel a címzéssel, mert a két programot kipróbálva sem jutottam eredményre... Tünet ugyanaz: 1. prog nem olvas semmit, második csak azt, aminél a0a1a2 0-n van, azt amin a2-t 1re állítom nem olvassa...
Ja, és magában mind a 2 lm75 müxik...
próbálkozok még, hátha sikerül valami....
Tuti valami nem stimmel a címzéssel, mert a két programot kipróbálva sem jutottam eredményre... Tünet ugyanaz: 1. prog nem olvas semmit, második csak azt, aminél a0a1a2 0-n van, azt amin a2-t 1re állítom nem olvassa...
Ja, és magában mind a 2 lm75 müxik...
próbálkozok még, hátha sikerül valami....