Jump to content
parovoZZ

Функции - передача переменных через параметры или глобально?

Recommended Posts

1 hour ago, Starichok said:

кнопка обрабатывается в другой функции.

в прерывании по переполнению таймера. Соответственно переменная может измениться в процессе выполнения функции, верно?

Edited by cucumber

Share this post


Link to post
Share on other sites
15 minutes ago, cucumber said:

в прерывании по переполнению таймера. Соответственно переменная может измениться в процессе выполнения функции, верно?

Может. Но тогда тем более не ясен цикл многократной проверки этой переменной. Если нужна некая задержка между выводами символов на бегущую строку, то это надо организовывать через таймер. После отправки символа проверяем состояние флага и в сон. Выходим из сна по таймеру. Таким образом, у нас в приоритете вывод символов на экран, а в оставшееся время мы делаем все свои хозяйские дела. Как результат - стабильная скорость вывода символов на экран.

Share this post


Link to post
Share on other sites
Just now, parovoZZ said:

не ясен цикл многократной проверки этой переменной.

чтобы по нажатию любой кнопки можно было прервать выполнение текста

 

Just now, parovoZZ said:

Выходим из сна по таймеру.

получается, в одном таймере я опрашиваю кнопки, и еще нужно задействовать второй? Сейчас у меня один таймер опрашивает, и при нажатии любой кнопки устанавливается флаг, который проверяется в функции, если требуется вывод текста.   

Share this post


Link to post
Share on other sites

Вебинар «Каждому ключу — свой драйвер» (13.08.2020)

Компания КОМПЭЛ приглашает вас принять участие в вебинаре, который будет посвящен теме драйверов управления транзисторами компании Infineon. Мы рассмотрим четыре различных технологии изготовления микросхем драйверов, в чём их отличия и особенности.

Подробнее

Мне показалось, что бегущая строка реализована как-то через анус? Именно бег надо делать по прерываниям, а опрос кнопок и т.п. "управляющие" функции (т.е. остановку бега, например) можно (и, пожалуй, нужно) делать в главном цикле.


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

Новый ХИТ FANSO CR123A/SN

Параметры новой батарейки показывают прекрасные результаты. Она используется для приложений с повышенными импульсами тока. Широко применяется в охранно-пожарных датчиках, устройствах телеметрии, поисковых маячках, LED-фонарях и других промышленных и бытовых устройствах.

Подробнее

Сетевой источник питания с расширенным диапазоном входных напряжений на основе VIPER26xK

Питание стационарных устройств чаще осуществляется напряжением 220 В, получаемым от одной фазы трехфазной промышленной сети. Однако существует ряд приложений, которым необходима энергия из всех трех фаз, в т.ч. и в аварийных режимах. Решение этой задачи обычно требует введение в модули питания дополнительных узлов, увеличивающих как их размеры, так и стоимость. Упростить схемы источников питания от трехфазной сети переменного тока либо от других высоковольтных источников, позволяет использование преобразователей с расширенным диапазоном входного напряжения.

Подробнее

Just now, cucumber said:

бегущая строчка это второстепенная функция

Вот и я об этом: зачем в ГЛАВНОМ цикле делать ВТОРОСТЕПЕННУЮ функцию?


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

задумка такая - появляется комментарий-строчка, из которой нужно выходить только нажатием кнопки, типа аппендикс. А как можно и нужно?

Share this post


Link to post
Share on other sites

Я не знаю, как НУЖНО. А как МОЖНО - тут вариантов море.

Например, в главном цикле вы выводите строку от символа start до символа end. Значение этих переменных меняете в прерывании от таймера, что в итоге даёт бег строки. Все остальное в главном цикле делаете, как угодно - если нажата определенная кнопка, просто останавливаете таймер, или задаете какой-то флаг, по которому обработчик таймерного прерывания не будет менять start и end... В общем, как хотите.

Если включен таймер и крутится главный цикл - строка бежит.

Edited by ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites
4 hours ago, Lexter said:

Но придётся терпеть

Причем не только тому, кто задаёт вопросы :)


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

если проект с несколькими файлами .c можно как-нибудь вынести массив(ы) в один файл? Чтобы к нему был доступ из других файлов ?

Edited by cucumber

Share this post


Link to post
Share on other sites
Just now, cucumber said:

если проект с несколькими файлами .c можно как-нибудь вынести массив в один файл? Чтобы к нему был доступ из других файлов ?

Разумеется.

Создаете заголовочный файл (например, arr.h), в котором описываете свой массив, например так:

#define ARR_SZ 10
extern int my_arr[ARR_SZ];

Во всех сишных файлах, где требуется доступ к этому массиву, подключаете arr.h. Дополнительно в одном из сишных файлов "наполняете" массив содержимым по умолчанию, если это надо. Т.е. строчка int my_arr[ARR_SZ] = {0,1,2,3,4,5,6,7,8,9}; или int my_arr[ARR_SZ]; должна быть только в одном месте всего проекта.


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

Разумеется


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • У нас такое не летает)))) 
    • Бочку поставить на автомобильное колесо (БУшное, целое, в сборе), накачать колесо 0.5 атм, на ниппель надеть шланг с пневмоманометром, поставить маркером метку "0" нациферблате, залить полбочки поставить , поставить "1/2", залить полную - метка "1" - Реально работает!!! Перед краном поставить тройник к одному концу тройника - кран, к другому прозрачный шланг и вверх его на высоту бочки , уровень в тубке = уровню в бочке - Реально работает!! Поплавок -верёвка (через блочок) - грузик. Грузик внизу - бочка полная, грузик вверху - пустая.... - Реально работает!! Бочку на весы.... - Реально работает!! ... С уважением, Сергей
    • Лет 10 назад делал, если будете собирать прошивку подгоню. Ультразвук. Можно использовать клапан или насос.
    • Это не злость. Просто явно бросается в глаза. Для одного предмета много, для двух слабо. Нипанятно (с).
    • Жёсткий режим чуть больше даёт помех, мне придётся плавнее выключать и включать ключи - должно быть пиков поменьше - по идее. 
    • Принято. А я то губу раскатал, думал, что если умею красиво писать, то этим могу воспользоваться вставив сверло в микродрель. Вот с переводным шрифтом хорошо и красиво. Но! Смотрю на лицевую панель своего Р250 М2 и думаю (думал), что и я так смогу, надписи сделаю, а потом краской заполню букавки. Ага, зча...с...с. Это же делалось на промышленной основе, а заказчик не кто нибудь, а оборонка. Буду изучать варианты предложенные Вами.  Благодарю всех откликнувшихся! С уважением Виктор.  
    • Думаю, что самое простое решение- штуцер внизу бака и прозрачная (силиконовая) трубка, закрепленная у его верхней части. 
  • Similar Content

    • By parovoZZ
      AREF  - внутренний ИОН 1.1в
      Вот такой код снятия результатов:
      temp = ADC; if (ADCH & (1<<ADCH1)) // Если значение отрицательное { temp |= 0xFC00; temp = (~temp) + 1; } Value_current_lsb = (uint8_t)(temp >> 2); Никак не пойму - на выбранные дифф. входы надо подать 85 мВ, чтобы АЦП выдал 0. Но это могу списать на внутренний ОУ в виде УГ. Если подаю  -1,1 в - то получаю 127.  Здесь все верно. Но при подаче положительного смещения те же 127 получаю уже при 0,72в. Что за ерунда? Неужели ОУ на столько УГ? Либо же где-то теряется разряд?
    • By parovoZZ
      Ну, собственно, сабж. Питание - от 2.4 и до 3.6. На сигнальном выводе необходима половина напряжения питания (по постоянке, разумеется).
    • By parovoZZ
      Я сейчас про случай, когда тактовая частота SPI равна половине или даже равна тактовой процессора. Соответственно, чем занять МК, пока идет отправка данных? У нас есть всего 16 тактов (или меньше). Обычно идет проверка флага опустошения буфера. Но тогда в чем профит аппаратного SPI, если на том же USI данные отправляются за те же 16 тактов, но МК занят тактированием(!)?. Вот чем занять МК? Отправить в остановку? Так дольше будем подготавливаться к остановке, потом уход на вектор прерывания (4 такта как минимум) и возврат из него. Ежели заниматься чем-то параллельно, то так же теряем время на обработку прерывания. Получается - только тупить в троттлинге?
    • By parovoZZ
      Поставил LUFA, следом абсолютно не нужный мне ASF. Но в упор не понимаю - как создать проект на базе этой библиотеки из студии? Приходится вручную копировать папку с заголовочниками LUFA, прописывать пути в makefile, лишние телодвижения по добавлению папки в свойства проекта. Если я это делаю всё вручную, то тогда для чего это расширение? Примеры я могу и так покрутить. ЗЫ - не слишком высокий скилл в юзании Atmel Studio/
×
×
  • Create New...