Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
21.03.2009, 18:43
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Код Грея, алгоритм ассемблер?
Кто то разбирался с кодом Грея?
Требуется переводить из Грея в b'xxxxxxxxxx' или в 0xXXX, (10 битный код). Это выход датчика.
Работает ли потетрадный перевод из Грея в бинарный(шестнадцатиричный)?
Перекодируем по таблице отдельно каждую тетраду и получаем результат в шестнадцатиричном? Или подскажите алгоритм. Нужен для АСМ, для Си видел алгоритм. Если что, буду его перелопачивать под АСМ.
то есть:
;Gray 010 = 0x010; hex
;Gray 01C = 0x018; hex
;Gray 109 = 0x10F; hex
;Gray 349 = 0x24F; hex
;Gray 5ED = 0x6B9; hex
;Gray СED = 0x8B9; hex
и так далее...
Шестнадцатеричное десятичное код Грея
00 0000 0 00 0000
01 0001 1 01 0001
02 0010 2 03 0011
03 0011 3 02 0010
04 0100 4 06 0110
05 0101 5 07 0111
06 0110 6 05 0101
07 0111 7 04 0100
08 1000 8 0C 1100
09 1001 9 0D 1101
0A 1010 10 0F 1111
0B 1011 11 0E 1110
0C 1100 12 0A 1010
0D 1101 13 0B 1011
0E 1110 14 08 1000
0F 1111 15 09 1001
|
|
|
|
21.03.2009, 18:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Когда-то читал, что особенность кода Грея - изменение только одного разряда при последовательном счете, такое кодирование снижает помехи при переключении каскадов. поэтому весь перевод - обычная таблица. Надеюсь, что это для оптического датчика?
|
|
|
|
21.03.2009, 19:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от MisterDi
|
Когда-то читал, что особенность кода Грея - изменение только одного разряда при последовательном счете, такое кодирование снижает помехи при переключении каскадов. поэтому весь перевод - обычная таблица. Надеюсь, что это для оптического датчика?
|
Да, это уже всё прочитал,
Датчик промышленый ЕНКОДЕР, выдаёт кодом Грея, ну вот такой купили без моего ведома. И теперь требуется подключить его к управляющему автомату, счиывать показания, которые пропорциональны перемещению.
Таблицей это понятно, но сьест килобайт FLASH. Может есть простой алгоритм. Потому и спрашиваю. Если короткого алгоритма нет, то придётся выделять FLASH.
|
|
|
|
21.03.2009, 21:28
|
|
Частый гость
Регистрация: 10.03.2007
Сообщений: 30
Сказал спасибо: 8
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
В свое время использовал код Грея для хранения данных 2-х байтового счетчика в EEPROM. Это удобно, т.к. при каждом увеличении счетчика на 1 изменения всегда происходят только в одном байте. Подробностей не помню, но исходники остались.
Прикрепленный файл: 4462808.rar
|
|
|
|
21.03.2009, 22:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от finiki
|
В свое время использовал код Грея для хранения данных 2-х байтового счетчика в EEPROM. Это удобно, т.к. при каждом увеличении счетчика на 1 изменения всегда происходят только в одном байте. Подробностей не помню, но исходники остались.
|
Спасибо. Напишу и проверю вместе с реальным счётчиком когда он ко мне попадёт.
Прикрепленный файл: 4462808.rar
|
|
|
|
21.03.2009, 22:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
|
__________________
Я, думаю, нужно подумать...
|
|
|
|
22.03.2009, 18:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
спасибо, просил АСМ
не грузится.
|
|
|
|
22.03.2009, 18:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
|
http://emp.byui.edu/FisherR/Downloads/encdr.asm
Пардон, пробел попал в ссылку, попробуйте....
Удачи!
__________________
Я, думаю, нужно подумать...
|
|
|
|
27.03.2009, 04:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Я написал своё. Если кому пригодится. (16 bit) Но можно легко любого размера.
Код:
|
;ПРЕОБРАЗОВАНИЕ В КОД ГРЕЯ
BINTOGRAY MOVF BINARYL,W
MOVWF GRAYCODEL
MOVF BINARYH,W
MOVWF GRAYCODEH
BCF STATUS,C
RRF GRAYCODEH
RRF GRAYCODEL
MOVF BINARYL,W
XORWF GRAYCODEL
MOVF BINARYH,W
XORWF GRAYCODEH
RETURN
;Преобразование кода Грея в двоичный код
GRAYTOBIN MOVF GRAYCODEH,W
MOVWF BINARYH
MOVF GRAYCODEL,W
MOVWF BINARYL
BCF BINARYH,7
BTFSC GRAYCODEH,7
BSF BINARYH,7
MOVLW 40
BTFSC BINARYH,7
XORWF BINARYH
MOVLW 20
BTFSC BINARYH,6
XORWF BINARYH
MOVLW 10
BTFSC BINARYH,5
XORWF BINARYH
MOVLW 8
BTFSC BINARYH,4
XORWF BINARYH
MOVLW 4
BTFSC BINARYH,3
XORWF BINARYH
MOVLW 2
BTFSC BINARYH,2
XORWF BINARYH
MOVLW 1
BTFSC BINARYH,1
XORWF BINARYH
MOVLW 80
BTFSC BINARYH,0
XORWF BINARYL
MOVLW 40
BTFSC BINARYL,7
XORWF BINARYL
MOVLW 20
BTFSC BINARYL,6
XORWF BINARYL
MOVLW 10
BTFSC BINARYL,5
XORWF BINARYL
MOVLW 8
BTFSC BINARYL,4
XORWF BINARYL
MOVLW 4
BTFSC BINARYL,3
XORWF BINARYL
MOVLW 2
BTFSC BINARYL,2
XORWF BINARYL
MOVLW 1
BTFSC BINARYL,1
XORWF BINARYL
RETURN |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:26.
|
|