Obam 38 9 июля, 2015 Опубликовано 9 июля, 2015 (изменено) · Жалоба Вот почему MSB не нарисовать слева? Арабы мы что ли? И в десятичной и 16-ричной записи правый разряд младший… Изменено 9 июля, 2015 пользователем Obam Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lerk 0 9 июля, 2015 Опубликовано 9 июля, 2015 · Жалоба Вот почему MSB не нарисовать слева? Арабы мы что ли? И в десятичной и 16-ричной записи правый разряд младший… потому что осциллограф. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 9 июля, 2015 Опубликовано 9 июля, 2015 · Жалоба Не флуда ради, но на рисунке регистры, а не осциллограф, тем более если MSB-first то и развертка слева :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lerk 0 9 июля, 2015 Опубликовано 9 июля, 2015 · Жалоба Не флуда ради, но на рисунке регистры, а не осциллограф, тем более если MSB-first то и развертка слева :) На рисунке указано, что LSB(МЗР)-first таки. А в целом, меня не парит. Вообще странно на таком форуме видеть возмущение наличию разных стандартов записи: они были придуманы еще до нас. А что касается осциллографа, то намек был на то, что я последнее время работаю с ним много и мне удобнее записывать данные 1-к-1. Если вам удобнее в голове постоянно делать преобразования bin2hex, hex2bin, reverse - ваше право :-) Я же остаюсь при своём. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 9 июля, 2015 Опубликовано 9 июля, 2015 · Жалоба А вот с семибитными регистрами проблема.А что за регистры? Вообще странно на таком форуме видеть возмущение наличию разных стандартов записи: они были придуманы еще до нас. Что за стандарты? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavel-pervomaysk 0 9 июля, 2015 Опубликовано 9 июля, 2015 · Жалоба На асме. Такт по фронту. ; LCD names pinouts .equ LCD = PORTB ; Порт .equ clk = PB0 ; вывод тактов .equ dat = PB1 ; вывод данных send_7bits: ; push loop ; Save loop in STACK ldi loop,7 ; bit counter andi tmp,0x7F ; Чистим 7й ненужный бит out_c: ; clc ; clearing carry flag ror tmp ; tmp =>> 1 ( LSB first ) brcc d_zer ; Branch if Carry flag eual zero! sbi lcd,dat ; DATA -> 1 rjmp d_one ; d_zer: ; cbi lcd,dat ; DATA -> 0 d_one: ; sbi lcd,clk ; CLK -> 1 cbi lcd,clk ; CLK -> 0 dec loop ; bitcounter = -1 brne out_c ; pop loop ; Restore loop from STACK ret ; reеurn Насколько я знаю, то регистр без CS (74HC164) запоминает последние такты. К примеру их туда можно плюнуть и 1000, отобразятся только последние. Если нужна скорость по аппаратному SPI, то выше уже показали как это сделать, собрать в слово свои 28 бит, Биты ([31...28] для MSB first), ([3...0] LSB first) очистить, и слать по очереди 4 байта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 9 июля, 2015 Опубликовано 9 июля, 2015 · Жалоба Биты ([31...28] для MSB first), ([3...0] LSB first) очистить, и слать Зачем их очищать? На асме. Я бы так сделал: send_7bits: push loop ldi loop,7 ; bit counter out_c: cbi lcd,dat ; DATA -> 0 sbrc tmp,0 sbi lcd,dat ; DATA -> 1 ror tmp ; tmp =>> sbi lcd,clk ; CLK -> 1 dec loop ; bitcounter = -1 cbi lcd,clk ; CLK -> 0 brne out_c ; pop loop ; Restore loop from STACK ret ; return Сохранение/восстановление SREG добавить при необходимости. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uzzzer 0 10 июля, 2015 Опубликовано 10 июля, 2015 (изменено) · Жалоба А что за регистры? Регистры в матричном индикаторе HDSP2001,даташит во вложениях. Если нужна скорость по аппаратному SPI, то выше уже показали как это сделать, собрать в слово свои 28 бит, Биты ([31...28] для MSB first), ([3...0] LSB first) очистить, и слать по очереди 4 байта. Сейчас буду пробывать сделать и так и так. Только меня смущает вот что: Какое максимальное число можно передать таким способом? Допустим я склею 28(32) бита, потом резать по 4? Правильно? А вот склееное число, если оно будет не 32 бита, а например 255 бит или больше?К стати как лучше разобрать склееное число по 8 бит? HDSP_201X_datasheet.pdf Изменено 10 июля, 2015 пользователем uzzzer Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 10 июля, 2015 Опубликовано 10 июля, 2015 · Жалоба пробыватьНе стоит. Попробуйте пробовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uzzzer 0 10 июля, 2015 Опубликовано 10 июля, 2015 · Жалоба Не стоит. Попробуйте пробовать. Попробовал. Все получилось. На данном этапе вполне устраивает. Реализовал програмный SPI. void data_send(int qi, int *data, int n) { int c; for (int i=0;i<=n-1;i++) { c=data[(qi-1)+5*i]; for (int j=0;j<7;j++) { if ((c&0x40)==0x00) PORTA&=~_BV(DATA); else PORTA|=_BV(DATA); asm("nop"); PORTA&=~_BV(SCL); asm("nop"); PORTA|=_BV(SCL); asm("nop"); c=(c<<1); } asm("nop"); asm("nop"); } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться