Arduino

Arduino в Смоленске

Увлечения и развлечения
Аватара пользователя
Aml
Сообщения: 16660
Зарегистрирован: 23 окт 2004, 00:10
Настоящее имя: Сергей Амелин
Откуда: Смоленск, Николаева
Благодарил (а): 1 раз
Поблагодарили: 52 раза

Re: Arduino

Сообщение Aml »

neutrino писал(а): Работе с их периферией, судя по всему.
Предполагаю, что разработать схему, развести и собрать плату, изучить язык и архитектуру контроллера - для новичка перебор. Увязнет и бросит, тем более - в одиночку и дома, без измерительных приборов. Вопрос в том, дойдет ли человек до уровня, при котором IDE из подспорья превратится в помеху. Это и будет признаком обучения )
В точку.
Виктор К.
Сообщения: 75
Зарегистрирован: 19 окт 2012, 15:27
Настоящее имя: Виктор
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение Виктор К. »

Есть некоторые простенькие программаторы в запасе(вторые экземпляры), если интересно кому, чтобы не ждать от китайцев, пишите в личку, отдам по цене закупки:
- USB ASP ATMEGA8 ATMEGA128 (120 р.)
- USB программатор флеш-памяти CH341A(250 р. с платой-адаптором SOP8/16 в DIP8)
- Usb SIM-карт ридер 3.579/6.00MHz (150 р.)
- USB - COM конвертор (USB 2.0 в RS232 преобразователь - 150 р.)
- USB программатор смарт-карт PC/SC USB CCID EMV ISO7816 типа SKU232089-30A30
- СОМ Phoenix Interface (или просто «феникс» - 800 р.)
Также панельки-переходники некоторые имеются, но только в единственных экземплярах:
- PLCC44-DIP40(200 р.)
- PLCC32-DIP32(200 р.)
- PLCC20-DIP20(250 р.)
- PLCC28-DIP24(250 р.)
- плата-адаптор SOP8 в DIP8 (50 р.)
Поправил по просьбам трудящихся. Конкретнее в ЛС пишем.
Последний раз редактировалось Виктор К. 16 май 2017, 21:19, всего редактировалось 7 раз.
Old Ranger
Сообщения: 9331
Зарегистрирован: 19 сен 2003, 09:25
Откуда: планета Хлябь
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Arduino

Сообщение Old Ranger »

Виктор К. писал(а):Есть некоторые простенькие программаторы в запасе(вторые экземпляры), если интересно кому, чтобы не ждать от китайцев, пишите в личку, отдам по цене закупки:
- USB ASP ATMEGA8 ATMEGA128
- Pl2303 USB в RS232 TTL
- USB конвертер CH340G PL2303
- USB программатор CH341A
Также панельки переходные некоторые имеются, но только в единственных экземплярах:
- PLCC44-DIP40
- PLCC32-DIP32
- PLCC20-DIP20
- PLCC28-DIP24
- SOP8-DIP8 150ml
- SOP16-DIP8 300ml
укажите цены, пожалуйста.
Виктор К.
Сообщения: 75
Зарегистрирован: 19 окт 2012, 15:27
Настоящее имя: Виктор
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение Виктор К. »

Исправил, цены смотрите выше.
leopold
Сообщения: 27069
Зарегистрирован: 10 мар 2010, 00:23
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение leopold »

shin писал(а):Считаю, что ардуино это по определению хрень для выкачивания денег без какого-либо дальнейшего практического применения.
Ну почему-же.
Для быстрого получения результата годится.
leopold
Сообщения: 27069
Зарегистрирован: 10 мар 2010, 00:23
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение leopold »

Aml писал(а):
neutrino писал(а): Вопрос в том, дойдет ли человек до уровня, при котором IDE из подспорья превратится в помеху. Это и будет признаком обучения )
В точку.
Полностью согласен.
Микроконтроллер, для того и микроконтроллер, что-бы использовать его ресурсы по максимуму.
Академик Иосиф
Сообщения: 23467
Зарегистрирован: 07 май 2008, 23:38
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение Академик Иосиф »

Объясните тупарезу, почему этот код не пашет? Что тут не так? Как только убираю цикл for, всё работает. А с ним в программа даже не переходит внутрь основного цикла. Можа я не умею отладчиком пользоваться или ещё что, мож я в си не шарю? :ne_vi_del: Не спрашивайте, почему я не воспользовался основным циклом. Я просто тупо не понимаю, почему не пашет. Никаких ошибок не выдаёт при компиляции. :ne_vi_del: :smu:sche_nie:

Код: Выделить всё

int void(main)
{
nastroikaportov(); 
while(1)
{
for (int i=0;i>=9;i++)
{
num(i); //вывод цыхверки на индикатор
_delay_ms(200);
}
}
}
Аватара пользователя
John Prick
Сообщения: 8835
Зарегистрирован: 12 янв 2006, 19:30
Благодарил (а): 373 раза
Поблагодарили: 273 раза
Контактная информация:

Re: Arduino

Сообщение John Prick »

Тут ошибка.

Код: Выделить всё

for (int i=0;i>=9;i++)
Условие выхода из цикла неправильное. Должно быть i <= 9.
Академик Иосиф
Сообщения: 23467
Зарегистрирован: 07 май 2008, 23:38
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение Академик Иосиф »

John Prick писал(а):Тут ошибка.

Код: Выделить всё

for (int i=0;i>=9;i++)
Условие выхода из цикла неправильное. Должно быть i <= 9.
и я над этим час вчера сидел? :facepalm: :facepalm: :facepalm:
видно не вкурил ещё сишный синтаксис, мне что-то думалось наоборот будет выполняться, пока не станет больше 9 :du_ma_et:
FreemanNow
Сообщения: 30077
Зарегистрирован: 02 окт 2006, 09:23
Настоящее имя: Виталий
Откуда: г.Смоленск
Благодарил (а): 0
Поблагодарили: 2 раза
Контактная информация:

Re: Arduino

Сообщение FreemanNow »

Академик Иосиф, можно подумать, что на других языках иначе..
Академик Иосиф
Сообщения: 23467
Зарегистрирован: 07 май 2008, 23:38
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение Академик Иосиф »

FreemanNow писал(а):Академик Иосиф, можно подумать, что на других языках иначе..
да не, дурак, согласен :facepalm:
Аватара пользователя
John Prick
Сообщения: 8835
Зарегистрирован: 12 янв 2006, 19:30
Благодарил (а): 373 раза
Поблагодарили: 273 раза
Контактная информация:

Re: Arduino

Сообщение John Prick »

А здесь компилятор не ругается?

Код: Выделить всё

int void(main)
Должно быть int main(void) или просто int main(). Т.е. функция называется main, возвращает целое число (int), а в параметрах не принимает ничего (void).
Академик Иосиф
Сообщения: 23467
Зарегистрирован: 07 май 2008, 23:38
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение Академик Иосиф »

John Prick, это я уже щас писал по памяти, не силён я в си пока. Дельфист я, на крайняк бейсик.
Аватара пользователя
takoy
Сообщения: 391
Зарегистрирован: 23 ноя 2007, 22:43
Благодарил (а): 0
Поблагодарили: 1 раз
Контактная информация:

Re: Arduino

Сообщение takoy »

Должно быть int main(void) или просто int main(). Т.е. функция называется main, возвращает целое число (int), а в параметрах не принимает ничего (void).
Должно быть void main(). В данном случае функция main - это основной цикл процессора, соответственно не может принимать никаких параметров (тупо не откуда), и возвращать значение тоже не может (опять таки - некуда).
Заправка картриджей, ремонт оргтехники. Ул. Кашена, 8а. Тел. 40-05-80 Тел/факс 32-96-35.
http://att2007.ru
Академик Иосиф
Сообщения: 23467
Зарегистрирован: 07 май 2008, 23:38
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение Академик Иосиф »

Появился иной вопрос. У меня в отладчике всё, как надо, а в протеусе не работает. Почему?
neutrino
Сообщения: 4424
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск
Благодарил (а): 13 раз
Поблагодарили: 81 раз
Контактная информация:

Re: Arduino

Сообщение neutrino »

Академик Иосиф писал(а):Появился иной вопрос. У меня в отладчике всё, как надо, а в протеусе не работает. Почему?
"Вычислительная машина делает не то, что вам хочется, а то, что вы ей прикажете" ))
Ты покажи, что именно не работает.
Аватара пользователя
John Prick
Сообщения: 8835
Зарегистрирован: 12 янв 2006, 19:30
Благодарил (а): 373 раза
Поблагодарили: 273 раза
Контактная информация:

Re: Arduino

Сообщение John Prick »

takoy писал(а):
Должно быть int main(void) или просто int main(). Т.е. функция называется main, возвращает целое число (int), а в параметрах не принимает ничего (void).
Должно быть void main(). В данном случае функция main - это основной цикл процессора, соответственно не может принимать никаких параметров (тупо не откуда), и возвращать значение тоже не может (опять таки - некуда).
Тут думать не надо. Для С есть вполне определённый стандарт языка, который гласит:
5.1.2.2.1 Program startup
1 The function called at program startup is named main. The implementation declares no
prototype for this function. It shall be defined with a return type of int and with no
parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names may be
used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent;10) or in some other implementation-defined manner.
<...>
10) Thus, int can be replaced by a typedef name defined as int, or the type of argv can be written as
char ** argv, and so on
Т.е. всё вполне однозначно: возвращает int, либо в некоторых реализациях псевдоним int'а. Другое дело, что многие компиляторы позволяют определять main в весьма вольных формах. Но это всё же не означает, что так надо поступать.
Аватара пользователя
takoy
Сообщения: 391
Зарегистрирован: 23 ноя 2007, 22:43
Благодарил (а): 0
Поблагодарили: 1 раз
Контактная информация:

Re: Arduino

Сообщение takoy »

Т.е. всё вполне однозначно: возвращает int, либо в некоторых реализациях псевдоним int'а. Другое дело, что многие компиляторы позволяют определять main в весьма вольных формах. Но это всё же не означает, что так надо поступать.
Это относится только к прикладному ПО, запускаемому под операционной системой. А полностью следовать стандартам здесь смысла нет - системный код по определению непереносим. Скажите мне ну куда вы будете возвращать тип int (да и любой другой) при работе на голом железе??? А компилятор скорее всего создаст локальную переменную типа int, что для мелких контроллеров вполне себе ощутимо. Вообще наиболее правильно в данном случае вот так (для AVR GCC):

Код: Выделить всё

void main(void) __attribute__((noreturn));
        
void main(void)
{
    //...
}
Заправка картриджей, ремонт оргтехники. Ул. Кашена, 8а. Тел. 40-05-80 Тел/факс 32-96-35.
http://att2007.ru
Аватара пользователя
John Prick
Сообщения: 8835
Зарегистрирован: 12 янв 2006, 19:30
Благодарил (а): 373 раза
Поблагодарили: 273 раза
Контактная информация:

Re: Arduino

Сообщение John Prick »

Это относится только к прикладному ПО, запускаемому под операционной системой.
Нет, это относится к языку Си. Совершенно не важно, на какой платформе будет запускаться программа. Стандартизация языка как раз для этого и сделана. Под каждую платформу свой компилятор, а язык один. В идеале вот просто совсем один и тот же, без каких-либо отклонений.
А полностью следовать стандартам здесь смысла нет - системный код по определению непереносим.
По какому такому определению? Системное ПО в огромном количестве пишется на Си и Си++, и именно в этих языках все нормы и правила призывают к написанию как можно более переносимого кода. А тут вдруг заявляется, что он не переносим...
Скажите мне ну куда вы будете возвращать тип int (да и любой другой) при работе на голом железе???
Что-то мне подсказывает, что программа для микроконтроллера вообще навечно зациклена и до возврата доходит в эпизодических случаях. Можно хоть слонов возвращать, хоть космические корабли. А потом, это сегодня некуда возвращать, а завтра ардуинка выпустит что-нить новенькое и уже будет куда. Будем все программы переписывать?
А компилятор скорее всего создаст локальную переменную типа int, что для мелких контроллеров вполне себе ощутимо.
Пути компиляторов неисповедимы. Но вообще философия Си и Си++ в максимальной эффективности. Если ваш компилятор создаёт какие-то ненужные переменные без крайней необходимости, то он как бы эту философию нарушает.

ПС. Что я хочу всем этим сказать? Писать нужно на стандартном языке, по возможности без отклонений. Есть ли в этом смысл, нет ли - это должно волновать в последнюю очередь.
Аватара пользователя
Dejmos
Сообщения: 6028
Зарегистрирован: 30 мар 2007, 15:35
Настоящее имя: Денис
Откуда: Singularity
Благодарил (а): 462 раза
Поблагодарили: 1316 раз
Контактная информация:

Re: Arduino

Сообщение Dejmos »

takoy писал(а): Это относится только к прикладному ПО, запускаемому под операционной системой. А полностью следовать стандартам здесь смысла нет - системный код по определению непереносим. Скажите мне ну куда вы будете возвращать тип int (да и любой другой) при работе на голом железе???
Ну стандартам желательно следовать всегда. А куда возвращать... да хоть в бутлоадер.
* Руссо программисто, облико аморале *
Академик Иосиф
Сообщения: 23467
Зарегистрирован: 07 май 2008, 23:38
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение Академик Иосиф »

neutrino писал(а):
Академик Иосиф писал(а):Появился иной вопрос. У меня в отладчике всё, как надо, а в протеусе не работает. Почему?
"Вычислительная машина делает не то, что вам хочется, а то, что вы ей прикажете" ))
Ты покажи, что именно не работает.
Попытаюсь объяснить.
В основном цикле у меня функция вывода на 7-сегментный индикатор. Настроен таймер, который вызывает прерывание по переполнению. В обработке прерывания идёт счёт количества этих переполнений, проще говоря, секундомер. Настроены соответственно порты на вывод всей этой бодяги на индикатор. В отладчике все биты на порту вывода выставляются правильно, всё работает. В протеусе же на выводах ничего не меняется, на индикаторе тупо светится 0, то есть начальное значение переменной.
neutrino
Сообщения: 4424
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск
Благодарил (а): 13 раз
Поблагодарили: 81 раз
Контактная информация:

Re: Arduino

Сообщение neutrino »

Академик Иосиф писал(а): Попытаюсь объяснить.
В основном цикле у меня функция вывода на 7-сегментный индикатор. Настроен таймер, который вызывает прерывание по переполнению. В обработке прерывания идёт счёт количества этих переполнений, проще говоря, секундомер. Настроены соответственно порты на вывод всей этой бодяги на индикатор. В отладчике все биты на порту вывода выставляются правильно, всё работает. В протеусе же на выводах ничего не меняется, на индикаторе тупо светится 0, то есть начальное значение переменной.
Таймеры в Протеусе работают не все. Это я чудом вспомнил, больше 10 лет назад уже было.
Попробуй для Протеуса вот такое решение, но только как пример! Не используй в реальных проектах. Не забывай, что int для AVR 16-битный, то есть 65535 - максимальное значение. И эта... когда просят показать, что не работает, показывай лучше код. Стесняться не надо, просто так быстрее найдем.

Код: Выделить всё

#define MAX_DLY_CNT 100 //fake timer initial value




void fake_tmr_isr(void)
{
/*
	Your timer interrupt service here
*/
}

int main(void)
{
	unsigned int dly_cnt = MAX_DLY_CNT;

	while(1)
	{
		if(!dly_cnt--)
		{
			dly_cnt = MAX_DLY_CNT;
			fake_tmr_isr();
		}	
	}

	return 0;
}

Академик Иосиф
Сообщения: 23467
Зарегистрирован: 07 май 2008, 23:38
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение Академик Иосиф »

neutrino, благодарю. Я бы показал код, но он дома.
neutrino
Сообщения: 4424
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск
Благодарил (а): 13 раз
Поблагодарили: 81 раз
Контактная информация:

Re: Arduino

Сообщение neutrino »

Академик Иосиф писал(а):neutrino, благодарю. Я бы показал код, но он дома.
Мы подождем.
Видишь - коллеги с красными от ярости глазами и рычанием рвут зубами программу из 3-х строчек? Здесь ни один баг не укроется )))
Аватара пользователя
Aml
Сообщения: 16660
Зарегистрирован: 23 окт 2004, 00:10
Настоящее имя: Сергей Амелин
Откуда: Смоленск, Николаева
Благодарил (а): 1 раз
Поблагодарили: 52 раза

Re: Arduino

Сообщение Aml »

neutrino писал(а): Работе с их периферией, судя по всему.
Предполагаю, что разработать схему, развести и собрать плату, изучить язык и архитектуру контроллера - для новичка перебор. Увязнет и бросит, тем более - в одиночку и дома, без измерительных приборов. Вопрос в том, дойдет ли человек до уровня, при котором IDE из подспорья превратится в помеху. Это и будет признаком обучения )
Жена сейчас собирается учить студентов программировать Arduino на ассемблере. :)
neutrino
Сообщения: 4424
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск
Благодарил (а): 13 раз
Поблагодарили: 81 раз
Контактная информация:

Re: Arduino

Сообщение neutrino »

Aml писал(а): Жена сейчас собирается учить студентов программировать Arduino на ассемблере. :)
Я настойчиво рекомендую для этих целей язык C.
Насилие и глумление над детьми, безусловно, правильная вещь, но помимо понимания принципа вычислений на процессоре, необходим навык функциональной декомпозиции задачи и знание стандартных приемов проектирования. Так они, придя на производство, будут лучше готовы к реальным задачам.
Ассемблер плох еще и тем, что совершенно не задерживается в головах, если на нем не писать постоянно.
Академик Иосиф
Сообщения: 23467
Зарегистрирован: 07 май 2008, 23:38
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение Академик Иосиф »

Пытаюсь победить графический дисплей.
Академик Иосиф
Сообщения: 23467
Зарегистрирован: 07 май 2008, 23:38
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение Академик Иосиф »

Нужно было всего лишь подобрать задержку :facepalm:
Академик Иосиф
Сообщения: 23467
Зарегистрирован: 07 май 2008, 23:38
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino

Сообщение Академик Иосиф »

Код: Выделить всё

unsigned char string1[] = "cъешь еще этих";
	unsigned char string2[] = "мягких французских";
	unsigned char string3[] = "булок, да выпей";
	unsigned char string4[] = "чаю! @#;%:?*()_+";
	unsigned char string5[] = "СЪЕШЬ ЕЩЕ ЭТИХ";
	unsigned char string6[] = "МЯГКИХ ФРАНЦУЗСКИХ";
	unsigned char string7[] = "БУЛОК, ДА ВЫПЕЙ";
	unsigned char string8[] = "ЧАЮ?[]{}\|/`~";
Икран.jpg
Ну что за нах? :-(
neutrino
Сообщения: 4424
Зарегистрирован: 09 июн 2009, 01:03
Откуда: Смоленск
Благодарил (а): 13 раз
Поблагодарили: 81 раз
Контактная информация:

Re: Arduino

Сообщение neutrino »

Академик Иосиф писал(а):
Ну что за нах? :-(
Выполняемый код покажи.
Ответить Пред. темаСлед. тема