00001 <?php
00002 function fpga_read($addr) {
00003 $fpga = fopen('/dev/fpgaio', 'r');
00004 fseek ($fpga, $addr) ;
00005 $d = fread($fpga, 4);
00006 fclose($fpga);
00007 $regs=unpack('V*',$d);
00008 return $regs[1];
00009 }
00010 function fpga_write($addr,$data) {
00011 $fpga = fopen('/dev/fpgaio', 'w');
00012 fseek ($fpga, $addr) ;
00013 fwrite($fpga, chr($data & 0xff).chr(($data>>8) & 0xff).chr(($data>>16) & 0xff).chr(($data>>24) & 0xff));
00014 fclose($fpga);
00015 }
00016
00017 function sendi2c16($register_address,$d0=0) {
00018 $i2c = fopen('/dev/xi2c16', 'w');
00019 fseek ($i2c, 2*$register_address) ;
00020 fwrite($i2c, chr (floor($d0/256)).chr ($d0-256*floor($d0/256)));
00021 fclose($i2c);
00022 }
00023
00024 function i2cread16 ($start,$length=256) {
00025 $i2c = fopen('/dev/xi2c16', 'r');
00026 fseek ($i2c, 2*$start) ;
00027 $data = fread($i2c, 2*$length);
00028 fclose($i2c);
00029 $regs=unpack('n*',$data);
00030
00031 echo "<table>\n";
00032 for ($i=0; $i<$length; $i+=16){
00033 printf("<tr><td>%x</td>",$i);
00034 for ($j=1; $j<17; $j++){
00035 printf("<td>%x</td>",$regs[$i+$j]);
00036 }
00037 echo "</tr>\n";
00038 }
00039 echo "</table>\n";
00040 }
00041
00042 $trigger=$_GET['trigger'];
00043 $delay=$_GET['delay'];
00044 $exit=$_GET['exit'];
00045
00046 if ($exit) {
00047 $cmdfile=fopen('/dev/sensorpars', 'r');
00048 fseek ($cmdfile,0x0d, SEEK_END) ;
00049 fclose($cmdfile);
00050
00051 exec ("fpcf -c c 1");
00052 sendi2c16(0x4806,0x400);
00053
00054 sendi2c16(0x481e,0x4006);
00055
00056 exit (0);
00057 }
00058
00059
00060 if ($trigger && is_numeric ($trigger)) $trigger=$trigger+0;
00061 else $trigger=0xb00000;
00062
00063 if ($delay && is_numeric ($delay)) $delay=$delay+0;
00064 else $delay=0;
00065
00066
00067
00068 fpga_write(0x7b, 0x1);
00069
00070
00071 $trigger_delay=$delay;
00072 fpga_write(0x78, $trigger);
00073
00074 fpga_write(0x79, $trigger_delay);
00075
00076 exec ("fpcf -c c 2");
00077
00078
00079 sendi2c16(0x4806,0x19);
00080
00081 sendi2c16(0x481e,0x4106);
00082
00083 sleep (1);
00084
00085 $cmdfile=fopen('/dev/sensorpars', 'r');
00086 fseek ($cmdfile,0x0a, SEEK_END) ;
00087 fclose($cmdfile);
00088
00089 ?>