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

Простые вопросы новичка.


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

ну перевернуть наверное не сложно:

for(i=16;i>=0;i--)

в целом ясно.Есть еще мысль в загажнике  -),но надо ее сформулировать ,я поработаю над другим вариантом.

спс

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

3 часа назад, Wawchuk сказал:

for(i=16;i>=0;i--)

Аккуратнее с такой конструкцией. У неё есть вариант, при котором она превратится в бесконечный цикл.

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

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

 

 вопрос по Вашему варианту функции, с поста выше:

//****************************************** //* запись в регистры 74HC595 //******************************************

void read_74HC595 (unsigned char reg8,unsigned char reg7, unsigned char reg6,

                                 unsigned char reg5, unsigned char reg4,unsigned char reg3,

                                 unsigned char reg2,unsigned char reg1, unsigned char reg0)

 

с таким количеством аргументов можно управляться следующим образом ?

 

int out_595 [8] = {0,0,0,0,0,0,0,1};  

int i; 

while(1)  
{

        for (i=0; i<8; i++)  
        {
        read_74HC595 (0,0,0,0.0.0,0,1) = out_595 ;  
        }

 в ней же перебирать надо не биты ,а байты? или ткните где в языке есть применение(использование) таких функций

Изменено пользователем Wawchuk
ошибсяread_74HC595 (0,0,0,0.0.0,0,1) = out_595 [i];  
Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

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

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

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

Зачем учить новичка тому, что считается ужасным стилем программирования?! Ведь проблем это породит больше, чем пользы.

Вот и первые ласточки:

10 часов назад, Wawchuk сказал:

с таким количеством аргументов можно управляться следующим образом ?

 

10 часов назад, Wawchuk сказал:

ткните где в языке есть применение(использование) таких функций

Я бы ткнул в эту функцию носом и сказал бы "не делай так, не делай так, не делай!" - как котенка в лужу.

Любую задачу надо решать постепенно, от общего к частному. Я не уследил за всей темой с 595-ыми регистрами, но догадываюсь, что проблема примерно такая.

У нас есть несколько регистров, которые надо заполнять данными. Значит, надо иметь функцию, которая выводит в ОДИН регистр данные, и повторять вызов этой функции столько раз, сколько регистров. Так как данных несколько, это массив, сколько регистров, столько и элементов массива. Значит, надо в цикле перебирать элементы массива и передавать их в ту самую функцию вывода в регистр. Ну а после этого надо дать строб на обновление выходных защелок регистров - вот и все решение задачи.

#define REG_CNT	8 /* количество регистров */
void write_reg595(unsigned char d); // функция вывода байта в регистр
void strobe(void); // функция выдачи строба для обновления защелок (может быть макросом)

unsigned char reg_data[REG_CNT]; // массив с данными для вывода

// функция обновления содержимого всех регистров
// data - указатель на данные
void update_all_regs(unsigned char *data){
  unsigned char i;
  for(i=0; i<REG_CNT; i++)
    write_reg595(data[i]);
  strobe(); // выдача импульса обновления защелок
}

// там, где надо обновить содержимое регистров, всего-навсего вызываем эту функцию так:
update_all_regs(reg_data);

Как-то так получается. Вывод в регистр вроде как разобрали, хотя не уверен, что корректно, а не как предыдущее. Выдачу строба, я думаю, тоже расписывать нет необходимости.

 

З.Ы. Прошу пардону: не заметил, что тут все ЧИТАЮТ регистры, а не ЗАПИСЫВАЮТ. Но подход тот же самый: функция чтения одного, цикл перебора массива, куда заносятся считанные данные. Строб только надо делать ДО начала цикла, а не после, т.к. защелки в регистрах (кстати, они 597-е!) "с другой стороны" :) 

10 часов назад, Wawchuk сказал:

ошибся read_74HC595 (0,0,0,0.0.0,0,1) = out_595 

Да тут ошибок едва ли не столько  же, сколько символов!

1. Если read_74HC595 это функция, то присваивать ей значение недопустимо.

2. В перечислении параметров тоже ошибочка: часть запятых замменена на точки

3. 595-е регистры читать нет смысла, т.к. они предназначены для ВЫВОДА данных. Читать можно 597-е регистры, которые предназначены для ВВОДА данных.

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

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

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

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

13 часа назад, ARV сказал:

Зачем учить новичка тому, что считается ужасным стилем программирования?!

@ARV  встречный вопрос (в свете того что ТС пользует эту функцию в 16пыхе в прерывании ) какой код выполнится быстрей с ужасным стилем  или  ваш причесанный по учебнику?

ЗЫ представляю что будет, если показать конечный вариант на асм-вставках :)

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

9 часов назад, IMXO сказал:

встречный вопрос (в свете того что ТС пользует эту функцию в 16пыхе в прерывании ) какой код выполнится быстрей

Еще ни разу не встречал любительского проекта, где эта проблема на самом деле имела бы высокую важность. 207 микросекунд будет выполняться код или 307 - совершенно никакой разницы не будет. И еще боооооольшой вопрос, действительно ли будет какой-то заметный выигрыш в скорости при ужасном стиле, а вот что проигрыш в стиле УЖЕ ЕСТЬ - доказывать не надо. И этот проигрыш обязательно аукнется попозже.

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

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

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

Расскажите в двух словах в чем будет отличие 8 и 16 битного таймеров. Как скажется на качестве сигнала в фазкорректоре шим?

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

1 час назад, Дмитрий Мамедиев сказал:

в чем будет отличие 8 и 16 битного таймеров

Главное отличие в том, что 16-битный может быть настроен на работу в 256 раз медленнее, чем 8-битный.

Следущее отличие в том, что 8-битный обычно имеет меньше возможностей (режимов ШИМ, например), чем 16-битный.

В итоге 16-битный всегда может заменить 8-битный, а наоборот - значительно реже.

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

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

Странные какие-то вопросы. Лучше, не лучше, ... Каждой задаче - своё решение.
8 бит от 16-ти отличается размером бит. Нужен 8-мибитный таймер - пользуйтесь. Понадобилось шире - берём 16-тибитный.

PS: Причём тут вообще скорость ? :wacko:

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

В контексте генерации ШИМ 8-битный имеет предпочтение именно по компромиссу "частота сигнала/разрядность ШИМ" - обычный среднестатистический AVR обеспечит на 8-битном генерацию 8-битного ШИМ с частотой до 32 КГц - практически достаточно для любых целей, хоть "силовых", хоть "звуковых". 

Не смотря на все достоинства 16-битного с его помощью 16-битный шим на такой частоте никогда не получить.

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

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

У 16-битного таймера можно задавать модуль счета (ICR1 или OCR1A). Кстати, без этого полные 16 бит не получить, что забавно. А так - берете и настраиваете хоть 16 бит, хоть 12, хоть 8, хоть 2 бита. С соответствующей частотой.

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

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

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

Хочу генерироват шим для импульсного блока питания. По сути это два бита с определенной частотой, примерно 40к. А как реализовать двубитный шим? Да еще с коректором фазы.

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

PhaseCorrect PWM на двух каналах не устроит?

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

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

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

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

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

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

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

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

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

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

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

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

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

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