Страница 1 из 2
Уроки на Си.
Добавлено: 12 сен 2009, 23:03
Dj_smart
Всем привет. Бродя по просторам интернета надыбал, по моему мнению, полезную веСч
. Это архив, причём здоровый, 12 метров. Но в нём всё то, что интересно именно станкостроителям. Это небольшой робот-тележка, и на основе этой игрушки даны примеры программирования меги-8, работы со всякими датчиками, и прочее. Причем начинается с установки VinAVR, AVR Studio, обьясняется как с ними работать. И очень неплохое, на мой взгляд, описание языка Си. Особенно понравилось создание и применение библиотек. Как в делфи, включай в программу и всё. И всё это счастье - по русски
.
Скачать файл "microcamp.rar"(12.1 мб)
Добавлено: 12 сен 2009, 23:12
koolhatcker
Тьху ты...
)
Добавлено: 15 янв 2010, 10:23
lobzik
Че то не скачивается
Добавлено: 16 янв 2010, 15:54
ra59m
Добавлено: 16 янв 2010, 16:22
Dj_smart
Есть книга "Программирование на языке C для AVR и PIC микроконтроллеров", могу залить. И есть диск к ней, там в книге есть его оглавление.
Добавлено: 16 янв 2010, 16:44
koolhatcker
Посмотреть PIC на СИ примеры
Гы. У меня практически слово в слово получилось:).
Добавлено: 16 янв 2010, 18:14
ra59m
Dj_smart
Залей пожалуйста!!!
Программирование на языке C для AVR и PIC микроконтроллеров.
Интересно.
Добавлено: 16 янв 2010, 18:35
Dj_smart
Вот тут
Скачать файл "prog_avr_pic.rar"(9.1 мб)
А по диску... Смотри оглавление в книге, и что интересует выложу.
Добавлено: 16 янв 2010, 22:31
koolhatcker
Выложил пока сюда:
http://it-en.ru/cnc/doc/1.html
Стиль изложения конечно же оставляет желать лучшего, но сразу всё нормально написать - времени столько нет. Поэтому смотрите, если увидите ошибки или что-то будет непонятно, то говорите и задавайте вопросы, буду исправлять.
Добавлено: 16 янв 2010, 23:41
Dj_smart
koolhatcker, а продолжение будет? Было бы здоровски:).
Добавлено: 16 янв 2010, 23:58
koolhatcker
Время покажет:).
Пока что никакого интереса не вижу. На ошибки не указывают, вопросов не задают...
Зачем же вхолостую разоряться?:)
Добавлено: 19 янв 2010, 21:58
Brazier
koolhatcker, как можно организовать на каком-нибудь выводе МК дискретный сигнал удержания?
Добавлено: 20 янв 2010, 08:01
life
Дальше давай! А то назло на астме останусь!
Добавлено: 20 янв 2010, 11:13
koolhatcker
как можно организовать на каком-нибудь выводе МК дискретный сигнал удержания?
Не понял вопроса. Там все сигналы дискретные - или есть или нет.
. О сигнале удержания чего идёт речь?.
Добавлено: 20 янв 2010, 13:38
BMB
Есть такая книга, можно скачать, можно купить. СД прилагается
Показать/Спрятать
Добавлено: 20 янв 2010, 18:35
Brazier
koolhatcker писал(а):
О сигнале удержания чего идёт речь?.
Речь о снижении тока в обмотках ШД.
Добавлено: 20 янв 2010, 22:02
ShCoder
koolhatcker писал: Выложил пока сюда:
http://it-en.ru/cnc/doc/1.html
... бог с ним со стилем изложения, который в целом очень даже ничего
, но вот приводить такой код в пример новичкам явно не стоит, а то еще возьмут это за основу ...
Не я писал - поэтому и править не мне, но хотя-бы isr(void){} переписать надо ....
Добавлено: 21 янв 2010, 05:26
koolhatcker
Речь о снижении тока в обмотках ШД.
Прежде чем его снижать, было бы неплохо для начала его задать...
Добавлено: 21 янв 2010, 05:42
koolhatcker
но вот приводить такой код в пример новичкам явно не стоит, а то еще возьмут это за основу ...
Имхо совсем новички вобще ничего не поймут. А у тех, кто понял, должны были бы возникнуть вопросы.
Именно этих вопросов я и жду. То есть при публикации всего этого дела я рассчитывал на диалог:). А просто выложить готовый код - неинтересно. Их и так на каждом углу есть...
isr(void){} переписать надо ....
А можно подробнее? Тут то что не понравилось? Как вызывается или то, что между фигурных скобок?:) Если первое, то непонятно. Если второе, то это всего лишь один из возможных вариантов реализации. Причём вроде как самый кривой. Кривее придумать не получилось
. Если делать правильно, то придётся объяснять устройство макроса, делающим возможным непосредственное обращение к биту в порту либо вставку на асме. И то и другое имхо выходит за рамки задуманного текста. Конечно есть и ещё один вариант, но он тоже за рамками:).
В общем наверное будет лучше не скакать туда-сюда, а начать с самого начала. Но тут опять же возникает вопрос - а нужно ли? Ведь документации, описывающей самые первые шаги - полно. Стоит ли повторяться? Помогите найти ту самую грань, до которой каждый может дойти самостоятельно, а после которой уже потребуются объяснения...
Добавлено: 21 янв 2010, 06:31
Brazier
koolhatcker, не нужно задавать ток ШД, нужен сигнал что ШД временно остановился.
Добавлено: 21 янв 2010, 08:06
life
Brazier писал(а):koolhatcker, не нужно задавать ток ШД, нужен сигнал что ШД временно остановился.
Опять не понятно, сигнал от шд? Или слежение микроконтроллером? Если второе, то необходимо отслеживать степ, и при отсутствии оных более определенного времени выдавать сигнал на удержание. Как это организовать програмно? Самое простое что приходит на ум, так это перезапускать степом таймер, при отсутствии степ таймер переполняется и по прерыванию уходим на удержание. Как то так...
Добавлено: 21 янв 2010, 11:23
koolhatcker
не нужно задавать ток ШД, нужен сигнал что ШД временно остановился.
Кому нужен и для чего?
перезапускать степом таймер
Вполне себе правильный вариант.
Добавлено: 21 янв 2010, 18:32
Brazier
так это перезапускать степом таймер, при отсутствии степ таймер переполняется и по прерыванию уходим на удержание
С этого момента пожалуйста подробней
Добавлено: 21 янв 2010, 20:25
koolhatcker
Подробнее уже некуда. Дальше начинается конкретный код под конкретный МК и компилятор. Начинайте уже думать самостоятельно:). Информации более чем достаточно:). Попробуйте сами сделать, а мы поправим если что не так.
Добавлено: 21 янв 2010, 21:20
ShCoder
koolhatcker - не понравилось то, что между {} , а именно как написан обработчик прерывания .... если целью было напихать побольше ненужных инструкций, то задача с успехом выполнена
... ну а если серьезно, то вопрос могут не вызывать только первые 3..4 строчки кода, а все остальное - один большой вопрос.... ну очень много лишнего кода.....
Добавлено: 21 янв 2010, 23:20
koolhatcker
если целью было напихать побольше ненужных инструкций
Нет:). Цель была указана в заголовке статьи.
ну очень много лишнего кода.....
С удовольствием посмотрю на ваш вариант.
Добавлено: 21 янв 2010, 23:38
ShCoder
... ок
if(INTF){
INTF = 0; // оставим как есть
if (PORTB & 2){ cur_step++;} // Если нужно крутить по часовой - увеличиваем указатель на элемент таблицы(массива)
else { cur_step--; } // ... иначе уменьшаем ...
cur_step&=3; // ... в таблице не более 4 значений, т.е. индекс от 0 до 3
.... итого 3 строчки вместо ......
можно разместить и в 2-х
(PORTB & 2) ? cur_step++ : cur_step-- ;
cur_step&=3;
... а подумав еще - и в одной
ххххххх; - которая сделает то-же самое (и возможно быстрей)
.... хотелось бы увидеть напишет ли кто эту строчку, если нет - ну тогда-уж выложу свой вариант .....
Добавлено: 21 янв 2010, 23:59
koolhatcker
.... итого 3 строчки вместо ......
можно разместить и в 2-х
(PORTB & 2) ? cur_step++ : cur_step-- ;
Ага, а потом объяснять что вся эта писанина означает?:) Цель была не в больше/меньше, а в том, чтобы читающий понял ВЕСЬ АЛГОРИТМ работы. Понимаете? В ваши 2 строчки новичок будет сутки пялиться и ничего не поймёт:).
Добавлено: 22 янв 2010, 00:16
ShCoder
Добавлено: 22 янв 2010, 00:26
koolhatcker
Просто всему своё время:).