Обсуждаем контроллеры компании Atmel.
Ответить

Re: Проблема AtTiny2313+ds18b20

Пт дек 29, 2017 09:31:06

Так динамика - динамике рознь.
8)
Если используется "посегментная"(растровая - как у многих китаяцев/упрощенных схем) то ток НЕ БОЛЕЕ 20мА.
Однако яркость и восприятие такого 4-х позиционного дисплея... НЕ ОЧЕНЬ...
И для обмена с далласами надо остановку регенерации делать...
:roll:

Re: Проблема AtTiny2313+ds18b20

Пт дек 29, 2017 11:48:57

не, в тине нет измерителей... опора есть, и к ней компаратор прицепить можно... и всё, вроде.
для обмена с далласами надо остановку регенерации делать...
:roll:
не, необязательно, можно с ней синхронно опрашивать, как говорят евреи "между капелек" :))

Re: Проблема AtTiny2313+ds18b20

Пт дек 29, 2017 11:51:31

Лучше с помощью UART. Пускай этим периферия занимается и у МК будет сколько угодно времени на другие дела.. Жаль что в авр полудуплексного режима UART нет, требуется два порта.

Re: Проблема AtTiny2313+ds18b20

Пт дек 29, 2017 12:26:30

ДСку можно только с помощью работы через UART одновременно с обслуживанием интенсивной регенерации светодиодного дисплея обрабатывать.
НО ... там "свои грабли" и вряд-ли для начинающего задача.
8)
в остальных случаях обязателен защищенный интервал на запрос/ответ и пересылку одного байта минимум.
:)

Re: Проблема AtTiny2313+ds18b20

Пт дек 29, 2017 12:28:46

третью страницу толчем воду в ступе...
без исходника - разговор ни о чем...

Re: Проблема AtTiny2313+ds18b20

Пт дек 29, 2017 12:30:19

Что там сложно в UART, я вас умоляю...
BOB51 писал(а):только с помощью работы через UART одновременно
И тут я не соглашусь. Точки в таймслоте можно сформировать от таймера, а между таймслотами тупи сколько угодно.

Добавлено after 45 seconds:
Starichok51 писал(а):разговор ни о чем...
Да хотя бы осциллограммы из протеуса.

Re: Проблема AtTiny2313+ds18b20

Пт дек 29, 2017 12:45:12

я проект сюда скидывал - там какраз от таймера регенерации всё и отталкивается

Re: Проблема AtTiny2313+ds18b20

Пт дек 29, 2017 21:06:58

Ответил ЛС.

Re: Проблема AtTiny2313+ds18b20

Сб дек 30, 2017 00:52:10

вот выкладываю исходник

Добавлено after 1 hour 27 minutes 4 seconds:
Все, разобрался, слишком длинные стробы были, по документации 15мкс - это максимум, ну я и сделал... так... 15... в общем тормознул... ну и очевидно, когда на грани - один датчик работает, другой - нет...
исправил на 3мкс - и все заработало.

Персональное спасибо - dr.doc - разобрался с его помощью!
Всем спасибо за участие!

Добавлено after 13 minutes 4 seconds:
ну чисто по китайски оне тоже волтметры/термометры на LED так ваяют- без внешних ключей(тока 2 сборки по 4 резистора на сегменты) и все работает(если индикатор яркий ) хитрость в том чтоб не превысить токи портов и мошу у чипа... но есть 1но...они VРЕФ делают внешний(прецизионик 1,2в) -иначе мерить будем прогоду в доме точне нагев самого мк...
кстати по слухам некоторые мк имеют свстроеный термодатчик и позволяют себя родимого вывести на дисплей...насчен указаного в заголовке не скажу...не копал так глубоко



я читал, что один выход (порт) контроллера тянет аж 40ма... 2 в параллели- получается - 80... использую только 7 сегментов, т.е. можно увелисить до 10ма, а с учетом динамической индикации - и побольше...
у меня сейчас приблизительно ток 5ма, или даже 4... - маловато, но видно... так что увеличить можно.
Вложения
main.asm
(5 KiB) Скачиваний: 363

Re: Проблема AtTiny2313+ds18b20

Вс дек 31, 2017 11:59:59

код можно сделать оптимальнее:
1. после того, как обработал отрицательное значение и загрузил знак минуса, делаешь переход в подпрограмму положительного значения, вот так:
otric_2:
rjmp polog_1

2. не надо 2 раза повторять код чтения байта.
делаешь подпрограмму чтения одного байта в любой свободный регистр.
подпрограммой 2 раза читаешь байт в этот регистр, из этого регистра перемещаешь сначала в lbyte, потом - в hbyte.

Re: Проблема AtTiny2313+ds18b20

Вс дек 31, 2017 14:17:29

Леонид_М Не забудьте установить указатель стека.
Код:
   LDI   R16,RAMEND
   OUT   SPL,R16

Хотя, посмотрел свежий DS такая установка сделано аппаратно. А раньше не было.

Re: Проблема AtTiny2313+ds18b20

Пн янв 01, 2018 20:45:06

код можно сделать оптимальнее:
1. после того, как обработал отрицательное значение и загрузил знак минуса, делаешь переход в подпрограмму положительного значения, вот так:
otric_2:
rjmp polog_1

2. не надо 2 раза повторять код чтения байта.
делаешь подпрограмму чтения одного байта в любой свободный регистр.
подпрограммой 2 раза читаешь байт в этот регистр, из этого регистра перемещаешь сначала в lbyte, потом - в hbyte.


да, вы правы, тут я переборщил... но это еще из-за того, что я все никак не мог добиться нормальной работы датчика.
у меня вообще такая мысль: записывать значение не а 2 регистра, а в 1 - младший полубайт старшего и старший - младшего - думаю, тоже уменьшит код... хотя может и не так существенно...

Добавлено after 10 minutes 36 seconds:
Леонид_М Не забудьте установить указатель стека.
Код:
   LDI   R16,RAMEND
   OUT   SPL,R16

Хотя, посмотрел свежий DS такая установка сделано аппаратно. А раньше не было.


да, тут я просто пока не разобрался, у меня было так:
ldi Temp,RamEnd
out SPL,Temp

но я что-то засомневался, ведь стек вроде как 2-х байтовый... и что делать со старшим байтом (если он есть тут) - я пока не выяснял, т.к. сначала занялся проблемой с датчиком.
Вот датчик заработал - теперь можно разбираться дальше.

Re: Проблема AtTiny2313+ds18b20

Вт янв 02, 2018 09:31:32

Различается размерность адресации ячеек стека и размерность помещаемых в него данных.
У тиньки 2313 адресация ячеек ОЗУ (а в оных и стек размещается) не превышает одного байта.
А помещаем мы в стек данные побайтово - адрес возврата двухбайтовый - следовательно "сожрет" две ячейки стека.
8)

Re: Проблема AtTiny2313+ds18b20

Вт янв 02, 2018 13:51:47

Леонид_М писал(а):думаю, тоже уменьшит код...
одинаково.
все равно читать 2 байта, а когда и в каком месте совмещать два полубайта - разницы нет.

Re: Проблема AtTiny2313+ds18b20

Вт янв 02, 2018 20:15:54

Различается размерность адресации ячеек стека и размерность помещаемых в него данных.
У тиньки 2313 адресация ячеек ОЗУ (а в оных и стек размещается) не превышает одного байта.
А помещаем мы в стек данные побайтово - адрес возврата двухбайтовый - следовательно "сожрет" две ячейки стека.
8)


это понятно, я про то, что не знаю, нужно ли старший байт стека задавать, хоть там физической памяти и нет, но при наличии какой-нибудь единицы в старшем байте стека будет адресовать в несуществующую область... я просто не знаю этих подробностей про этот МК.

Добавлено after 2 minutes:
Леонид_М писал(а):думаю, тоже уменьшит код...
одинаково.
все равно читать 2 байта, а когда и в каком месте совмещать два полубайта - разницы нет.


тогда - полтора байта, последние 4 бита - не читаем....

Re: Проблема AtTiny2313+ds18b20

Вт янв 02, 2018 20:28:35

Леонид_М писал(а):я про то, что не знаю, нужно ли старший байт стека задавать, хоть там физической памяти и нет,
Указатель стека в данном МК 8ми битный (SPL), т.е. регистра SPH нет и задавать старший байт указателя стека некуда, что логично.

Re: Проблема AtTiny2313+ds18b20

Вт янв 02, 2018 21:38:05

Леонид_М писал(а):я про то, что не знаю, нужно ли старший байт стека задавать, хоть там физической памяти и нет,
Указатель стека в данном МК 8ми битный (SPL), т.е. регистра SPH нет и задавать старший байт указателя стека некуда, что логично.


понял, спасибо...
естественно, если памяти не больше 256 байт - то 1 байта хватит, но меня смутило такое наименование: SPL - подумал, что если он есть, то и д.б. SPH, иначе был бы SP.
Я нижний забивал значением, а верхний не получилось - ругался, ну и пока плюнул на этот момент на фоне проблемы с самим датчиком.
Ответить