Pull to refresh

Comments 17

Спасибо за статью!
На вин8 не было проблем с портом? Я никак не могу прошить arduino pro mini вкупе с usb-serial адаптером PL-23023HX. Драйвера вроде встали, но порт постоянно «занят» и никто из прошивальщиков не может получить к порту доступ. Может сталкивались с такой проблемой?
Попробуйте более старый драйвер, возможно у вас проблема с китайским PL-2303.
Я пользуюсь фирменным Atmel программатором. По этому все работает как часы. Если будет время, куплю какой нибудь другой программатор, поиграюсь с ним и отпишусь.
Спешу отписаться, что я таки осилил эту проблему )
драйвер для USB-Serial адаптера PL-23023HX, там же в архиве дока по установке, потому что сам он не становится. Ну и плюс ошибка новичка — не знал что кнопку Reset на ардуине нужно именно держать.
Зачем калечить ардуину? Только из за экономии кода? Вы этим самым лишаетесь всех ардуиновских «плюшек».
Хотите чистого С на AVR — можно плату под 328ю мегу сделать за час… и кодить ее.

В дополнение статьи описали бы как потом наигравшись восстановить все обратно. Ну я про залить бутлоадер и выставить фьюзы под ардуину.
На ардуинах обычно есть резистор и светодиод для мигания.
Кстати, да. На 13-м пине ардуины (19 пин атмеги), PB5. Только на схеме я его почему-то не нахожу. Легендарный скетч Blink как раз его задействует.
Все верно. У Arduino есть светодиод. Для работы с ним нужно использовать регистр PORTB. Ниже пример.

#include <avr/io.h>
#define F_CPU 16000000UL //16MHz
#include <util/delay.h>
int main(void) {
	DDRB  |= 1<<5;
	PORTB &= ~1<<5;
	while(1) {
		PORTB |= 1<<5;
		_delay_ms(100);
		PORTB &= ~1<<5;
		_delay_ms(100);
	}
}


В статье я использовал внешний светодиод для наглядности. Хотел сделать фото подключения программатора и горящего светодиода. Но фотоаппарат не вовремя разрядился.
Можно поинтересоваться? А какова выгода? Сколько экономии по памяти, сколько по процессорному времени?
Память экономится довольно существенно. Я уже не помню сколько занимает программа, получаемая из Arduino IDE. В моем случае, на чистом C — Hello World уместился в 186 байт. На ASM можно добиться более хороших показателей.

По скорости точно сказать не могу. Думаю если вы будете использовать Visual Micro и чистый C (тут статья), без всяких программаторов, то результат будет тот же, но памяти будет занято чуть больше из за загрузчика Arduino.

Мой коллега в качестве эксперимента мигал светодиодом с помощью Intel Galileo на частоте 400Гц это на библиотеках Arduino, а после переписки на C получилось около 2МГц.
По памяти: Flash memory: 32 KB (ATmega328) of which 0.5 KB used by bootloader
По времени: небольшой таймаут при старте (не знаю, сколько).
Плюс уверенность, что на контроллере выполняются только те инструкции, которые написал, а не какой-то бутлоадер, например, после перезагрузки.
Плюс возможность использовать watchdog (не обязательно выпиливать загрузчик совсем, но заменить иногда нужно).

Пользуясь случаем: кто порекомендует avrdude-совместимый загрузчик для atmega328+ft232rl / arduino nano?
Сорри, непонятно объяснил. Не программатор, а бутлоадер. Программатор у меня китайский клон usbasp.
Прежде, чем затирать загрузчик, было бы полезно сохранить его (и фьюз-биты), чтобы можно было вернуть всё как было. Мне, например, не удалось заставить работать китайский клон с официальным загрузчиком.
Sign up to leave a comment.

Articles