Advertisement
Guest User

Untitled

a guest
Jan 26th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ada 1.06 KB | None | 0 0
  1. package body Circle with SPARK_Mode => On Is
  2.    procedure Burn_Circle(Radius : Unsigned_8; DAC : in out DAC_T) is
  3.       Y : Unsigned_8;
  4.    begin
  5.       DAC.Channels(Beam_Channel).Voltage := Voltage_T'Last;
  6.       High_Half:for X in X0 - Radius .. X0 + Radius loop
  7.          Y := Compute_Y(X, Radius);
  8.          --Y1 := 2*Radius - Y;
  9.          DAC.Channels(X_Channel).Voltage := Voltage_T(X);
  10.          DAC.Channels(Y_Channel).Voltage := Voltage_T(Y);
  11.          Set_Voltages(DAC);
  12.       end loop High_Half;
  13.  
  14.       Low_Half:for X in X0 - Radius .. X0 + Radius loop
  15.          Y := Compute_Y(X, Radius);
  16.          Y := 2*Radius - Y;
  17.          DAC.Channels(X_Channel).Voltage := Voltage_T(X);
  18.          DAC.Channels(Y_Channel).Voltage := Voltage_T(Y);
  19.          Set_Voltages(DAC);
  20.       end loop Low_Half;
  21.       DAC.Channels(Beam_Channel).Voltage := 0;
  22.       Set_Voltages(DAC);
  23.    end Burn_Circle;
  24.  
  25.    function Compute_Y(X, Radius : Unsigned_8) return Unsigned_8 is
  26.    begin
  27.       return Sqrt_Lut.Sqrt(Radius * Radius - (X-X0) * (X-X0)) + Y0;
  28.    end Compute_Y;
  29. end Circle;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement