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

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

  1. #11

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,025
    Мысли переключились на пиксели. У ssd1306 ведь минимальный объект позицирования это байт. Тогда да, нужно сначала в регистрах или оперативной памяти подготовить растянутый глиф фонта и затем выводить дважды. Сейчас проверил вышеупомянутый алгоритм "растягивания" одного байта на avr-gcc и сравнил с "обычным".

    Новый:
    35 команд / 47 тактов

    Обычный:
    20 команд / 105 тактов

    Когда есть место на флэше, лучше "новый" алгоритм
    Когда не хватает 10-15 байт, то может спасти "обычный".
    Для аттини13 актуально.


  2. #12

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,025
    Забыл проверить решение "в лоб" на ассемблере. (=
    Код:
    ; glyph expansion
    ldi r1, 0b10101010 ; source byte    1
    ldi r2, 0b00000000   ; L dest word    1
    ldi r3, 0b00000000   ; H dest word        1
    sbrс r1, 0 ; skip if bit 0 reset    1/2
    ori r2, 0b00000011            1
    sbrс r1, 1 ; skip if bit 1 reset    1/2
    ori r2, 0b00001100            1
    sbrс r1, 2 ; skip if bit 2 reset    1/2
    ori r2, 0b00110000            1
    sbrс r1, 3 ; skip if bit 3 reset    1/2
    ori r2, 0b11000000            1
    sbrс r1, 4 ; skip if bit 4 reset    1/2
    ori r3, 0b00000011            1
    sbrс r1, 5 ; skip if bit 5 reset    1/2
    ori r3, 0b00001100            1
    sbrс r1, 6 ; skip if bit 6 reset    1/2
    ori r3, 0b00110000            1
    sbrс r1, 7 ; skip if bit 7 reset    1/2
    ori r3, 0b11000000            1
    ; result in r3:r2
    ; 19 commands (20-27 cycles)
    Однако.

  3. #13

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,025
    Дополнительное бесполезное сообщение. (= Проверил обсуждаемое расширение шрифта (реализация "в лоб"). Заодно, немного подумав, проредил код. В итоге байт тридцать добавилось свободных. Попробовал прошивку с датчиком и дисплеем 128х64. Прилагаю содержимое thermometer.hex ( хекс, если кто забыл, представляет собой набор символов ascii, так что можно просто в текстовом редакторе создать файлик с нужным именем и скопипастить в него код прошивки.)
    Код:
    :100000003AC008C007C006C005C004C003C002C093
    :1000100002C000C0F5CF0000189507DA1281018DEB
    :1000200014AF3E5149453E000000427F4000006150
    :10003000514946002141454B31001814127F1000F0
    :100040002745454539003C4A4949300001710905B9
    :100050000300364949493600064949291E00006017
    :10006000600000000000060906003E4141412200F8
    :100070000008080800003ED10027009360000093AC
    :100080006100009362000093630020D1AFE0BFE7FE
    :10009000C3E0D4E0ACD00091640000FF02C02DE3C7
    :1000A000DFD0E0916000F09161009927B7D02AE39A
    :1000B000D7D0E0916200F09163009FEFAFD02BE3C7
    :1000C000CFD02CE3CDD032D048D0DFCF089558E048
    :1000D00010FF08C0B99AC19880D1B998C19870D161
    :1000E00076D107C0B99AC1986BD171D1B998C1982E
    :1000F00074D116955A9571D159F70895112758E082
    :100100001695B99AC19869D1B998C19866D165D147
    :10011000B19B01C0106854D15A9591F70895B99ACE
    :10012000C19847D1B998C19844D10895F8DF1CEC23
    :10013000CEDF14E4CCDF25D1F2DF1CECC8DF1EEBF0
    :10014000C6DFDCDFE12FDADFA12FD8DFD7DFD6DF94
    :10015000D5DFD4DFF12FE3DF08950027009364009B
    :10016000A0FF07C00FEF00936400E0950F2FF1E1AF
    :10017000F01BCC27DD27E1FD2196E2FD2296E3FD71
    :100180002496E4FD2896E5FD6096E6FDA096E7FD41
    :10019000EF96E7FD2196C0936000D0936100AA27F7
    :1001A000BB27A0E1B7E20F2F61E7A61B62E0B60B09
    :1001B0000A95D1F70A2E1B2E0AE0302E05D0409268
    :1001C00062005092630008952224552444244394ED
    :1001D0008894001C111C221C10F0231418F0231802
    :1001E000089401C08894441C551C90F7089578E742
    :1001F00092D0A1D010E0A6D010E2A4D011E0A2D0FD
    :1002000011E2A0D01A2F9ED01B2F9CD012E29AD0C0
    :100210001C2F98D01D2F96D087D008958827FF23B4
    :1002200009F4E4362FE223958894E456F040D8F799
    :1002300091FD03C0203311F08FEF12D0EC592FE263
    :1002400023958894EA50E0F791FD04C0203311F41F
    :10025000882309F005D0E65F2E2F205D01D0089598
    :10026000AF93BF93EF93FF932F930F93F0E0E2E2EE
    :100270002053002736E0E20FF01F3A95E1F778E7C8
    :100280004AD059D010E45ED036E01491AA2758E045
    :1002900017FF01C0A360AA0FBB1FAA0FBB1F110F3E
    :1002A0005A95B1F71A2F4ED01B2F4CD01A2F4AD087
    :1002B0001B2F48D03A9511F03196E7CF35D00F91EA
    :1002C0002F91FF91EF91BF91AF910895A0E0BFE70B
    :1002D000C0E0D7E08CDF8BDFC0E0D4E078E71BD054
    :1002E0002AD010E42FD011272DD0C150D040D9F7FB
    :1002F0001BD00895EAE1F0E03491319678E70BD015
    :100300001AD010E01FD014911DD03A9511F03196FB
    :10031000FACF0AD00895B39BFECFBC9AC4980000D0
    :10032000BB9AC39800000895BB98C398B39BFECFB7
    :10033000BC98C4980895172F05D00895172F116001
    :1003400001D0089558E017FF03C0BC98C49803C0BB
    :10035000BC9AC4980000BB98C398B39BFECF000022
    :10036000BB9AC39800000000110F5A9561F7BC9822
    :10037000C498BB98C398B39BFECFBB9AC3980000A8
    :10038000089500E705BFF894A89501EE01BD7894A3
    :1003900088950000F894A89506E901BD789400E4DA
    :1003A00005BF089593E69F9304D09F919A95D9F73E
    :1003B000089590E19F9304D09F919A95D9F708955D
    :1003C00095E09F9304D09F919A95D9F708959AE06C
    :1003D00004D000009A95E1F7089500000000089508
    :00000001FF

  4. #14

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    1,463
    Позывной
    LZ2WSG
    Код продолжает не загружаться в Proteus-e и выдает ошибку. Что-то удаляете/не добавляете в WATCHDOG.
    PC=0x038C. [AVR WATCHDOG] Incorrect watchdog timer setup sequence. [U1]
    С другим такой проблемы нет.

  5. #15

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,025
    Да, я помню прошлый случай, когда делился своей интерпретацией даташита. Формально это не должно быть ошибкой, но из двух интерпретаций нужно выбирать наиболее ограничивающую, ибо "так написано в DS" надёжный козырь. Сейчас, когда есть лишние байты, можно попробовать добавить "ненужные" команды к режиму энергосбережения, чтобы пройти протеус-тест. Может сегодня и попробую.

    Добавлено через 54 минут(ы):

    Дополнил вотчдог предварительными состояниями регистров при активации и смене прескалера. Лаба разобрана, на железе восьмисекундный уход в максимально экономичный режим между опросами датчика уже не проверить, вся надежда на Протеус. (=

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

    Код:
    :100000003AC008C007C006C005C004C003C002C093
    :1000100002C000C0F5CF0000189507DA1281018DEB
    :1000200014AF3E5149453E000000427F4000006150
    :10003000514946002141454B31001814127F1000F0
    :100040002745454539003C4A4949300001710905B9
    :100050000300364949493600064949291E00006017
    :10006000600000000000060906003E4141412200F8
    :100070000008080800003ED10027009360000093AC
    :100080006100009362000093630020D1AFE0BFE7FE
    :10009000C3E0D4E0ACD00091640000FF02C02DE3C7
    :1000A000DFD0E0916000F09161009927B7D02AE39A
    :1000B000D7D0E0916200F09163009FEFAFD02BE3C7
    :1000C000CFD02CE3CDD032D048D0DFCF089558E048
    :1000D00010FF08C0B99AC19883D1B998C19873D15B
    :1000E00079D107C0B99AC1986ED174D1B998C19825
    :1000F00077D116955A9574D159F70895112758E07C
    :100100001695B99AC1986CD1B998C19869D168D13E
    :10011000B19B01C0106857D15A9591F70895B99ACB
    :10012000C1984AD1B998C19847D10895F8DF1CEC1D
    :10013000CEDF14E4CCDF25D1F2DF1CECC8DF1EEBF0
    :10014000C6DFDCDFE12FDADFA12FD8DFD7DFD6DF94
    :10015000D5DFD4DFF12FE3DF08950027009364009B
    :10016000A0FF07C00FEF00936400E0950F2FF1E1AF
    :10017000F01BCC27DD27E1FD2196E2FD2296E3FD71
    :100180002496E4FD2896E5FD6096E6FDA096E7FD41
    :10019000EF96E7FD2196C0936000D0936100AA27F7
    :1001A000BB27A0E1B7E20F2F61E7A61B62E0B60B09
    :1001B0000A95D1F70A2E1B2E0AE0302E05D0409268
    :1001C00062005092630008952224552444244394ED
    :1001D0008894001C111C221C10F0231418F0231802
    :1001E000089401C08894441C551C90F7089578E742
    :1001F00092D0A1D010E0A6D010E2A4D011E0A2D0FD
    :1002000011E2A0D01A2F9ED01B2F9CD012E29AD0C0
    :100210001C2F98D01D2F96D087D008958827FF23B4
    :1002200009F4E4362FE223958894E456F040D8F799
    :1002300091FD03C0203311F08FEF12D0EC592FE263
    :1002400023958894EA50E0F791FD04C0203311F41F
    :10025000882309F005D0E65F2E2F205D01D0089598
    :10026000AF93BF93EF93FF932F930F93F0E0E2E2EE
    :100270002053002736E0E20FF01F3A95E1F778E7C8
    :100280004AD059D010E45ED036E01491AA2758E045
    :1002900017FF01C0A360AA0FBB1FAA0FBB1F110F3E
    :1002A0005A95B1F71A2F4ED01B2F4CD01A2F4AD087
    :1002B0001B2F48D03A9511F03196E7CF35D00F91EA
    :1002C0002F91FF91EF91BF91AF910895A0E0BFE70B
    :1002D000C0E0D7E08CDF8BDFC0E0D4E078E71BD054
    :1002E0002AD010E42FD011272DD0C150D040D9F7FB
    :1002F0001BD00895EAE1F0E03491319678E70BD015
    :100300001AD010E01FD014911DD03A9511F03196FB
    :10031000FACF0AD00895B39BFECFBC9AC4980000D0
    :10032000BB9AC39800000895BB98C398B39BFECFB7
    :10033000BC98C4980895172F05D00895172F116001
    :1003400001D0089558E017FF03C0BC98C49803C0BB
    :10035000BC9AC4980000BB98C398B39BFECF000022
    :10036000BB9AC39800000000110F5A9561F7BC9822
    :10037000C498BB98C398B39BFECFBB9AC3980000A8
    :10038000089500E705BFF894A89508E101BD09EEBE
    :1003900001BD789488950000A89508E101BD01EAA7
    :1003A00001BD789400E405BF089593E69F9304D0BF
    :1003B0009F919A95D9F7089590E19F9304D09F91CA
    :1003C0009A95D9F7089595E09F9304D09F919A95B7
    :1003D000D9F708959AE004D000009A95E1F70895BE
    :0603E0000000000008957A
    :00000001FF

    Последний раз редактировалось ozforester; 02.09.2023 в 21:09.

  6. #16

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

Название:	thermometer.png 
Просмотров:	76 
Размер:	5.5 Кб 
ID:	392302

  7. #17

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    1,463
    Позывной
    LZ2WSG
    В Proteus AVR WATCHDOG ошибка опять есть. Там не работает.
    В реальное устройство: 3-версии кода работают. Яркость очень низкая. Есть знак "минус": -26.312oC (а в комнате тепло).
    ---
    Не проще ли исходный формат кода поместить в hex файл и прикрепить к сообщение? Максимум его заархивировать, если редактор форума не видит.

  8. #18

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    1,463
    Позывной
    LZ2WSG
    Температура повышена примерно на 4,7 градуса. Есть время между запроса на чтение и преобразование? (tCONV = 750 ms для 12 bit)
    Последний раз редактировалось veso74; 03.09.2023 в 14:53.

  9. #19

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

    По минусу. Возможно датчик не ds18s20. У меня все началось с того, что оказался датчик, на котором маркировка dallas ds1820, а регистры как у ds18s20. То ли перемаркировка, то ли переходная модель такая. У ds18s20 первый регистр целиком отдан под знак, а у ds18b20 в нем ещё присутствуют несколько битов температуры. У меня в коде целиком проверяется значение первого регистра на его ненулевое значение, и если там биты температуры присутствуют, то получится как бы минус. Family code датчика в коде не читается и не проверяется по понятным причинам. Думаю в этом беда. Для ds18b20 код немного меньше, может и на си прошивка получиться для аттини13.

    По яркости, обращал внимание, что с одним и тем же значением регистра дисплеи светят по разному. Одни можно совсем потушить нулевым значением, другие светятся с ним в половину яркости. Была единичка, сейчас устровнил примарно на серединку 0x80. С низкой яркостью меньше потребление энергии, хотя особого смысла в этой экономии пока нет.

    p.s. Вот по второму сообщению как раз подтверждается дополнительно, что температура разбита по 0 и 1 регистру. Хотя в любом случае, начинать нужно с датчика и его опроса, например, с ардуинки на предмет family.
    ..
    The first 8 bits are a 1-Wire family code (DS18B20 code is 28h)
    ..
    the ROM code contain the DS18S20’s 1-Wire family code: 10h.
    Вложения Вложения
    • Тип файла: zip ther.zip (1.4 Кб, Просмотров: 69)
    Последний раз редактировалось ozforester; 03.09.2023 в 15:26.


  10. #20

    Регистрация
    12.09.2006
    Адрес
    Болгария, Силистра, KN34PC
    Сообщений
    1,463
    Позывной
    LZ2WSG
    У меня DS оригинал из проверенного магазина. С Arduino работает с проверка ROM code нормально. На AVR, STM8/32 через Arduino, PIC работает без проверки, показывает нормально. Должно быть только время между запросом на чтение и преобразованием. А и замеры Temp нормално когда сделани через 2...5 секунд или больше. При более короткое время наблюдаю "самонагревание" датчика.

    С ther.zip ничего не изменилось.
    ---
    Нет, в Proteus ошибка есть за меньший период.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	err.jpg 
Просмотров:	44 
Размер:	122.9 Кб 
ID:	392313  
    Последний раз редактировалось veso74; 03.09.2023 в 15:47.

Страница 2 из 7 ПерваяПервая 12345 ... ПоследняяПоследняя

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

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

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

Ваши права

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