Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

У меня нету. :wink:
Docendo discimus
Контактная информация:
Реклама
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

Сообщение Челюскин »

очень жаль :cry: может еще у кого найдется :lol:
Лень - двигатель прогресса!
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Исходник чего? 1-wire - обмена? Есть. Если сумеешь разобраться :)
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

1-wire сложноват для новичков. Даже я его с горем пополам осилил.
Исходников у меня не осталось, так как делалось только для нескольких устройств и потом были удалены по случайности.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Ищите статьи ARV на этом сайте. Там и 1-wire раскурен, в проектах есть очень грамотная и раскомментированная библиотека на асме, можно просто подцепить к проекту и пользоваться. Материала - куча. Было бы желание.
Реклама
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

DX168B писал(а):... Даже я его с горем пополам осилил.
...
:shock:
это показатель ...
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Да мне пока оно не надо. Протокол я уже знаю. Сам писал программу. Только значения периодов и задержек позабывал.
Но ничего не помешает вспомнить, если это потребуется. Последний раз я имел дело с аналоговым термодатчиком, встроенным в IGBT модуль. Никаких one-wire не потребовалось.
Только один инструментальный операционник и внешний АЦП, связанный с МК по I2C. :)
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

DX168B писал(а):1-wire сложноват для новичков.
По мне так ничего сложного.
Если, конечно, по-минимому: без проверки контрольной суммы и без реализации нескольких устройств на одной шине :)
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

А я вычислял контрольную сумму табличным методом. :))) Быстро, но ест память и менее надёжно.
Хотя, в каком-то аппноуте видел и математический тип вычисления. Этот способ ест меньше памяти, более надёжен, но ест процессорное время.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город

Сообщение Мастер Ломастер »

DX168B писал(а):А я вычислял контрольную сумму табличным методом. :))) Быстро, но ест память и менее надёжно.
а в чем ненадежность табличного метода?!
битва с дураками проиграна, победители торжествуют. слава победителям!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

DX168B писал(а):А я вычислял контрольную сумму табличным методом.
Вот это жестоко! :shock:
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Что сложного-то в этом CRC?

Код: Выделить всё

;-------------------------------------------------------------------------------
;  выполняет подсчет CRC по алгоритму 1-Wire
;  вход: r0 - считанный байт
;  выход: CRC - содержит подсчитанную сумму
;  портит: регистр Z
;  примечание: перед первым вызовом CRC необходимо обнулить
;-------------------------------------------------------------------------------
crc8:
  push r0
  ldi wiretemp,8
  mov wireres,wiretemp
r1w_loop_crc:
  lds wiretemp,CRC
  eor r0,wiretemp
  ror r0
  mov r0,wiretemp
  brcc zero
  ldi wiretemp,0x18
  eor r0,wiretemp
zero:
  ror r0
  sts CRC,r0
  pop r0
  ; 4 следующие команды делают циклический сдвиг r0
  push r0
  ror r0
  pop r0
  ror r0
  push r0
  dec wireres
  brne r1w_loop_crc
  pop r0
  lds r0,CRC
ret
(тоже умыкнул у ARV :))
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Gudd-Head писал(а):
DX168B писал(а):А я вычислял контрольную сумму табличным методом.
Вот это жестоко! :shock:
Зато быстро :)
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Мастер Ломастер писал(а):а в чем ненадежность табличного метода?!
Ненадёжность была именно в моём походе к этому виду вычисления на тот момент. Методом частичного перебора.
Был риск того, что кривые данные могли пройти проверку на целостность. :facepalm:
Потом нарвался на статьи ARV и сделал вычисление по его методикам.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город

Сообщение Мастер Ломастер »

DX168B писал(а):Ненадёжность была именно в моём походе к этому виду вычисления на тот момент.
ну, тогда ладно :) а то я уж невесть что подумал...
битва с дураками проиграна, победители торжествуют. слава победителям!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6332
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

DX168B писал(а):
Мастер Ломастер писал(а):а в чем ненадежность табличного метода?!
Ненадёжность была именно в моём походе к этому виду вычисления на тот момент. Методом частичного перебора.
Так это недостаток не метода, а его кривой реализации. Если позволяет память, он наиболее эффективен в смысле быстродействия.
Что касается надежности - независимо от метода, 100%-й гарантии от возможного пропуска ошибки нет.
IM1
Грызет канифоль
Аватара пользователя
Сообщения: 268
Зарегистрирован: Вт фев 16, 2010 12:10:38
Откуда: Воронеж, Россия

Сообщение IM1 »

ploop писал(а):Что сложного-то в этом CRC?
Действительно, как-то сложновато, я применяю вот такую подпрограмму и таблица не требуется:

Код: Выделить всё

;-------------------------------------------------------------------------------
;  вход: outByte
;  выход: CRC
;  дополнительно: регистры temp и temp1 
;-------------------------------------------------------------------------------
do_crc:						; Программа обновления CRC8 
	ldi     temp, 0x0C
	ldi     temp1, 8
CRC8_l2: 
	ror     outByte
	ror     CRC
	brcc    CRC8_l3
	subi    CRC, 0x80		; Инверсия старшего бита накопителя
CRC8_l3:
	brpl    CRC8_l4
	eor     CRC, temp
CRC8_l4:
	dec     temp1
	brne    CRC8_l2
	ret
;-------------------------------------------------------------------------------
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Или так:

Код: Выделить всё

CRC8:
	mov	r16, r17
	lds	r16, CRC
	eor	r17, r16
	ldi	ZH, high(CRCarray)
	ldi	ZL, low(CRCarray)
	clc
	rol	ZL
	rol	ZH
	add	ZL, r17
	ldi	r16,0
	adc	ZH, r16
	lpm r17, Z
	sts	CRC, r17
	ret
;------------------------------------------------------------------
CRCarray:
	.db	0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65
	.db 	157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220
	.db 	35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98
	.db 	190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255
	.db 	70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7
	.db 	219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154
	.db 	101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36
	.db 	248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185
	.db 	140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147,205
	.db 	17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80
	.db 	175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238
	.db 	50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115
	.db 	202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139
	.db 	87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22
	.db 	233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168
	.db 	116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53
I am DX168B and this is my favourite forum on internet!
Контактная информация:
IM1
Грызет канифоль
Аватара пользователя
Сообщения: 268
Зарегистрирован: Вт фев 16, 2010 12:10:38
Откуда: Воронеж, Россия

Сообщение IM1 »

DX168B писал(а):Или так:
Жестко, ну это если ресурсы девать некуда...
У меня 11 строк программы, у Вас 14 плюс 256 байт памяти, в чем профит?
Если в скорости, то тоже непонятно, тот же DS18B20 почти секунду температуру замеряет.
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

А если за эту секунду надо ещё много чего успеть сделать?
У меня никогда не получалось полностью забить ПЗУ МК, как бы я не старался. Максимум мне удалось забить 70% из 2хкилобайтной тиньки(26). Программа и так была нафарширована. Так что памяти в МК достаточно, а вот потеря быстродействия - это другое.

PS: Заметил, что многие борются за каждый байт ПЗУ. Лично я ищу компромисс между объёмом и быстродействием с перевесом в сторону быстродействия. Если есть лишняя память, так почему же её не использовать, для получения быстродействия.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Ответить

Вернуться в «AVR»