Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 38 из 53 ПерваяПервая ... 283536373839404148 ... ПоследняяПоследняя
Показано с 371 по 380 из 525

Тема: Индикатор лампового УМ на Arduino nano 3 и LCD 2004

  1. #371
    Аватар для RK9AMX
    Регистрация
    26.03.2005
    Адрес
    Челябинск, MO05RE
    Сообщений
    927
    Записей в дневнике
    16
    Позывной
    RK9AMX
    Цитата Сообщение от Integral Посмотреть сообщение
    Процедура EEPROM.put использует 4-ре ячейки памяти.
    Да, действительно 4 ячейки. Проверил только что. Ясно. Недавно делал процедуру записи с числами uint32_t (4 байта) поэтому проблем не возникло. Вот и отложилось в памяти, что работать должно 100%.
    Бывает...

    Долго ссылку на облако искал... Потерялась.
    Нашёл, изучаю v1.0.8.1.
    Сразу замечание. Есть ли смысл проверять в контроллере диапазон правильных значений?
    Можно это в программе на ПК сделать такую проверку. В контроллер по умолчанию всегда корректные данные записываются.
    Последний раз редактировалось RK9AMX; 19.01.2020 в 07:15.
    Сомнения могут быть устранены только опытом.


  2. #372
    Аватар для Integral
    Регистрация
    08.02.2007
    Адрес
    г. Снежное
    Сообщений
    2,667
    Записей в дневнике
    1
    Позывной
    UT0IS/D0ISM
    Цитата Сообщение от RK9AMX Посмотреть сообщение
    Сразу замечание. Есть ли смысл проверять в контроллере диапазон правильных значений?
    Есть. При первом включении переменные получают недопустимые параметры, в результате контроллер на экране такое рисует, а иногда просто виснет. Это гарантия от зависания плюс автоматическая запись значений по умолчанию. К тому же на кнопке у нас нет комбинации для сброса значений по умолчанию. После чего можно заходить по UART и настроить контроллер под свой усилитель.
    Интеграл от человеческих заблуждений - истина, производная - безумие.

  3. #373
    Аватар для RK9AMX
    Регистрация
    26.03.2005
    Адрес
    Челябинск, MO05RE
    Сообщений
    927
    Записей в дневнике
    16
    Позывной
    RK9AMX
    Цитата Сообщение от Integral Посмотреть сообщение
    К тому же на кнопке у нас нет комбинации для сброса значений по умолчанию.
    Реализовал такой режим.
    Процедуры .put() и get() заменил своими. Теперь можно записывать 16-битные значения в EEPROM.
    Подробности под катом.

    Скрытый текст


    v.1.0.9_Beta
    Реализована процедура входа в режим настроек (удержание кнопки S1 при включении питания в течение 3 сек).
    Выход из режима настроек (короткое нажатие кнопки, команда от ПК, перезапуск контроллера).
    Реализованы процедуры чтения и записи настроек в EEPROM (данные в формате uint16_t).
    Реализована процедура записи настроек через UART.
    * Для начала обмена необходимо с ПК отправить команду "ID;" (здесь и далее без кавычек).
    * Придет ответ: "ID200;".
    * Для завершения обмена по UART нужно отправить с ПК команду "DI;". Ответ: "DI200;".
    * Для чтения значения из памяти нужно отправить команду "ST0012;".
    * Цифры в команде - адрес ячейки памяти.
    * Т.к. данные хранятся в 16-битном формате, то адреса должны быть кратны 2.
    * Например: "ST0000;" "ST0002;" "ST0030;" "ST0100;" "ST1022;".
    * Незначащие нули перед адресом обязательны.
    * Ответ на запрос чтения значения ячейки памяти: "ST001400999;"
    * Запись в ячейку памяти осуществляется командой "ST001203200;".
    * Здесь первые 4 цифры - адрес ячейки памяти.
    * Правила указания адреса ячейки такие же как и в команде чтения.
    * Оставшиеся 5 цифр - значение. Значение может находиться в диапазоне 0..65535.
    * Ответ на команду записи: "ST001203200;".

    Забыл добавить... Незначащие нули в значении обязательны. Например: "1" нужно указать как "00001".

    Реализована процедура записи настроек по умолчанию (в режиме конфигурации долгое нажатие кнопки S1).


    Итого: параметры можно из консоли настроить. Для этого подойдет практически любая программа терминала COM-порта. Например монитор порта в Arduino IDE. Скорость обмена 9600. Протестируйте на предмет ошибок, у меня работает.
    Если ошибок не выявится, то буду переходить к оболочке для Windows.
    Вложения Вложения
    Последний раз редактировалось RK9AMX; 19.01.2020 в 16:31. Причина: Добавил важное замечание.
    Сомнения могут быть устранены только опытом.

  4. Спасибо от Chin

  5. #374
    Аватар для veso74
    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    243
    Позывной
    LZ2WSG
    Процедуры .put() и get() заменил своими. Теперь можно записывать 16-битные значения в EEPROM.
    RK9AMX, это ненужнo. Ардуиновской class EEPROM работает над все типом данны (Write any data type or object to the EEPROM).
    В зависимости от типа сам выделяет необходимое количество ячеек памяти автоматично. Преимущество: можно записать "в одну строку", вкл. масив, структур.

    Преимущество EEPROM.put(address, data) перед write: не переписывает значение, если оно не изменилось (за eeprom endurance 100k).
    Последний раз редактировалось veso74; 19.01.2020 в 17:42.

  6. #375
    Аватар для RK9AMX
    Регистрация
    26.03.2005
    Адрес
    Челябинск, MO05RE
    Сообщений
    927
    Записей в дневнике
    16
    Позывной
    RK9AMX
    Цитата Сообщение от veso74 Посмотреть сообщение
    RK9AMX, это ненужнo.
    Хорошо, завтра еще раз проверю.
    Делал так. Записал в ячейку с номером 2 16-битное число. Потом в ячейку с номером 0 записал 16-битное число. Считал значение по нулевому адресу - всё в порядке. Считал по адресу 2 - получил не то, что записывал.
    Может что-то пошло не так... Попробую с другими соседним адресами.

    Цитата Сообщение от veso74 Посмотреть сообщение
    Преимущество EEPROM.put(address, data) перед write: не переписывает значение, если оно не изменилось
    С EEPROM.put() может и есть преимущества, а вот .get() в качестве аргумента в функцию не вставить. Поэтому EEPROM[address] и простые битовые операции предпочтительней, по моему мнению.
    Сомнения могут быть устранены только опытом.

  7. #376
    Аватар для Integral
    Регистрация
    08.02.2007
    Адрес
    г. Снежное
    Сообщений
    2,667
    Записей в дневнике
    1
    Позывной
    UT0IS/D0ISM
    Цитата Сообщение от RK9AMX Посмотреть сообщение
    монитор порта в Arduino IDE. Скорость обмена 9600. Протестируйте на предмет ошибок, у меня работает.
    У меня не работает. Висит на "Connecting to PC..." На отправку команды "ID;" или "DI;" не реагирует. Светодиод TX во время отправки светится, ответа нет. При этом кнопка S1 работает как по короткому нажатию, так и по длинному.
    Интеграл от человеческих заблуждений - истина, производная - безумие.

  8. Спасибо от RK9AMX

  9. #377

    Регистрация
    19.08.2010
    Адрес
    Ставрополь
    Сообщений
    90
    Позывной
    UA7F
    И у меня не работает.

  10. Спасибо от RK9AMX

  11. #378
    Аватар для veso74
    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    243
    Позывной
    LZ2WSG
    Делал так. Записал в ячейку с номером 2 16-битное число. Потом в ячейку с номером 0 записал 16-битное число. Считал значение по нулевому адресу - всё в порядке. Считал по адресу 2 - получил не то, что записывал.
    Может и так, может и иначе, все работает . Кому как удобно.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	Untitled-1.jpg 
Просмотров:	25 
Размер:	250.0 Кб 
ID:	328297   Нажмите на изображение для увеличения. 

Название:	Untitled-2.jpg 
Просмотров:	20 
Размер:	226.8 Кб 
ID:	328298  

  12. Спасибо от RK9AMX

  13. #379
    Аватар для Integral
    Регистрация
    08.02.2007
    Адрес
    г. Снежное
    Сообщений
    2,667
    Записей в дневнике
    1
    Позывной
    UT0IS/D0ISM
    veso74, пример хороший, но тогда нужно следить за разрядностью значений, которые пишем в память. Иначе значения начнут друг друга затирать.
    Я в таких случаях делаю так:
    чтение
    Код:
    U_ANOD_MAX = word (EEPROM.read(6), EEPROM.read(7));
    запись
    Код:
    EEPROM.update(6, highByte(3000)); EEPROM.update(7, lowByte(3000));
    Последний раз редактировалось Integral; 19.01.2020 в 22:13.
    Интеграл от человеческих заблуждений - истина, производная - безумие.


  14. #380
    Аватар для veso74
    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    243
    Позывной
    LZ2WSG
    Да, необхдимо следить за разрядностью значении. При немного константы, переменные ето не трудно (и также часть приятной работы ). А и действия одинакоовые, а по-другому написани.

    Читаем из Arduino.h и WMath.cpp в прогр. папки, т.е. уже сделано как макросы, уменьшает написание, что и Вы далы выше:
    Код:
    #define word(...) makeWord(__VA_ARGS__)
    uint16_t makeWord(uint16_t w);
    uint16_t makeWord(byte h, byte l);
    unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; }
    ...
    #define lowByte(w) ((uint8_t) ((w) & 0xff))
    #define highByte(w) ((uint8_t) ((w) >> 8))
    Последний раз редактировалось veso74; 19.01.2020 в 22:48.

Страница 38 из 53 ПерваяПервая ... 283536373839404148 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Контроллер на Arduino NANO и индикаторе WH1602 для транзисторного УМ
    от D0ITC в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 5
    Последнее сообщение: 10.01.2020, 11:07
  2. ad9952+arduino nano
    от greekk в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 5
    Последнее сообщение: 13.06.2019, 12:31
  3. Si5351 arduino nano cw передатчик
    от Tlg в разделе Для начинающих
    Ответов: 4
    Последнее сообщение: 18.04.2019, 16:46
  4. Arduino nano v3+ad9850 cw transmitter
    от Tlg в разделе Для любителей QRP и QRPP
    Ответов: 15
    Последнее сообщение: 09.01.2019, 21:42
  5. Контроллер на Arduino NANO и индикаторе WH1602 для транзисторного УМ
    от в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 0
    Последнее сообщение: 01.01.1970, 03:00

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •