Перейти к содержанию

Язык СИ для микроконтроллеров


Рекомендуемые сообщения

Здрвствуйте всем.

Один вопрос маленький есть.

есть цикл(как шим использую)

while(1){
   portb.F4=1;
   Delay_us(700);
   portb.f4=0;
   Delay_us(100); }

как его написать что бы его включать и выключать можно было как функцию в нужное время.

дописал условие, как то не получилось..

microC for pic.

благодарю)

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

void name_func() {
   portb.F4=1;
   Delay_us(700);
   portb.f4=0;
   Delay_us(100);
}

Вызов:

name_func();

можно задавать параметры, например по задержкам:

void name_func(int delayOne, int delayTwo) {
   portb.F4=1;
   Delay_us(delayOne);
   portb.f4=0;
   Delay_us(delayTwo);
}

Тогда вызов в твоем случае будет:

name_func(700, 100);

Только я не представляю как это в шиме использовать) надо делать, как я писал в постах выше

Все свои проекты я тестирую на плате контроллера PIC32MX от CedarLab.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

@Redya, да) но я не про то) интервалы задержки у меня не меняются.

к управляющему входу L293 подключен F4. и когда нажата кнопка включается эта функция. когда отпущена выключается. и получается определенная скважность.

гуглил гглил и загугливал. с таймером не умею работать. неполучается)

Ссылка на комментарий
Поделиться на другие сайты

Hongfa для различных применений в Компэл. Большой выбор в наличии!

Компания HONGFA - это не только крупнейший в мире производитель электромеханических реле, но также производитель конденсаторов, вакуумных прерывателей, трансформаторов и низковольтного коммутационного оборудования. На складе КОМПЭЛ регулярно поддерживаются около 100 самых популярных позиций электромеханических реле. Реле Hongfa могут заместить многие изделия производства недоступных брендов. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

в папке установленной mikroC есть папка example там есть примеры работы с таймером..если чо, можешь прислать проект, дорисую в него таймер

Все свои проекты я тестирую на плате контроллера PIC32MX от CedarLab.

Ссылка на комментарий
Поделиться на другие сайты

Тренды и лучшие решения для разработки зарядных станций в России

К 2029 году в России прогнозируется увеличение числа зарядных станций до 40 000. При этом отечественный рынок электротранспорта имеет климатические, потребительские и географические особенности. Для успешной разработки и построения инфраструктуры станций заряда в России идеальным вариантом является использование решений и электронных компонентов китайских производителей – лидеров индустрии электротранспорта и возобновляемой энергетики, которые уже представлены в КОМПЭЛ. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Такой назрел вопрос: Почему в Си не рекомендуют (или крайне редко) пользоваться командой GOTO ?

Ведь в asm он очень даже восстребован и не несет проблем.

Аргументируйте плиз)

В поисках работы..

Looking for job

Ссылка на комментарий
Поделиться на другие сайты

Секреты депассивации литиевых батареек FANSO EVE Energy

Самыми лучшими параметрами по энергоемкости, сроку хранения, температурному диапазону и номинальному напряжению обладают батарейки литий-тионилхлоридной электрохимической системы. Но при длительном хранении происходит процесс пассивации. Разберем в чем плюсы и минусы, как можно ее избежать или уменьшить последствия и как проводить депассивацию батареек на примере продукции и рекомендаций компании FANSO EVE Energy. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

При больших размерах кода с частым использованием goto код становится трудночитаемым. При возникновении проблем труднодиагностируемым. Этот оператор очень просто заменить и поэтому его предпочитают не использовать

Это тоже самое, что использовать неизменяемое значение в переменной, место константы. Впринципе ничего страшного, но если в каком-нибудь участке огромного кода по случайности изменишь эту переменную - замучаешься искать что не так.

Изменено пользователем Redya

Все свои проекты я тестирую на плате контроллера PIC32MX от CedarLab.

Ссылка на комментарий
Поделиться на другие сайты

хоть полбу мне дайте.

Как сделать незнаю.

КАК МОЖНО ЗАСТАВИТЬ МОРГАТЬ ОДНУ НОГУ МК. Так что бы она ВСЕГДА моргала. а остальными через if в While(1) отлавливал нажатия и тд.

как инициализируеться таймер?

переменная таймера сама меняет значение в зависимости от таймера мк?

как вообще происходит инициализация таймера.

а больше интерисует как запустить паралельно несколько циклов как с морганием ноги.

Простите за брутальность)

Ссылка на комментарий
Поделиться на другие сайты

).. либо шим на моргалку и занимайтесь кнопками. Либо зациклино моргание а кнопочки по прерыванию (ацп, В0 и т д) обрабатывайте и возвращайтесь в цикл

В поисках работы..

Looking for job

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Добрый день уважаемые!

Все время работал с АВР. А это встала задача поработать с ПИК

Скачал микро си, установил.

Есть пару вопросов.

Как обьявить переменную еепром?

как записать и прочитать значение с еепром?

в CVAVR

это так:

eeprom unsigned char x;

y=x; // копируем

x=y; // записываем

if (x==0xFF) y++; // проверяем значение еепром

А как в MicroC ?

С ув. Артем

Изменено пользователем artos5

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

могу сказать, тока, что в папке с микроС есть папка экземпл.. и там есть несколько примеров работы с еепром

Все свои проекты я тестирую на плате контроллера PIC32MX от CedarLab.

Ссылка на комментарий
Поделиться на другие сайты

А такой вопрос: Кто как оптимизирует код на Си, если алгоритм времязависим? Есть ли какой-то "оптимальный оптимизатор") или ничего лучше АСМ вставок не придумать?

В поисках работы..

Looking for job

Ссылка на комментарий
Поделиться на другие сайты

А такой вопрос: Кто как оптимизирует код на Си, если алгоритм времязависим? Есть ли какой-то "оптимальный оптимизатор") или ничего лучше АСМ вставок не придумать?

ну для начала начисто забыть о существовании функций типа: delay()

задержки формировать флагами через прерывания

лучший оптимизатор ваш мозг...

применение АСМ вставок блокирует работу оптимизатора компилятора... ;)

Ссылка на комментарий
Поделиться на другие сайты

ценная инфо. в особенности про голову.

Просто конкретно сталкнулся с проблеммой: Написал на Си. Потом глянул во что её превращает компилер. Короче эт получается двойная работа: корректировать ее за компилером.

А если говорить о ПО: picc, hi tech ... . что компилит лучше?

В поисках работы..

Looking for job

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

fuckir, насчет GoTo в сях (если еще не поздно :-)

int i;
for(i=0;i<5;i++){
//100500 строк кода
}

int i;
i=0;
LABEL1:
i++;
//100500 строк кода
if(i<5)goto LABEL1;

насчет правильного использования самого GOTO, в сях никогда им не пользовался. А так, вот 2 примера, for и во что он разворачивается (в том числе и компилятором). Самое очевидное - использование кучи меток, которые должны иметь разные имена. Компилятор-то с этим справится а вот в ручную неприятно. Далее, увеличение кода на несколько операторов (присвоение, увеличение и сравнение вместо одного for'а). Ну и риск в этих операторах напутать с переменными если циклов много. Все операторы циклов и тому подобного в Си сделаны в основном для улучшения читаемости, в Асме их нет и приходится реализовывать вручную.

И насчет оптимизации: если нужно выжимать из камня все возможности - то только Асм. Где-то в начале проскакивала мысль о стилях компиляторов - "городушка из стандартных библиотек" и "асмоподобный". В общем, для обработки вычислений или интерфейсов на небольших скоростях лучше подходит Си, для рекордных показателей - Асм.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Всем привет. Давно я сюда не заходил, занят был очень сильно. Я тут прочитал пару страничек и увидел, что у некоторых возникают проблемы и вопросы по микроСи.

Чтож, раз не хотят люди читать первые странички темы то продублирую. Информацию по работе в микроСи можно почерпнуть в журналах Радиоаматор 2006 год с 4 по 9 номер, скачать можно тут: http://www.ddrservic...ioamator/2006/.

Так же отличная ветка на форуме в которой проводится обучение именно на примере микроСи, советую для изучения: http://bvf.ru/forum/...ad.php?t=384474

Ну и не поленитесь найти русский хелп к самому микроСи в интернете ссылок куча, поэтому приводить тут не буду.

Всем удачи в освоении МК.

Изменено пользователем a_sergeevich

Будьте проще и люди к вам потянутся.

Ссылка на комментарий
Поделиться на другие сайты

  • 4 месяца спустя...

Добрый день. Начал изучать HI-TEC и сразу, бъет по глазам, чувствительность его к регистру (ВЕРХНИЙ, нижний). На асме я это обходил установкой "/c-" вопциях проекта. А вот с HI-TEC - не могу разобраться. Прошу Ваших подсказок. За ранее благодарен.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Доброй ночи. Не много в недоумении поведением hi-tech. Объявляю переменную типа char, делаю инкримент (++) (асме адина команда incf). Здесь в дизасемблеере hi-tech: загрузка в аккумулятор 1, сохранение аккумулятора в регистре, загрузка этого регистра, сложение аккумулятора с переменной.

#include <htc.h>
void main ()
{
char bb;
++bb;
}

3: #include <htc.h>
4: void main ()
5: {
6: char bb;
7: ++bb;
005 3001 MOVLW 0x1
006 00A1 MOVWF 0x21
007 0821 MOVF 0x21, W
008 07A0 ADDWF 0x20, F
8: }
009 2800 GOTO 0

В результате в место одной команды имеем 4. Обычная, на мой взгляд, операция, а выполняется в 4 раза дольше. Это так и есть или я не корректно что то записал?

Изменено пользователем Bugrim
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...