Адские скетчи

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Поставил себе систему программирования для AVR на Ада. Просто "на попробовать".

Вот блинк (на "нане" вполне себе добротно мигает):

with AVR, AVR.MCU, AVR.WAIT, Interfaces;
use AVR, AVR.MCU, AVR.WAIT, Interfaces;

procedure Main is
	LED_BUILTIN: boolean renames PORTB_Bits(5);
	LEDCONF: boolean renames DDRB_Bits(5);
	OUTPUT: constant  boolean := True;
	DelayVal: Unsigned_16 := 500;
	
	procedure DelayMS is
		new Generic_Busy_Wait_Milliseconds(Crystal_hertz => 16_000_000);
		
begin
	LEDCONF := OUTPUT;	-- конфигурация пина
	loop
		LED_BUILTIN := High;
		DelayMS(DelayVal);
		LED_BUILTIN := Low;
		DelayMS(DelayVal);
	end loop;
end Main;

Занимает 190 байтов программной  памяти и 0 байтов памяти данных.

Есть библиотеки для OneWire, USART, SPI, I2C, RTC, далласов, LCD и ещё много. Не так много, как для С++, но в общем, тоже хватает. Поддерживаются прогмем и прочие фишки.

Кто-то пользовал? Или кому-то интересно?

BOOM
BOOM аватар
Онлайн
Зарегистрирован: 14.11.2018

Я только за новую движуху. Только нифига не понимаю в этом языке и зачем оно. Просто съэкономить ресурсы мк?

-NMi-
Offline
Зарегистрирован: 20.08.2018

Блеатт... Ощенянама пахож на древний турба-паскакалЪ        :)))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

BOOM пишет:

в этом языке и зачем оно. 

Ну, там много чего. Начнём с того, что язык создавался специально для разработки систем управления в реальном времени (бортовых, например) и сейчас в авионике активно используется.

А из языковых фишек - например, параноидальная типизация, защищённые типы, управление видимостью и т.п. Но это не про нас. Это начинает давать положительный эффект на проектах такого размера, который в восьмиразрядную АВР-ку просто не полезет. А в маленьких проектах это выглядит излишеством и неоправданным усложнением.

Вот зачем я его ставил - в этом языке есть родная (именно языковая) мультизадачность, причём очень неплохая. Я хотел попробовать запустить два блокирующих блинка параллельно и посмотреть как он выкрутится. Но тут облом. В опциях "из коробки" мультизадачность оказалась выключенной, а когда я включил, компилятор стал требовать какие-то доп. файлы, которых у него не оказалось. Не стал разбираться - не очень-то и хотелось. Час я на это потратил, а больше - жалко.

Green
Онлайн
Зарегистрирован: 01.10.2015

ЕвгенийП пишет:

А из языковых фишек - например, параноидальная типизация, защищённые типы, управление видимостью и т.п. Но это не про нас. Это начинает давать положительный эффект на проектах такого размера, который в восьмиразрядную АВР-ку просто не полезет...

Однако же во время 8-ми битных ОС вполне себе использовалось. Вон см. у нашего ретрограда http://arduino.ru/forum/proekty/arduino-nano-emulyator-kompyutera-pod-upravleniem-os-cpm#comment-278170

negavoid
Offline
Зарегистрирован: 09.07.2016

Ну и суровые у вас, конечно, субботние развлечения, я вот шкафы таскал, а кто-то ставил аду для avr :)))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

negavoid пишет:

я вот шкафы таскал, а кто-то ставил аду для avr :)))

Это чтобы откосить от "таскания шкафов". Типа я тут за компутером занят сильно и газон стричь не могу :)))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

BOOM пишет:

 не понимаю в этом языке и зачем оно. 

Обратите внимание на строку №5, например.

LED_BUILTIN: boolean renames PORTB_Bits(5);

Здесь бит 5 порта B назначается булевой переменной LED_BUILTIN. Теперь можно работать с этой переменной (пихать что-нибудь) и это будет работа с портом.

Разве не изящно?

SLKH
Offline
Зарегистрирован: 17.08.2015

"...из программы, написанной на языке Ада, сделать демона Linux. В первой части мы рассмотрим основы демонизации процесса."

 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Не так страшна демонизация процесса, как его зомбификация...

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

изыди сотона!