projects:ukhas_glider_project:master
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
projects:ukhas_glider_project:master [2007/09/04 22:08] – created laurenceb | projects:ukhas_glider_project:master [2008/07/19 23:33] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | < | + | < |
$regfile = " | $regfile = " | ||
$crystal = 16000000 | $crystal = 16000000 | ||
$baud = 16000 | $baud = 16000 | ||
- | $hwstack = 64 | + | $hwstack = 32 |
$swstack = 64 | $swstack = 64 | ||
- | $framesize = 64 | + | $framesize = 96 |
- | Const Servogain = 10 | + | Open " |
- | Const Pterm = 1 | + | Open "comc.3: |
- | Const Iterm = 0.001 | + | Open "comd.2:4800,8,n,1" For Input As #3 'rx from pc |
- | Const Dterm = 0 | + | Open "comb.4: |
- | Const Kalmangpsweight = 1 | + | Config Adc = Single , Prescaler = Auto , Reference |
- | const kalmangyroweight=0.05 | + | Config Portd.7 = Output |
- | const propogation=0.98*(1-kalmangyroweight) | + | Config |
- | const servogain=-0.007*(1-kalmangyroweight) | + | Config |
- | Const Center | + | |
- | Baud = 125000 | + | |
- | Config Portd.4 = Output | + | |
- | Config | + | |
- | Config | + | |
Config Portb.1 = Output | Config Portb.1 = Output | ||
+ | Config Portd.2 = Input 'rx from pc | ||
+ | Config Portd.6 = Output | ||
Config Portd.3 = Input | Config Portd.3 = Input | ||
- | Config | + | Config |
- | Config Portd.7 = Input | + | Config Portd.4 = Input |
- | Config | + | Config |
- | Config Portc.4 = Input | + | Config Portc.0 = Input |
- | Config Portc.5 = Output | + | Config Portc.5 = Input |
- | Config Portc.2 = Output | + | Config Watchdog = 4096 |
- | Config Portc.3 = Output | + | 'Config Portc.4 = Output |
- | 'Config Spi = Soft , Din = Pinc.4 , Dout = Portc.5 , Ss = None , Clock = Portc.2 | + | 'Config Portc.3 = Input |
- | ' | + | Ledone Alias Portd.7 |
- | Config Timer1 | + | Ledtwo Alias Portb.0 |
- | Config Timer0 | + | Radiocts Alias Pind.3 |
- | Dim Rate As Integer | + | 'Cts Alias Portd.2 |
- | Dim Rateread | + | Groundcontrol Alias Pind.4 |
- | Dim T As String * 30 'rest | + | Statusled Alias Portd.6 |
- | Dim Contents(5) As String * 20 | + | Requestsecond Alias Portc.1 |
- | Dim S As Single , R As Single , Gpfloatone | + | Clearsecond Alias Pinc.2 |
- | Dim Gpbyteone As Byte , Pulses | + | Cutdownpinone Alias Portb.1 |
- | Dim U As Integer | + | Cutdownpintwo Alias Portb.2 |
- | Dim Gpwordone | + | Cutdownpinone |
- | Rateread | + | Cutdownpintwo |
- | Tempread | + | Baud = 4800 |
- | Readmelexis | + | Declare Sub Checkvoltage() |
- | Maskword | + | Declare Sub Cutdown(byval Channel As Byte , Byval Duration As Byte) |
- | Pcmsk2 | + | Declare Sub Radiocomms() |
- | Pcmsk0 | + | Echo Off |
- | Groundcontrol Alias Portd.4 | + | Start Adc |
- | Rts Alias Pind.3 | + | Dim Rate As Integer |
- | Cts Alias Portd.2 | + | Dim Temperature As Integer , Error As Byte , Heading As Single , Filteredrate As Single , Pulselenght As Word |
- | Servoone Alias Portd.5 | + | Dim Pulses |
- | Servotwo Alias Portb.1 | + | Dim S As String * 100 |
- | Pulsesdetect Alias Pind.6 | + | Dim T As String * 15 |
- | Inputone Alias Pinb.0 | + | Dim Printstring As String * 20 |
- | Inputtwo Alias Pind.7 | + | Dim K As Single |
- | Slave Alias Portc.3 | + | Dim Iterations |
- | Din Alias Pinc.4 | + | Dim Windxs(251) |
- | Dout Alias Portc.5 | + | Dim Windys(251) |
- | Clock Alias Portc.2 | + | Dim Target_es As Eram Single |
- | Slave = 1 | + | Dim Target_ns As Eram Single |
- | 'Declare Sub Ground() | + | Dim Lock As Bit |
- | Declare Sub Talktomelexis() | + | Dim Gpfloatone As Single |
- | Declare Sub Ascent() | + | Dim U As String * 100 |
- | On Pcint2 Edge | + | Dim B As String * 6 |
- | On Pcint0 Copy | + | Dim Contents(17) As String * 15 |
- | Set Pcifr.pcif2 | + | Dim Transfer |
- | Set Pcifr.pcif0 | + | Dim N As Byte |
- | Enable Pcint2 | + | Dim I As Byte |
- | Enable Pcint0 | + | Dim Statuscode |
- | + | Dim Heightupto | |
- | Servotwo | + | Dim Gpbyteone As Byte , Gpbytetwo |
- | Servoone | + | Dim Gpintegerone |
- | S = 0 | + | Dim Intcount |
- | Start Timer1 | + | Dim Store As Integer |
- | Start Timer0 | + | Dim Test As Integer |
- | Enable Interrupts | + | Dim L As Integer |
- | Wait 2 | + | Dim Arrayat As Integer |
+ | Dim Rudder | ||
+ | Dim Integral | ||
+ | Dim Derivative | ||
+ | Dim Target | ||
+ | Dim Target_e As Single | ||
+ | Dim Target_n As Single | ||
+ | Dim Offset As Single | ||
+ | Dim Windy_total As Single | ||
+ | Dim Windx_total As Single | ||
+ | Dim Wind_speed As Single | ||
+ | Dim Airspeed As Single | ||
+ | Dim X As Single | ||
+ | Dim Y As Single | ||
+ | Dim V As Single | ||
+ | Dim Wind_x As Single | ||
+ | Dim Wind_y As Single | ||
+ | Dim North As Single | ||
+ | Dim East As Single | ||
+ | Dim Store_east As Single | ||
+ | Dim Store_north As Single | ||
+ | Dim V_x As Single | ||
+ | Dim V_y As Single | ||
+ | Dim Minutes As String * 7 | ||
+ | Dim Degrees As String * 3 | ||
+ | Dim Command As String * 10 | ||
+ | Statuscode | ||
+ | Lock = 0 | ||
+ | Iterations | ||
+ | Timeelapsed | ||
+ | Wind_x | ||
+ | Wind_y | ||
+ | Landcount = 0 | ||
+ | Telcounter = 0 | ||
+ | Portd.3 = 1 | ||
+ | Waitms 100 | ||
+ | Gpintegerone = Getadc(5) | ||
+ | Gpfloatone = Gpintegerone | ||
+ | Gpintegerone = Getadc(0) | ||
+ | Gpfloatone = Gpfloatone / Gpintegerone | ||
+ | If Gpfloatone < 0.5 And Gpfloatone > 0.4 Then | ||
+ | Print " | ||
+ | Else | ||
+ | Print " | ||
+ | Start Watchdog | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Goto Cutdownlbl | ||
+ | Case 2: | ||
+ | Goto Descentloop | ||
+ | Case Else: | ||
+ | Goto Cutdownlbl | ||
+ | End Select | ||
+ | End If | ||
+ | Waitms 50 | ||
+ | Call Checkvoltage() | ||
+ | 'Call Cutdown(1 , 4) | ||
+ | Print "wind records:" | ||
+ | For Gpbyteone | ||
+ | Gpbytetwo | ||
+ | Print Gpbyteone ; "," | ||
+ | | ||
+ | Print Gpbytetwo | ||
+ | Next | ||
+ | Print Version() | ||
+ | Print "Demo flight: 4km/20 minute" | ||
+ | Print "Now check gps" | ||
Do | Do | ||
- | Incr Timeout | + | Input S |
- | If Timeout > 250 Then Timeout | + | B = Mid(s , 2 , 6) |
- | While Timer0 < 250 | + | |
- | | + | |
- | Reset Timer0 | + | |
- | | + | |
- | Incr Pulses | + | |
- | | + | If K <> 0 Then 'if nonzero altitude then we've got something |
- | Pulses | + | Goto Gotlock |
- | Groundcontrol = 0 | + | |
- | End If | + | |
- | If Pulses > 10 Then | + | |
- | | + | |
- | | + | |
- | End If | + | |
- | If Rts = 1 Then ' | + | |
- | Cts = 1 | + | |
- | Input T | + | |
- | Cts = 0 | + | |
- | | + | |
- | If Gpbyteone | + | |
- | T = Contents(2) | + | |
- | | + | |
- | Gpsheading = Val(t) | + | |
- | Gpfloatone = Gpsheading - Oldheading | + | |
- | If Gpfloatone < -180 Then | + | |
- | Gpfloatone = Gpfloatone + 360 | + | |
End If | End If | ||
- | If Gpfloatone > 180 Then | ||
- | | ||
- | End If | ||
- | Gpfloatone = Kalmangpsweight * Gpfloatone | ||
- | Heading = Heading + Gpfloatone | ||
End If | End If | ||
- | | + | Loop |
- | Timeout = 0 | + | Gotlock: |
- | T = Contents(3) | + | Print "Okay we have GPS" |
- | Targetheading = Val(t) | + | Print "check rc ground control, then" |
- | T = Contents(4) | + | Print "Enter target north and east" |
- | Servoenable | + | Input #3 , Target_n |
- | T = Contents(5) | + | Print Target_n |
- | Gpbyteone | + | Input #3 , Target_e |
- | | + | Print Target_e |
- | | + | Gpfloatone |
- | Else | + | If Target_n <> Gpfloatone Then Target_ns |
- | | + | Gpfloatone |
- | End If | + | If Target_e <> Gpfloatone Then Target_es = Target_e |
- | Waitus 250 | + | Portd.3 |
- | Print "#," ; Rate ; "," | + | Print " |
- | End If | + | Start Watchdog |
- | Call Talktomelexis() | + | Placemark = 1 ' |
- | Gpintegerone | + | Do |
- | Gpintegerone | + | Reset Watchdog |
- | Gpfloatone | + | Do |
- | Gpfloatone | + | Input U |
- | Realrate | + | B = Mid(u , 2 , 6) |
- | gpfloatone=gpfloatone*kalmangyroweight | + | Loop Until B = "$GPGGA" |
- | filteredrate=propogation*filteredrate | + | Do |
- | filteredrate=filteredrate+gpfloatone | + | Input S |
- | gpfloatone=servo*servogain | + | B = Mid(s , 2 , 6) |
- | filteredrate=filteredrate+gpfloatone | + | Loop Until B = "$GPRMC" |
- | gpfloatone=filteredrate/62.5 | + | I = Split(s , Contents(1) |
- | Heading | + | K = Val(contents(9)) |
- | If Heading | + | V = Val(contents(8)) |
- | Heading | + | K = Deg2rad(k) |
- | End If | + | Wind_x |
- | If Heading < 0 Then | + | Wind_x |
- | Heading | + | Wind_y |
- | End If | + | Wind_y |
- | Gpfloatone | + | Windx_total |
- | If Gpfloatone < -180 Then | + | Windy_total |
- | Gpfloatone = Gpfloatone + 360 | + | Incr L ' |
- | End If | + | Incr Timeelapsed |
- | If Gpfloatone | + | |
- | Gpfloatone = Gpfloatone - 360 | + | K = Val(contents(10)) |
- | End If | + | K = K / 100 |
- | Gpfloattwo | + | Arrayat |
- | Realrate | + | |
- | Integral = Integral + Heading | + | Incr Heightupto |
- | Gpfloatone = Integral * Iterm | + | Windx_total |
- | If Gpfloatone > 30 Then Integral | + | |
- | If Gpfloatone < -30 Then Integral = -30 / Iterm | + | |
- | Gpfloatone = Gpfloatone + Realrate | + | |
- | Gpfloatone = Gpfloatone + Gpfloattwo | + | Gpbyteone = Windy_total |
- | Gpfloatone = Servogain * Gpfloatone | + | |
- | If Gpfloatone | + | |
- | If Gpfloatone < -500 Then Gpfloatone = -500 | + | End If |
- | servo=gpfloatone | + | If Arrayat > 40 Then |
- | Gpintegerone | + | Print " |
- | Gpintegerone = Gpintegerone + Center | + | Goto Cutdownlbl |
- | Portd.5 = 1 | + | |
- | If Groundcontrol = 0 And Servoenable = 1 Then Pulseout , Portd , 5 , Gpintegerone | + | |
+ | Print "Time cutdown" | ||
+ | Goto Cutdownlbl | ||
+ | | ||
+ | Requestsecond | ||
+ | While Clearsecond | ||
+ | | ||
+ | Wend | ||
+ | Requestsecond | ||
+ | Waitus 50 | ||
+ | Printbin #1 , Statuscode | ||
+ | Waitus 150 ' | ||
+ | Inputbin #2 , Rate , Temperature , Error | ||
+ | Incr Telcounter | ||
+ | | ||
+ | | ||
+ | Call Radiocomms() | ||
+ | End If | ||
Loop | Loop | ||
- | Edge: | + | Cutdownlbl: |
- | If Groundcontrol = 1 Then Servotwo = Not Inputtwo | + | If L > 0 Then 'set a valid wind for cutdown altitude |
- | If Inputtwo | + | Wind_x |
- | Pulselenght | + | Wind_y |
End If | End If | ||
- | Timer1 | + | Call Cutdown(1 , 12) |
- | Return | + | Placemark = 2 ' |
+ | Descentloop: | ||
+ | Statuscode = 1 | ||
+ | Requestsecond = 1 | ||
+ | While Clearsecond | ||
+ | Waitus 10 'I did commented this out as we should give the slave a message 1 second before the first valid gps | ||
+ | Wend 'but that was a stupid idea as in the slave code, when if first enters the decent loop | ||
+ | Requestsecond = 0 ' | ||
+ | Waitus 50 ' | ||
+ | Printbin #1 , Statuscode | ||
- | Copy: | ||
- | If Groundcontrol = 1 Then Servoone = Not Inputone | ||
- | Return | ||
- | Sub Ascent() | ||
- | Integral = 0 'reset integral | ||
- | Waitus 250 | ||
- | Print "#," | ||
Do | Do | ||
- | Waitms 15 | + | Reset Watchdog |
- | Pulseout | + | ' |
- | Call Talktomelexis() | + | Do |
- | | + | Input U |
- | | + | B = Mid(u , 2 , 6) |
- | Input T | + | Loop Until B = " |
- | | + | Do |
- | | + | Input S |
- | | + | B = Mid(s , 2 , 6) |
- | | + | Loop Until B = " |
- | | + | I = Split(s , Contents(1) , "," |
- | | + | Degrees = Left(contents(4) , 2) |
- | For Gpbyteone | + | Minutes = Right(contents(4) , 7) |
- | Pulseout , Portd , 5 , 5500 | + | North = 0 |
- | Waitms 15 | + | North = Val(minutes) |
- | | + | North = North / 60 |
- | | + | K = 0 |
- | Pulseout | + | K = Val(degrees) |
- | Waitms 15 | + | North = K + North |
- | | + | |
+ | | ||
+ | East = 0 | ||
+ | East = Val(minutes) | ||
+ | East = East / 60 | ||
+ | K = 0 | ||
+ | K = Val(degrees) | ||
+ | East = K + East | ||
+ | If Contents(7) | ||
+ | East = -east | ||
+ | End If | ||
+ | East = Target_e - East | ||
+ | K = Deg2rad(north) | ||
+ | K = Cos(k) | ||
+ | East = East * K | ||
+ | North = Target_n - North | ||
+ | K = East / North | ||
+ | | ||
+ | | ||
+ | If North < 0 Then ' | ||
+ | Target = Target - 180 | ||
+ | End If | ||
+ | If Target < -180 Then | ||
+ | Target = Target + 360 ' | ||
+ | End If | ||
+ | K = 0 | ||
+ | K = Val(contents(9)) | ||
+ | V = 0 | ||
+ | V = Val(contents(8)) | ||
+ | If V < 0.5 Then 'off if we crashed | ||
+ | If V = 0 Then | ||
+ | V = 0.01 | ||
+ | End If | ||
+ | Statusled = 0 | ||
+ | | ||
+ | 'Incr Timeelapsed | ||
+ | Toggle Statusled | ||
+ | End If | ||
+ | K = Deg2rad(k) | ||
+ | X = Sin(k) | ||
+ | X = X * V | ||
+ | Y = Cos(k) | ||
+ | Y = Y * V | ||
+ | X = X - Wind_x | ||
+ | Y = Y - Wind_y | ||
+ | | ||
+ | K = Y * Y | ||
+ | | ||
+ | | ||
+ | If Y = 0 Then | ||
+ | X = 0 | ||
+ | Else | ||
+ | X = X / Y ' | ||
+ | End If | ||
+ | K = Atn(x) | ||
+ | K = Rad2deg(k) | ||
+ | If Y < 0 Then | ||
+ | K = K - 180 | ||
+ | End If ' | ||
+ | If K < -180 Then | ||
+ | K = K + 360 ' | ||
+ | End If | ||
+ | | ||
+ | K = K - Target | ||
+ | If K < -180 Then ' | ||
+ | K = K + 360 | ||
+ | End If | ||
+ | If K > 180 Then | ||
+ | K = K - 360 | ||
+ | End If | ||
+ | If K > 0 Then | ||
+ | Ledone = 0 ' | ||
+ | Ledtwo | ||
+ | Else | ||
+ | | ||
+ | Ledtwo | ||
+ | End If | ||
+ | ' | ||
+ | | ||
+ | | ||
+ | | ||
+ | If V < 0.5 And Altitude < 250 Then ' | ||
+ | | ||
+ | Else | ||
+ | | ||
+ | End If | ||
+ | If Landcount > 4 Then | ||
+ | | ||
+ | Incr Flashcount | ||
+ | If Flashcount > 9 Then | ||
+ | Cutdownpintwo | ||
+ | | ||
+ | Else | ||
+ | Cutdownpintwo = 0 'turn off landing lights | ||
+ | End If | ||
+ | | ||
+ | Else | ||
+ | | ||
+ | Cutdownpintwo = 1 ' | ||
+ | Rxenable = 1 ' | ||
+ | | ||
+ | Cutdownpintwo | ||
+ | Rxenable = 0 | ||
+ | End If | ||
+ | Flashcount = 0 | ||
+ | Servoenable = 1 ' | ||
+ | End If | ||
+ | | ||
+ | While Clearsecond = 0 | ||
+ | Waitus | ||
+ | Wend | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | K = K / 100 | ||
+ | | ||
+ | Incr Arrayat | ||
+ | | ||
+ | If Gpbyteone <> 255 Then Wind_x = Gpbyteone - 127 ' | ||
+ | | ||
+ | If Gpbyteone <> 255 Then Wind_y = Gpbyteone - 127 ' | ||
+ | Incr Telcounter | ||
+ | If Telcounter > 10 Then Call Checkvoltage() | ||
+ | If Radiocts = 1 Then ' | ||
+ | | ||
End If | End If | ||
Loop | Loop | ||
+ | |||
+ | Sub Checkvoltage() | ||
+ | S = " | ||
+ | Gpintegerone = Getadc(5) | ||
+ | Gpfloatone = Gpintegerone | ||
+ | Gpfloatone = Gpfloatone * 9.503 | ||
+ | Gpfloatone = Gpfloatone / 1000 | ||
+ | Printstring = Str(gpfloatone ) 'servo | ||
+ | S = S + Printstring | ||
+ | S = S + "," | ||
+ | Gpintegerone = Getadc(0) | ||
+ | Gpfloatone = Gpintegerone | ||
+ | Gpfloatone = Gpfloatone * 4.250 | ||
+ | Gpfloatone = Gpfloatone / 1000 | ||
+ | Printstring = Str(gpfloatone ) | ||
+ | S = S + Printstring | ||
+ | S = S + "," | ||
+ | Printstring = Str(pulselenght) | ||
+ | S = S + Printstring | ||
+ | S = S + "," | ||
+ | Printstring = Str(pulses) | ||
+ | S = S + Printstring | ||
+ | Print S | ||
+ | Print #4 , S | ||
+ | Telcounter = 0 | ||
End Sub | End Sub | ||
- | 'Sub Ground() | + | Sub Cutdown(byval Channel As Byte , Byval Duration As Byte) |
- | ' | + | Gpbyteone |
- | 'While Timer1 < 20000 And Pulselenght > 200 And Pulselenght | + | While Radiocts = 0 And Gpbyteone |
- | 'Servoone = Not Inputone | + | Waitms 500 |
- | ' | + | Reset Watchdog |
- | 'Wend | + | Incr Gpbyteone |
- | ' | + | Wend |
- | ' | + | Print " |
- | ' | + | If Channel = 1 Then Cutdownpinone |
- | 'End Sub | + | If Channel = 2 Then Cutdownpintwo |
+ | For Gpbyteone = 0 To Duration | ||
+ | Wait 1 | ||
+ | Reset Watchdog | ||
+ | Next | ||
+ | Cutdownpinone = 0 | ||
+ | Cutdownpintwo | ||
+ | End Sub | ||
- | + | Sub Radiocomms() | |
- | + | If Statuscode | |
- | Sub Talktomelexis() | + | |
- | Clock = 0 | + | Else |
- | Dout = 0 | + | |
- | Slave = 0 | + | End If |
- | Error = 0 | + | S = S + Contents(3) |
- | | + | S = S + Contents(4) |
- | For Gpbyteone = 7 To 0 Step -1 | + | S = S + Contents(5) |
- | | + | S = S + Contents(6) |
- | | + | S = S + Contents(10) |
- | | + | Printstring |
- | | + | Printstring |
- | | + | S = S + Printstring |
- | Next | + | Printstring |
- | For Gpbyteone | + | Printstring |
- | | + | S = S + Printstring |
- | Clock = 1 | + | Printstring |
- | | + | Printstring |
- | Clock = 0 | + | S = S + Printstring |
- | | + | Printstring |
- | | + | Printstring |
- | Slave = 1 | + | S = S + Printstring |
- | Waitus 300 | + | Printstring |
- | | + | Printstring |
- | For Gpbyteone = 7 To 0 Step -1 | + | S = S + Printstring |
- | Dout = Readmelexis.gpbyteone | + | Printstring |
- | | + | Printstring |
- | Clock = 1 | + | S = S + Printstring |
- | | + | Printstring |
- | Clock = 0 | + | Printstring |
- | Next | + | S = S + Printstring |
- | For Gpbyteone | + | |
- | | + | S = S + " |
- | Clock = 1 | + | Printstring |
- | | + | S = S + Printstring |
- | | + | Print S |
- | Clock = 0 | + | Print #4 , S |
- | Next | + | |
- | For Gpbyteone | + | |
- | | + | |
- | Clock = 1 | + | |
- | | + | |
- | | + | |
- | Clock = 0 | + | |
- | | + | |
- | | + | |
- | Slave = 1 | + | |
- | Rate = Makeint(lsb , Msb) | + | |
- | Rate = Rate And Maskword | + | |
- | Shift Rate , Right , 1 | + | |
- | If Msb.6 = 1 Then Error = 1 | + | |
- | Slave = 0 | + | |
- | | + | |
- | For Gpbyteone = 7 To 0 Step -1 | + | |
- | Dout = Tempread.gpbyteone | + | |
- | | + | |
- | Clock = 1 | + | |
- | | + | |
- | Clock = 0 | + | |
- | Next | + | |
- | For Gpbyteone | + | |
- | Waitus 1 | + | |
- | Clock = 1 | + | |
- | Waitus 1 | + | |
- | Clock = 0 | + | |
- | | + | |
- | | + | |
- | Slave = 1 | + | |
- | | + | |
- | Slave = 0 | + | |
- | For Gpbyteone = 7 To 0 Step -1 | + | |
- | Dout = Readmelexis.gpbyteone | + | |
- | | + | |
- | Clock = 1 | + | |
- | | + | |
- | Clock = 0 | + | |
- | Next | + | |
- | | + | |
- | | + | |
- | Clock = 1 | + | |
- | | + | |
- | Waitus 1 | + | |
- | Clock = 0 | + | |
- | | + | |
- | For Gpbyteone = 7 To 0 Step -1 | + | |
- | Waitus 1 | + | |
- | Clock = 1 | + | |
- | Lsb.gpbyteone | + | |
- | Waitus 1 | + | |
- | Clock = 0 | + | |
- | | + | |
- | | + | |
- | Slave = 1 | + | |
- | | + | |
- | If Msb.6 = 1 Then Error = 1 | + | |
- | Temperature = Temperature And Maskword | + | |
- | Shift Temperature , Right , 1 | + | |
End Sub | End Sub | ||
</ | </ |
projects/ukhas_glider_project/master.1188943682.txt.gz · Last modified: 2008/07/19 23:32 (external edit)