Страница 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
Че то не скачивается :no:

Добавлено: 16 янв 2010, 15:54
ra59m
Посмотреть PIC на СИ примеры

http://www.pcports.ru/articles/pic3.php

Добавлено: 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
Дальше давай! А то назло на астме останусь! :ggg:

Добавлено: 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
... ну не знаю - тут вроде все как "по книжке" :)

... ведь не даром Д. Кнут называет программирование Искусством - фантазию надо развивать сразу, потому что потом будет слишком поздно :ggg: :ggg: :ggg:

PS - теперь даже страшно приводить вариант из одной строки :)

Добавлено: 22 янв 2010, 00:26
koolhatcker
Просто всему своё время:).