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

Игорь Колпаков

Members
  • Постов

    7
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Барнаул

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    Охранная и пожарная сигнализация

Достижения Игорь Колпаков

Новичок

Новичок (1/14)

  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

1

Репутация

  1. Добрый день. Вопрос к автору прошивки 3.0.хх. Подскажите где в коде поправить формулу подсчета скорости в rpm? Выставляю в конфиге 200 шагов на оборот, микрошаг 1/16, прошиваю, ставлю в станок, запускаю, и... Скорость вместо установленной (30 rpm), на самом деле в два раза больше. Специально ставил метку на валу движка и по секундомеру замерял кол-во оборотов. Подозреваю, что собака вот тут порылась: static uint32_t tmr; if (millis() - tmr >= 500) { tmr = millis(); int total_turns = (abs(shaftStepper.pos)) / STEPPER_Z_STEPS_COUNT; screen.UpdateTurns(total_turns % w.turns + 1); DebugWrite("pos", shaftStepper.pos, layerStepper.pos); screen.PlannerStatus(planner.getStatus()); }. Таймер считает до 500 мс. А должен до 1000. Или я не прав? И еще один момент: при старте намотки счетчик витков сразу увеличивается на единицу. Но ведь виток еще не намотан. Почему он его уже посчитал???
  2. Хорошо, попробую сам. Только нужна будет в некоторых моментах Ваша помощь. Например для реализации функций обработки кнопок по таймеру.
  3. SDA - PORTB.4 SCL - PORTB.3 Энкодер - PORTB.0 и PORTB.1 Кнопка энкодера - PORTA.0 Светодиод "Стерео" - PORTA.6 LCD: RS - PORTC.2 E - PORTC.3 DB4 - PORTC.4 DB5 - PORTC.5 DB6 - PORTC.6 DB7 - PORTC.7 Кнопки установки часов: Плюс - PORTD.3 Минус - PORTD.2 Режим - PORTD.4 Функции кнопки режим: -при кратковременном нажатии (менее 2с)- переключает отображение на LCD даты и времени, при этом кнопки "+" и "-" не действуют -при удержании (более 2с) - переходим в режим установки времени, (устанавливаем количество часов) кнопки "+" и "-" действуют последующие кратковременные нажатия кнопки "режим" переключают установку минут, секунд, дня, месяца, года и так по кругу до нажатия с удержанием (более 2с) кнопки "режим" или выход на основную индикацию по таймеру по прошествии 5-7с , если ничего не нажималось. Контроль питания и выбор типа батарей не нужен, так как питаться будет только от сети (ну, естественно с батарейкой на DS1307).
  4. ОК! Я понял. А очень жаль - получилось бы неплохо... asvetp, к Вам просьба. Могли бы Вы переделать прошивку для Меги 8535 и LCD 16х2 с управлением от энкодера, как в версии 6.2 и с часами на DS1307? Только так, чтобы с прошивкой совпала моя плата? Куда чего у меня на плате разведено, напишу.
  5. Я год назад как-то пробовал RDA-шку подружить с МК посредством Bascoma, но что-то как-то не доделал, потерял интерес. То что получилось - в архиве. Там я использую Мегу16. Почему ее? Потому что предполагался кухонный таймер с часами, метеостанцией и приемником. Даже плата уже сделана с энкодером и LCD 16x2. RDA.7z
  6. Здесь S будет переменная типа Char (в СИ) или String (в Bascom). Так как строковая (символьная) переменная использует при сохранении в EEPROM два байта (один байт непосредственно под символ, другой - нулевой), то при записи/чтении в цикле надо чтобы счетчик считал с кратностью 2. А места в EEPROM вполне хватит, например для ATmega8, это 512 байт - делим на два, получим 256 программируемых пользователем символов - не так уж и мало, учитывая, уже существующие символы в ПЗУ дисплея. Даже если откинуть 20-30 байт уже испульзующегося в программе пространства EEPROM, и то получается немало. Также, если необходимо большое число дополнительных символов или там, где МНОГАБУКАФ, можно заюзать внешнюю I2C или SPI память типа AT24C64 или что-то похожее, тем более, что протокол I2C у Вас уже реализован.
  7. А что, если записать все служебные символы , в том числе и русские буквы в EEPROM, а потом по необходимости их оттуда доставать и сразу кидать в одну единственную ячейку дисплея, предназначенную для символов пользователя. Не зная, как это выглядит в ASM-е, а в Bascom-е так: Readeeprom S, &H10 ' S - переменная для символа , &H10 - адрес в EEPROM, где хранится код этого символа Locate 1, 1 ' располагаем курсор в позицию первая строка, первый столбец (на самом деле в любое место) Lcd S ' отображаем то, что считали из EEPROM и так далее. Можно все сделать в цикле. Можно в EEPROM-е хранить даже целые фразы ака названия станций. Немного уменьшится быстродействие программы, да бесспорно, но ведь считывание символов не нужно постоянно. Раз считали, а потом просто отображаем из буфера дисплея. Особенно это актуально для графических дисплеев, в которых буфер графики отдельный от буфера символов... А закидывать в EEPROM так: Deflcdchar [x], 224, 224, 224, 224, 224, 224, 224, 224 ' где [x] это номер ячейки дисплея для символов, определяемых пользователем (0-7) ' цифрами (здесь 244) кодируется символ - в BascomAVR есть встроенный редактор символов дисплея... S = Chr(0) Writeeeprom S, &H10 ' запись в EEPROM переменной S по адресу &H10
×
×
  • Создать...