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

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

  1. #371
    Аватар для RK9AMX
    Регистрация
    26.03.2005
    Адрес
    Челябинск, MO05RE
    Сообщений
    1,343
    Записей в дневнике
    20
    Позывной
    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,926
    Записей в дневнике
    1
    Позывной
    UT0IS/D0ISM
    Цитата Сообщение от RK9AMX Посмотреть сообщение
    Сразу замечание. Есть ли смысл проверять в контроллере диапазон правильных значений?
    Есть. При первом включении переменные получают недопустимые параметры, в результате контроллер на экране такое рисует, а иногда просто виснет. Это гарантия от зависания плюс автоматическая запись значений по умолчанию. К тому же на кнопке у нас нет комбинации для сброса значений по умолчанию. После чего можно заходить по UART и настроить контроллер под свой усилитель.
    Интеграл от человеческих заблуждений - истина, производная - безумие.

  3. #373
    Аватар для RK9AMX
    Регистрация
    26.03.2005
    Адрес
    Челябинск, MO05RE
    Сообщений
    1,343
    Записей в дневнике
    20
    Позывной
    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

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    1,463
    Позывной
    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
    Сообщений
    1,343
    Записей в дневнике
    20
    Позывной
    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,926
    Записей в дневнике
    1
    Позывной
    UT0IS/D0ISM
    Цитата Сообщение от RK9AMX Посмотреть сообщение
    монитор порта в Arduino IDE. Скорость обмена 9600. Протестируйте на предмет ошибок, у меня работает.
    У меня не работает. Висит на "Connecting to PC..." На отправку команды "ID;" или "DI;" не реагирует. Светодиод TX во время отправки светится, ответа нет. При этом кнопка S1 работает как по короткому нажатию, так и по длинному.
    Интеграл от человеческих заблуждений - истина, производная - безумие.

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

  9. #377

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

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

  11. #378

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

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

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

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

  13. #379
    Аватар для Integral
    Регистрация
    08.02.2007
    Адрес
    г. Снежное
    Сообщений
    2,926
    Записей в дневнике
    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

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    1,463
    Позывной
    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 из 101 ПерваяПервая ... 28353637383940414888 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Контроллер на Arduino NANO и индикаторе WH1602 для транзисторного УМ
    от D0ITC в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 18
    Последнее сообщение: 16.01.2024, 10:20
  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

Ваши права

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