Котуинко

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1392
Зарегистрирован: Чт авг 21, 2014 11:11:48
Откуда: краснодарский край

Сообщение главный колбасист »

Спойлер#include <avr/io.h>//Подключаем библиотеку ввода/вывода

#define nop() {asm("nop");}//подключаем функция для формирваония задержки

void right (void);//Прототип функции поворота ротора ШД вправо
void left (void);//Прототип поворота влево

int x, j, m=100; //переменные

//Функция задержки
void delay(int t)
{
for (x=0; x<t ;x++)
nop ();

}

//Функция длинной задержки
void long_delay(int p)
{
for (j=0; j<p; j++)
{
delay(300);
}
}

//Функция поворота ротора вправо
void right (void)
{
PORTD = 0b10001000;//обмотка A
long_delay(m);

PORTD = 0b01000100;//обмотка B
long_delay(m);

PORTD = 0b00100010;//обмотка C
long_delay(m);

PORTD = 0b00010001;//обмотка D
long_delay(m);
}

//Функция поворота ротора влево
void left(void)
{
PORTD = 0b00010001;
long_delay(m);

PORTD = 0b00100010;
long_delay(m);

PORTD = 0b01000100;
long_delay(m);

PORTD = 0b10001000;
long_delay(m);
}

//Главная функция
int main(void)
{
DDRD = 0xFF;//Конфигурирования порта на выход
PORTD = 0x00;//Отключаем подтягивающие резисторы порта

while(1)//вечный цикл
{
left();
.....//тут ставим столько раз функцию,
.....//чтобы ротор шагового двигателя
.....//провернулся на достаточный угол
left();

right();
.....//тут ставим столько раз функцию,
.....//чтобы ротор шагового двигателя
.....//провернулся на достаточный угол
right();
}
}

Раде эксперимента, советую попробовать поставить следующий код в самом конце программы:
m=m+1; //Добавить единицу к переменной
if(m==350)//Если переменная достигла значения 350
{m=1;}//установить переменную равную "1"

right();
///////////////////////////////////////////////
m=m+1; //Добавить единицу к переменной
if(m==350)//Если переменная достигла значения 350
{m=1;}//установить переменную равную "1"
///////////////////////////////////////////////
}
}
А вот программа(чужая) для ШД.
Работает в симуляторе,но в конце
там такие строчки
.....//тут ставим столько раз функцию,
.....//чтобы ротор шагового двигателя
.....//провернулся на достаточный угол
Тут это где ?
Сколько не сую в разные места всякую ерунду,
ничего не получается. Только ошибки появляются. :facepalm:
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15779
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Вставляем столько, сколько пожелаем right(); или соответственно left(); в отмеченных комментарием позициях исходника.
8)
Спойлер

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

while(1)//вечный цикл
{
left();
              //тут ставим столько раз функцию,
left();     //чтобы ротор шагового двигателя
              //провернулся на достаточный угол
left();

right();
              //тут ставим столько раз функцию,
right();   //чтобы ротор шагового двигателя
             //провернулся на достаточный угол
right();
}
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1392
Зарегистрирован: Чт авг 21, 2014 11:11:48
Откуда: краснодарский край

Сообщение главный колбасист »

получилось.
Контактная информация:
Открыл глаза
Сообщения: 60
Зарегистрирован: Вс ноя 13, 2022 14:58:17

Сообщение Bill_ »

[uquote="главный колбасист",url="/forum/viewtopic.php?p=4297745#p4297745"]https://skillbox-ru.turbopages.org/promo/media/skillbox/pochemu-luchshe-uchit-slojnyi-c-chem-prostye-pythonjava-62e92f8c22e16c1cfbc74097
Вот такая реклама свалилась мне. Чё правда что ли? :o :shock:
Насчет предложений на hh.[/uquote]
Хм... Я как-то задал одному специалисту по Си++: как компьютер в реальности сравнивает числа? Вразумительного ответа я не получил. Так что Си++ до "железа" как до луны. Не для начинающих он.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 15779
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Соответственно имеющимся в составе ядра микропроцессора ассемблерным командам и возможностям АЛУ.
Это на самом низшем уровне, а далее уже алгоритмы обработки, применяемые в соответствующем компиляторе /ЯВУ для работ с числами более разрядности АЛУ микропроцессора (но на основе вышеперечисленного).
Для Си/С++ это содержание соответствующих библиотек.
Ничего там сверхъестественного.
8)
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1452
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="BOB51",url="/forum/viewtopic.php?p=4324946#p4324946"]Для Си/С++ это содержание соответствующих библиотек.[/uquote]
А у него есть библиотеки? Или встроенные функции? Не считая main().)
Реклама
Открыл глаза
Сообщения: 60
Зарегистрирован: Вс ноя 13, 2022 14:58:17

Сообщение Bill_ »

[uquote="BOB51",url="/forum/viewtopic.php?p=4324946#p4324946"]Соответственно имеющимся в составе ядра микропроцессора ассемблерным командам и возможностям АЛУ.
Это на самом низшем уровне, а далее уже алгоритмы обработки, применяемые в соответствующем компиляторе /ЯВУ для работ с числами более разрядности АЛУ микропроцессора (но на основе вышеперечисленного).
Для Си/С++ это содержание соответствующих библиотек.
Ничего там сверхъестественного.
8)[/uquote]А конкретнее можно?
Друг Кота
Аватара пользователя
Сообщения: 15779
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

[uquote="OKF",url="/forum/viewtopic.php?p=4325119#p4325119"][uquote="BOB51",url="/forum/viewtopic.php?p=4324946#p4324946"]Для Си/С++ это содержание соответствующих библиотек.[/uquote]
А у него есть библиотеки? Или встроенные функции? Не считая main().)[/uquote]
Базовый минимум GCC находится в соответствующем каталоге IDE.
При стандартной инсталляции это специальный скрытый каталог на диске С (где-то в теме уже рассматривалось - но вспоминать надо - я практически на всех компах портабле версию поставил).
В случае же с портабле для АВРок примерно такое расположение

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

имя_диска:\Arduino\portable\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\avr
Чего там еще накопать можно - то на любителя закопаться в самих компиляторах.
Но то уже не для пользователя (даже "продвинутого")
Касательно С++ и адуринки - то больше или самодельные библиотеки или "сторонних авторов" - как пример те же "основные"
(самому такие создать довольно сложно из-за требований быстродействия или доступа к аппаратным ресурсам)
Adafruit_NeoPixel
OneWire
SoftwareSerial
и прочие в папке

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

Мои документы/Arduino/libraries
или для портабле

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

имя_диска:\Arduino\portable\sketchbook\libraries
Эти библиотеки можно скачать автоматически или поставить вручную (смотря чего удобнее)...
:roll:
OKF
Это не хвост, это антенна
Сообщения: 1452
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="BOB51",url="/forum/viewtopic.php?p=4325220#p4325220"][uquote="OKF",url="/forum/viewtopic.php?p=4325119#p4325119"][uquote="BOB51",url="/forum/viewtopic.php?p=4324946#p4324946"]Для Си/С++ это содержание соответствующих библиотек.[/uquote]
А у него есть библиотеки? Или встроенные функции? Не считая main().)[/uquote]
Базовый минимум GCC находится в соответствующем каталоге IDE.[/uquote]
Сам язык функций не содержит. Только сторонние, какие найдёшь.)
Друг Кота
Аватара пользователя
Сообщения: 15779
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Именно "чистый" GCC кроме стандартных библиотек (как и для простого Сишного GCC, применяемого в АВР студии) ничего не добавляет, а вот уже IDE в своем "референсе" много чего имеет - начиная с инициализации выводов согласно применяемой "платформе" и прочего из раздела Functions референса.
Жаль сегодня для ардуиноIDE версий 1.8.19 и 2.0.2 этот раздел только в режиме "он лайн" доступен...
Единственно сохранился в "офф лайн" старый вариант для 1.8.9 (явно "урезанный" по сравнению с он-лайновой версией)...
:roll:
OKF
Это не хвост, это антенна
Сообщения: 1452
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

"Я ему про Фому, а он мне про Ерёму". Ужос.(
Друг Кота
Аватара пользователя
Сообщения: 15779
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Так вполне вероятно разное понимание...
У меня такое представление...
минимальные "стандартные" - это составляющая GCC к примеру те же
avr/interrupt.h
avr/pgmspase.h
и подобные...
В составе IDE "референса" раздел Functions содержит функции, обращение к которым требует наличия соответствующих библиотек их обеспечения уже где-то в самой IDE
Это уже "встроенный минимум" и с использованием С++
Далее идут библиотеки группы
Official Arduino Libraries
SPI - for communicating with devices using the Serial Peripheral Interface (SPI) Bus.
Wire - Two Wire Interface (TWI/I2C) for sending and receiving data over a net of devices or sensors.
SoftwareSerial - for serial communication on any digital pins.
встроенные в IDE "по умолчанию"
и за ними уже "сторонних авторов" - эти из тырнета скачиваем при желании
наиболее необходимые из них
OneWire, Adafruit_NeoPixel, LiquidCrystal
:roll:
Друг Кота
Аватара пользователя
Сообщения: 15779
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Попалась в тырнете весьма интересная книжа по Си для адуринки...
НО... на чистом "спик инглиш"...
Сгрузил в сундук - сегодня она уже там доступна
https://sunduk.radiokot.ru/view/?id=1670505201
Подход аналогичен тому, что и у меня, но есть и весьма интересные дополнения по работе с многофайловиками - совершенно оригинально и нигде ранее в литературе по ардуинкам не попадавшееся (но заложено в самой IDE на видном месте!).
Чуток дополнений по препроцессору и структурам.
Сам пока "пережевываю" - особо по работе с IDE в режиме допонительных файлов - там надо еще покрутить тесты ибо чуток мозг сносит по сравнению со стандартным (несколько пар *.h + *.cpp и единственный *.ino) вариантом...
По книже ежли создать средствами IDE (а не с помощью внешних редакторов) дополнительный файл *.cpp (но без всякого связующего с главным файлом проекта *.h заголовочника!), то после компиляции получаются в проекте несколько *.ino без явно прописанных в папке скотча связей - где-то они таки есть, но то работа IDE... Разберусь отдельно результат выложу ибо весьма удобно...
:write:
OKF
Это не хвост, это антенна
Сообщения: 1452
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Конечно удобно для домохозяек. Ни о чем не думай - только файлы в одну папку тули!)
Иной раз отдаю людЯм проект с пустым ino, или с одним только описанием в ino. Фигеют.)
Чем методом тыка действовать, лучше бы поинтересовался как сборка скетча в Ардуино происходит.(
https://arduino.github.io/arduino-cli/0 ... d-process/ например.
Друг Кота
Аватара пользователя
Сообщения: 15779
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

[uquote="OKF",url="/forum/viewtopic.php?p=4333769#p4333769"]Конечно удобно для домохозяек. Ни о чем не думай - только файлы в одну папку тули!)
Иной раз отдаю людЯм проект с пустым ino, или с одним только описанием в ino. Фигеют.)
Чем методом тыка действовать, лучше бы поинтересовался как сборка скетча в Ардуино происходит.(
https://arduino.github.io/arduino-cli/0 ... d-process/ например.[/uquote]
Меня не "процесс сборки проекта", а правила написания исходника в плане синтаксиса интересуют.
А вот именно их таки приходится по крохам собирать да именно "при помощи лженаучного тыка" - по сей день никто так и не удосужился уделить ардуино IDE столько же внимания, как тому же GCC в аврстудии (подобно тому материалу, что ARV сделал).
8)
[uquote="Martian",url="/forum/viewtopic.php?p=4333779#p4333779"]BOB51, ...добавил второе издание[/uquote]
Спасибо!
положил в библиотечку, буду потихоньку колупать зернышки информации.
:beer:
OKF
Это не хвост, это антенна
Сообщения: 1452
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="BOB51",url="/forum/viewtopic.php?p=4333826#p4333826"]Меня не "процесс сборки проекта", а правила написания исходника в плане синтаксиса интересуют.[/uquote]
? Функции Ардуино все расписаны, исходники ядра приложены... С/С++ куча литературы... Пример?

Добавлено after 43 minutes 8 seconds:
[uquote="BOB51",url="/forum/viewtopic.php?p=4333745#p4333745"]...но есть и весьма интересные дополнения по работе с многофайловиками - совершенно оригинально и нигде ранее в литературе по ардуинкам не попадавшееся (но заложено в самой IDE на видном месте!).

Сам пока "пережевываю" - особо по работе с IDE в режиме допонительных файлов - там надо еще покрутить тесты ибо чуток мозг сносит по сравнению со стандартным (несколько пар *.h + *.cpp и единственный *.ino) вариантом...
По книже ежли создать средствами IDE (а не с помощью внешних редакторов) дополнительный файл *.cpp (но без всякого связующего с главным файлом проекта *.h заголовочника!), то после компиляции получаются в проекте несколько *.ino без явно прописанных в папке скотча связей - где-то они таки есть, но то работа IDE...[/uquote]
А это что было? Специально пролистал обратно, а то, думаю, может я напутал чего...
ОК. "Вопросов больше не имею."
Друг Кота
Аватара пользователя
Сообщения: 15779
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Не расписаны особенности правил САМОСТОЯТЕЛЬНОГО создания файлов проекта, ежли он состоит из нескольких файлов.
Не расписаны правила САМОСТОЯТЕЛЬНОГО создания библиотек с использованием ООП.
Да много чего еще из "мелочей" (структуры, объединения, перечисления, применение extern и ....)
Вернее описания всего этого есть в литературе или по С++ или по Си для ПК, для соответствующих компиляторов, в стандартах ЯВУ или в более поздних книгах, посвященных ардуино - но все или разрознено или недостаточно "легко воспринимается".
А поскольку имеем уже три варианта возможного исполнения дополнительных файлов:
простой аналог Си - пара из заголовочника и файла с кодом (*.h + *.cpp) расположенных в папке проекта;
вариант библиотеки с использованием классов, расположенной в отдельной папке каталога библиотек;
и вот этот "третий" из только *.cpp файла, "превращающегося" в дополнительный *.ino файл в папке проекта...
Добавим вероятность взаимосвязи между теми файлами.
Вот эти вопросы и рассматриваются (часто из интереса "что будет при таком варианте?", чем из необходимости рядовой практической реализации).
8)
Причем меня больше устроили бы не "раскопки особенностей компиляторов", а простота их применения да в одном пособии.
:wink:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1392
Зарегистрирован: Чт авг 21, 2014 11:11:48
Откуда: краснодарский край

Сообщение главный колбасист »

А тот Си,который под windows, про который пишет Крупник "Изучаем Си" , он какой то
немного другой,чем который для МК . И среда для него Турбо Си, Борланд какой то...
Может новичкам лучше с него начинать? По крайней мере не надо МК,программаторов,
и вообще ничего не надо кроме собственно ПК.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15779
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Под ПК книжи по Си довольно сильно отличаться будут за счет примеров и основных ресурсов.
Наиболее "совпадающим" можно считать разве что или конструкции на основе Z80 или
конструкции на основе mcs51 в режиме совмещенной памяти программ/данных.
Программа в ПК исполняется исключительно из ОЗУ (с возможностью подкачки данных из различных накопителей
жестких дисков, флешек и прочего). Такой вариант даже в случае с "портабле" версиями.
А у МК основная программа жестко в ПЗУ находится. В ОЗУ лишь данные (да и соотношение ПЗУ к ОЗУ явно на порядок различается).
Собственно и приемы весьма разные применять приходится - чаще для пользователя незаметно в самых простых решениях, но с усложнением программ таки неуютненько бывает.
Различия вроде бы пытаются устранить в АРМах - но там подобное новшество существенно лишь для "жирных" кристаллов.
А вот учебники/книжи в основном базируются на старых примерах.
Причем не всегда удачных...
:roll:
OKF
Это не хвост, это антенна
Сообщения: 1452
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Так а ты не лезь в железо, отделяй его. К чему ты плетёшь тут всякие z80 и пр. Си, он и в Африке Си.
Ответить

Вернуться в «Разные вопросы по МК»