From: Jan Michel Date: Mon, 30 Sep 2024 13:00:08 +0000 (+0200) Subject: simple temperature sensor read script X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=9c286eb3cde4401189faecc3490f2a14bb6e693b;p=hades_mdc_settings.git simple temperature sensor read script --- diff --git a/scripts/read_1wire_sensors.pl b/scripts/read_1wire_sensors.pl new file mode 100755 index 0000000..58c5b9f --- /dev/null +++ b/scripts/read_1wire_sensors.pl @@ -0,0 +1,82 @@ +#!/usr/bin/perl + +use Getopt::Long; +use HADES::TrbNet; +use Time::HiRes qw(usleep); +use Data::Dumper; + + +trb_init_ports() or die trb_strerror(); + + +i2c_cmd(0xfe90,0x30,0xd2,0xe1); +usleep(1000); + +i2c_cmd(0xfe90,0x30,,0xb4); +usleep(2000); + +i2c_cmd(0xfe90,0x30,0xa5,0xcc); +usleep(2000); +i2c_cmd(0xfe90,0x30,0xa5,0x44); +usleep(2000); + +sleep(1); + +i2c_cmd(0xfe90,0x30,,0xb4); +usleep(2000); + +i2c_cmd(0xfe90,0x30,0xa5,0xcc); +usleep(2000); +i2c_cmd(0xfe90,0x30,0xa5,0xbe); +usleep(2000); + +i2c_cmd(0xfe90,0x30,0x96); +usleep(2000); +i2c_cmd(0xfe90,0x30,0xe1,0xe1); +usleep(2000); +my $ret1 = i2c_cmd(0xfe90,0x30,0xe1); + +i2c_cmd(0xfe90,0x30,0x96); +usleep(2000); +i2c_cmd(0xfe90,0x30,0xe1,0xe1); +usleep(2000); +my $ret2 = i2c_cmd(0xfe90,0x30,0xe1); + +foreach my $f (keys %$ret1) { + next if ($ret1->{$f} == 0xff && $ret2->{$f} == 0xff); + printf("%04x\t%2.1f\n",$f,($ret1->{$f}+($ret2->{$f} << 8))/2); + } + + + +sub i2c_cmd { + my ($fpga,$addr,$cmd,$byte1,$byte2) = @_; + my $reg_data = (($byte2||0) << 24) + (($byte1||0) << 16) + (($cmd||0) << 8) + 0x80 + ($addr >> 1); + my $reg_flag = 0; + my $word = (defined $byte2)?1:0; + + if(defined($cmd)) { + $reg_flag = $word? 0x001 : 0x000; + } + else { + $reg_flag = $word? 0x011 : 0x010; + } + + if(defined($byte1)) { + trb_register_write_mem($fpga,0xd681,0,[$reg_flag,$reg_data],2); + } + else { + $reg_flag |= 0x100; + trb_register_write_mem($fpga,0xd681,0,[$reg_flag,$reg_data],2); + usleep(1000); + $reg_return = trb_register_read($fpga,0xd684); + + my $ret; + foreach my $f (keys %$reg_return) { + $ret->{$f} = $reg_return->{$f}&($word?0xffff:0xff); + } + return $ret; + } + } + +