Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 1 из 7 1234 ... ПоследняяПоследняя
Показано с 1 по 10 из 70

Тема: Градусник на ds18s20

  1. #1

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,000

    Градусник на ds18s20

    Ещё одна лаба. Хотел сделать градусник, но из-за ds18s20 (в шкуре ds18b20) не вписался в attiny13. Датчик ds18s20 требует для математики дополнительной точности столько места, сколько планировалось на режим энергосбережения и управление мосфетами. Фонт опять же мелкий, крупнее не поместится во внутренний флэш. Один плюс - конструкция простая и недорогая. Для куда-нибудь засунуть, чтобы глянуть температуру, сгодится. По датчику вся информация в даташите. Фьюзы на схеме. Файлы для прошивки или дизассемблирования прилагаются.
    Нажмите на изображение для увеличения. 

Название:	sch.png 
Просмотров:	446 
Размер:	10.7 Кб 
ID:	382294
    Вложения Вложения
    • Тип файла: zip thermo.zip (2.7 Кб, Просмотров: 148)

  2. Спасибо от cimos, R0ACL, ra6ljm, RC3ZQ, RX3VK


  3. #2

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,000
    Для проверки запитался от rtc.
    Конечно, потребляет около 4 милиампер и долго не протянет.
    Нужно использовать автовыключение и энергосбережение.
    А ещё лучше другой МК и дисплей жлектроннобумажный. (:
    Нажмите на изображение для увеличения. 

Название:	ds18s20.JPG 
Просмотров:	315 
Размер:	24.0 Кб 
ID:	382308

  4. #3
    Аватар для vadim_d
    Регистрация
    29.10.2006
    Адрес
    Санкт-Петербург
    Сообщений
    14,742
    Цитата Сообщение от ozforester Посмотреть сообщение
    Для куда-нибудь засунуть
    "Гусары, молчать!"

    Цитата Сообщение от ozforester Посмотреть сообщение
    или дизассемблирования
    Вот как-то стесняются заядлые программисты исходники выкладывать, IMHO может кто-то бы и втянул код в свою поделку

    Цитата Сообщение от ozforester Посмотреть сообщение
    требует для математики дополнительной точности столько места
    Для плавающей точки? Во времена 8080А довелось делать программу управления инвертором на незапираемых тиристорах, компилятор был Aztec C под CP/M-80 https://en.wikipedia.org/wiki/Aztec_C , в верхнем уровне алгоритма надо было считать все параметры импульсов из частоты (0-150Гц) и напряжения (0-100%). Вот тогда и сделал фиксированную точку в их 16-битных целых, 8 бит до точки и 8 после нее, а для вычислений добавил одну функцию mul_div(a, b, c), которая множила a на b с промежуточным результатом в 32 бита, а потом делила его на c. И этого хватило, обошелся без плавающей точки, все влезло в 6 штук К573РФ2, что были в контроллере К1-20 . Может что-то подобное и тут сработает?
    Вадим

  5. #4

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,000
    Гусар? Думаю, что да, определенно засунет. Вопрос лишь - дочитает ли он перед этим до слова "глянуть". Плавающая точка здесь не нужна. Два принимаемых байта целой и дробной части температуры обрабатываются и выводятся по отдельности, чтобы голову не ломать, а между ними так же отдельно выводится никуда не плавающая точка. Скучно всё, вобщем. Здесь если фантазию проявлять, то только гусарам, ибо форма печатной платы-с.
    Gnu assembly, на нем почти никто не пишет, это во первых, во вторых - после дизассемблера получится то же самое, если он из gcc. Кто пишет, за несколько минут разберется в килобайте, тем более что 95% его, это просто фонт, i2c, 1-wire и двоично-десятичное преобразование числа для вывода. А любящие тянуть уже давно всё стянули с гитхаба и ищут куда бы вставить, как тот поручик, (вот же ж привязался проклятый). Со временем и эта лаба там окажется, в смысле на гитхабе.

  6. #5

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    1,420
    Позывной
    LZ2WSG
    Здесь: Smooth Big Text и list описан метод "растягивания" и "сглаживания" шрифта (Stretch, Smoothing) без использования нового шрифта с более высоким разрешением (и больше используемой памяти). "Математика" интересная: по Y за каждой бит следует повторений abcdefgh -> aabbccddeeffgghh (а после по X следует добавить повторение столбца). На данный момент я экспериментально использовал код для Stretch. Результаты хорошие: от 3х8 шрифт с удвоенным размером памяти меньше, чем под новый шрифт . (Ну, медленнее, это понятно).
    Код:
    // Converts bit pattern abcdefgh into aabbccddeeffgghh
    // http://www.technoblogy.com/list?3AMG
    // http://www.technoblogy.com/show?3AJ7
    uint16_t stretch(uint16_t x) {
      x = (x & 0xF0) << 4 | (x & 0x0F);
      x = (x << 2 | x) & 0x3333;
      x = (x << 1 | x) & 0x5555;
      return x | x << 1;
    }
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	o_02b.jpg 
Просмотров:	89 
Размер:	118.1 Кб 
ID:	382589   Нажмите на изображение для увеличения. 

Название:	o_02bb.jpg 
Просмотров:	79 
Размер:	124.3 Кб 
ID:	382590  
    Последний раз редактировалось veso74; 21.12.2022 в 13:16.

  7. #6

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,000
    Интересный алгоритм. По числу команд, вероятно, немножко проигрывает, а по числу тактов очень сильно выигрывает у решения "в лоб". Интересен вывод этих выражений. Булева алгебра небось. Не было времени на ней останавливаться, и так "пятилетка за три года", голова часто побаливает от новой информации.

    На этой tiny13 не осталось свободных байт, они для других целей. Немного освободил места, сразу включил режим энергосбережения (8 сек powerdown). Еще пару байт нашел - выключил буферы неиспользуемых входов. Еще пару байт - добавил в олед команду уменьшения контрастности. Если найдет озарение, и освободится достаточно байт, то приделаю удержание мосфета питания и автовыключение после нескольких измерений. Пока что хекс весит 1024 и без мосфета.

    Если символ тянуть в два раза, то и считать ничего не нужно. Глифы исходного шрифта просто выводятся дважды вниз и дважды вправо модифицированной процедурой отображения символа. На тини13 так пробовал, всего несколько дополнительных команд к процедуре вывода символа и правка в процедуре позицирования курсора, если правильно помню.
    Код:
    ab    ab ab
    cd => ab ab
          cd cd
          cd cd
    На dht11 меньше ресурсов нужно для работы с датчиком, там можно не только шрифт растянуть, но и уместить в программной памяти цифры шрифта 16х14 на tiny13. А если растягивать 8x6, то можно, наверное, и радиоинтерфейс прикрутить. Получится датчик из тини13 к домашней погодной станции, например к орегоновской. А затем и саму станцию можно попробовать на тини. (:
    Вложения Вложения

  8. #7

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    1,420
    Позывной
    LZ2WSG
    У меня так:
    Код:
    a => aa
    b    aa
    c    bb
    d    bb
    e    cc
    f    cc
    g    dd
    h    dd
         ee
         ee
         ff
         ff
         gg
         gg
         hh
         hh

  9. #8

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,000
    Типы данных разные. У меня ab это 0xab (восемь бит), которые рисуют один глиф на странице оледа. У фонта 8x6 пикселей, таких байтов шесть ..0xdf,0xab,0xf0,.. Ищется оффсет к символу по таблице и выводятся байты-черточки сверху-вниз слева-направо. Шесть байт - шесть восьмибитных черточек. Вобщем то же самое, если abcdefgh еще и в ширину растянуть и перевести в байты.

  10. #9

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    1,420
    Позывной
    LZ2WSG
    да, в моем случае: SSD1306, reg 0x20 = 0x01 -> vertical addressing mode
    фонт 3x8


  11. #10

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,000
    Я не очень понятно выразился, можно было проще нарисовать.

    байт в описании фонта выглядит как 0xab = 0b10101011

    глиф выводится:
    1
    1
    0
    1
    0
    1
    0
    1

    А какой режим выберешь, в том и выводишь, это уже детали. Мне горизонтальный больше нравится режим, почему не знаю сам. Ну, и как фонт опишешь так и выводишь, это тоже не важно, можно и с msb, а можно с lsb.

Страница 1 из 7 1234 ... ПоследняяПоследняя

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

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

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

Ваши права

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