⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mbc_sonar.m

📁 simulink real-time workshop for dragon12 development board from
💻 M
字号:
function [out_portstr, out_pinstr, in_portstr, in_pinstr] = mbc_sonar(out_port, out_pin, in_port, in_pin, sampletime)

% Check the sample time:
if((sampletime < 0) & (sampletime ~= -1))
   fprintf ('Digital input: Inadmissible sample time !\n');
end


% Check port number
port_strings = {'PORTA', 'PORTB', 'PTH', 'PTJ', 'PTM', 'PTP', 'PTS', 'PTT'};
ddr_strings = {'DDRA', 'DDRB', 'DDRH', 'DDRJ', 'DDRM', 'DDRP', 'DDRS', 'DDRT'};
out_portstr = port_strings{out_port};
in_portstr = port_strings{in_port};
out_ddrstr = ddr_strings{out_port};
in_ddrstr = ddr_strings{in_port};
%disp([portstr, ' - ', ddrstr])

out_pin = out_pin-1;
in_pin = in_pin-1;

% Check if all pin number are available on the chosen port
valid_pin = { [0 1 2 3 4 5 6 7]; ...
		      [0 1 2 3 4 5 6 7]; ...
		      [0 1 2 3 4 5 6 7]; ...
		      [0 1 6 7]; ...
		      [0 1 2 3 4 5 6 7]; ...
		      [0 1 2 3 4 5 6 7]; ...
		      [0 1 2 3 4 5 6 7]; ...
		      [0 1 2 3 4 5 6 7] };

% Check the pin number and set pinstr (display)
if(any(setdiff(out_pin, valid_pin{out_port})))
	out_pinstr = '???';
	fprintf ('Sonar: Inadmissible output pin number for %d.\n', out_pin);
else
	out_pinstr = num2str(out_pin);
end

if(any(setdiff(in_pin, valid_pin{in_port})))
	in_pinstr = '???';
	fprintf ('Sonar: Inadmissible input pin number for %d.\n', in_pin);
else
	in_pinstr = num2str(in_pin);
end

if(in_port==out_port)
    if(in_pin==out_pin)
        fprintf ('Sonar: Input pin and output pin clash.\n');
        out_pinstr = '???';
        in_pinstr = '???';
    end        
end

% assemble mask
out_pinmask = 2^out_pin;
in_pinmask = 2^in_pin;

% turn mask into string
out_pinmask = num2str(out_pinmask);
in_pinmask = num2str(in_pinmask);

% Create resource keywords to be reserved in resource database
modelRTWFields = struct( 'out_portStr', out_portstr, 'out_ddrStr', out_ddrstr, 'out_pinMask', out_pinmask, 'out_pinStr', out_pinstr, 'in_portStr', in_portstr, 'in_ddrStr', in_ddrstr, 'in_pinMask', in_pinmask, 'in_pinStr', in_pinstr ); 

% Insert modelRTWFields in the I/O block S-Function containing the Tag 'MC9S12DriverDataBlock'
MC9S12DriverDataBlock = find_system(gcb, 'FollowLinks', 'on', 'LookUnderMasks', 'all', 'Tag', 'MC9S12target');
set_param(MC9S12DriverDataBlock{1}, 'RTWdata', modelRTWFields);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -