 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
robika Član

Pridružen-a: Pon 05 Apr 2004 20:55 Prispevkov: 281 Aktiv.: 1.19 Kraj: ajdovščina
|
Objavljeno: Pet Avg 12, 2005 3:34 pm Naslov sporočila: AVR -> microwire (eeprom 93C66) |
|
|
Nikjer ne najdem, da bi imel BASCOM-AVR vkljucene rutine za microwire komunikacijo s serijskim eepromom 93Cx6, kot ima to BASCOM-8051. Nekaj casa so se mi 93C66 valjali po predalckih, zdaj pa ko sem presedlal na AVR-je in sem jih imel namen uporabit, pa dozivim ta hladen tus. Nasel sem rutino v C-ju, ki pa ga ne obvladam, v asemblerju pa tudi nisem kasen macek. Ali lahko kdo naredi asemblersko rutino za vpis "X" na doloceno adreso po prilozenem programcku pisanem v BASCOM-8051. Sama microwire rutina se mi zdi veliko preprostejsa in krajsa kot I2C. Poleg tega pa se lahko vpisujes spremenljivke dolzine tipa word.
'-----------------------------------------------------------------
' MicroWire test file
' please read microwire specs for understanding microwire
'-----------------------------------------------------------------
'CS - chip select
'DIN - data in
'DOUT - data Out
'CLOCK- Clock
'AL - address lines
' 93C46 93C56 93C57 93C66
'----------------------------------------------------------------------------
' Data bits: 8 16 8 16 8 16 8 16
' AL : 7 6 9 8 8 7 9 8
'you could use the same pin for DIN and DOUT
'we use a 93C66 and send bytes not words so AL is 8
$crystal = 12000000
Config Microwire = Pin , Cs = P1.2 , Din = P3.5 , Dout = P3.1 , Clock = P3.4 , Al = 8
Config Lcdpin = Pin , Db4 = P1.4 , Db5 = P1.5 , Db6 = P1.6 , Db7 = P1.7 , E = P1.3 , Rs = P1.2
Config Lcd = 16 * 2 ' konfiguracija LCD display a
Cursor Off
'init pins
Mwinit
'dimension variable used
Dim Pom As Byte
Dim X As Word
Pom = P3 And &B00001101 'ako su sve tri tipke
If Pom = 0 Then 'pritisnute,
Mwwopcode &B10010000000 , 11 'resetiraj brojač
End If
Mwread X , &B110 , 0 , 2
Cls
Do
'enable write to eeprom
'send startbit, opcode (00) and 11 + address
'Mwwopcode opcode, numberOfBits
Mwwopcode &B10011000000 , 11
'the mwwopcode can send a command(opcode) to a device
'write value of X to address 0
'opcode is 01
'we write 1 byte
'Mwwrite var,opcode,address,numberOfBytes
Mwwrite X , &B101 , 0 , 2
Waitms 10
'read back
' mwread var,opcode,address,numberofbytes
Mwread X , &B110 , 0 , 2
Locate 1 , 1 : Lcd X ; " "
X = X + 10
If X = 0 Then
Cls
End If
'disable write
'send startbit, opcode (00) and 00 + address
Mwwopcode &B10000000000 , 11
Loop
End
Lp Robi |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 491 dni
Powered by phpBB © 2001, 2005 phpBB Group
|