resitelne = 1;				% pocatecni hodnota potrebna kvuli urceni resitelnosti s ohledem na vuli
S1 = floor(15/360*1048576);                 % ziskani hodnoty z resolveru S1
S3 = 45;                    % ziskani hodnoty z resolveru S3
prompt = 'Zadejte vuli ve stupnich vuci uhlu hlavni hridele Fi_1';
vule_bit = input(prompt);       % uzivatelsky input zmerene vule
vule = vule_bit*360/nbits3*256;   % odpovidajici vule na hrideli S1 ve stupnich
trans_ratio = 256;          % prevodni pomer mezi hlavni hrideli a hrideli S3
nbits1 = 1048576;           % pocet hodnot, kterych nabyva vystup S1
nbits3 = 4096;              % pocet hodnot, kterych nabyva vystup S3
if(vule>=180)
    resitelne = 0;
end;
n_turnhelp = (S3/nbits3*256);
n_turn = floor(S3/nbits3*256);          % odhad poctu otoceni bez uvazovani vule
bit_per_rev = floor(nbits3/trans_ratio);   % kolik bitu na S3 odpovida otoceni hlavni hridele o 360 stupnu
S1_deg = S1/nbits1*360;         % uhel na S1 prepocitan z bitu
S3_deg = S3/nbits3*360;         % uhel na S3 prepocitan z bitu
check1 = mod(S3,bit_per_rev);
% nasledujici funkce prihlizi k hodnote vule pro pripad velikosti vule
% dostatecne nizke pro resitelnost bez dalsich opatreni
if((mod(S3,bit_per_rev) <= vule_bit) & resitelne == 1)
    % pripad, kdy S3 spada do oblasti spodnich hdnot bitu z oblasti
    % odpovidajici hodnote n_turn, pricemz pasmo mozne vule zasahuje do
    % oblasti n_turn - 1
    if(S1_deg <= vule)
        % vule nezmenila hodnotu funkce n_turn
        n_turn = n_turn;
    elseif(S1_deg >= (360 - vule))
        % vule zvysila hodnotu funkce n_turn
        n_turn = n_turn - 1;
    else 
        % chyba, vule je pravdepodobne vyssi nez zadana hodnota
    end
elseif((mod(S3,bit_per_rev) >= (15 - vule_bit))  & resitelne == 1)
    % pracovni poznamka: 16- nebo 15- ?
    % pripad, kdy S3 spada do oblasti hornich hodnot bitu 
    % z oblasti odpovidajici hodnote n_turn, pricemz pasmo vule zasahuje do
    % oblasti n_turn + 1
        if(S1_deg >= (360-vule))
        % vule nezmenila hodnotu funkce n_turn
        n_turn = n_turn;
    elseif(S1_deg <= vule)
        % vule snizila hodnotu funkce n_turn
        n_turn = n_turn + 1;
    else 
        % chyba, vule je pravdepodobne vyssi nez zadana hodnota
        end
elseif(resitelne == 0)
    h = msgbox('Zadana vule je prilis vysoka', 'Chyba');    
end

% absolutni uhel tedy odpovida ve stupnich
abs_uhel = S1_deg + n_turn*360;