Fagos wrote:Sto utilizzando un ATmega16 e a quanto pare cè la i2c integrata che è possibile gestire in modalità hardware.
Mi potresti dire come la devo interfacciare e un pò di codice per leggere i dati da essa.
Se utilizzi il bascom sarebbe cosa molto gradita, visto che ho iniziato a lavorare con questo sistema di sviluppo.
Ti ringrazio
ciao
Caro Fagos, ti allego un listato che ho usato per leggere i dati da una bussola magnetica CMPS03.
Qui il micro era un ATmega256, ma chiaramente puoi facilmente adattarlo per l'ATmega16 (vedi il PDF)
- Code: Select all
$regfile = "m2561def.dat"
$crystal = 14745600
$baud = 115200 'seriale robot -> PC
$baud1 = 115200 'seriale robot -> Sonar Board
$hwstack = 128
$swstack = 128
$framesize = 128
$projecttime = 10
$timeout = 1000000
'-------------------------------------------------------------------------------
Declare Function Bussola() As Word
Open "com2:" For Binary As #1
Dim Gradi_1 As Byte
Dim Gradi_2 As Byte
Dim Gradi As Single
Dim Gradi_old As Single
Dim Gradi_w As Word
Config Sda = Portd.1
Config Scl = Portd.0
'-------------------------------------------------------------------------------
Do
Gradi_w = Bussola()
Print #1 , Gradi_w
Loop
End
'-------------------------------------------------------------------------------
Function Bussola() As Word
I2csend &HC0 , 2
I2cstart
I2cwbyte &HC1
I2crbyte Gradi_1 , Ack
I2crbyte Gradi_2 , Nack
I2cstop
Gradi = Gradi_1 * 256
Gradi = Gradi + Gradi_2
Gradi = Gradi / 10
Gradi = Round(gradi)
Bussola = Gradi
End Function
'-------------------------------------------------------------------------------
ciao