Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2013, 06:38   #1
olenka1808las
Пользователь
 
Регистрация: 06.06.2013
Сообщений: 28
По умолчанию Сдвиговый регистр

Как описать на языке С работу сдвигового регистра,нужно перевести из последовательного кода в параллельный,16 битное число. МК AD7718

Последний раз редактировалось olenka1808las; 06.06.2013 в 06:52.
olenka1808las вне форума Ответить с цитированием
Старый 06.06.2013, 08:22   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

делаете цикл, и в цикле сдвигаете результат влево на шаг и прибавляете значение пина с которого производится ввод последовательных данных.

Код:
int value = 0;
for(int i=0;i<16;i++)
{
    value <<= 1;
    value += PORTA.AN1; // или как вы там читаете значение пина
}
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 07.06.2013, 08:54   #3
olenka1808las
Пользователь
 
Регистрация: 06.06.2013
Сообщений: 28
По умолчанию

[CODE]int value = 0;
почему равно 0?
olenka1808las вне форума Ответить с цитированием
Старый 07.06.2013, 09:00   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от olenka1808las Посмотреть сообщение
[CODE]int value = 0;
почему равно 0?
А что там по вашему должно быть??
При инициализации переменной для надежности обнуляем ее.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 07.06.2013, 09:07   #5
olenka1808las
Пользователь
 
Регистрация: 06.06.2013
Сообщений: 28
По умолчанию

Понятно. Я ноль в этом просто Скажите еще, пожалуйста, мне вот эти данные нужно считать по сигналу готовности RDY, по временной диаграмме,когда RDY=0, начинается чтение,ну и перевод из последовательного в параллельный. Как мне этот сигнал в программе приплести?
olenka1808las вне форума Ответить с цитированием
Старый 07.06.2013, 09:09   #6
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от olenka1808las Посмотреть сообщение
Понятно. Я ноль в этом просто Скажите еще, пожалуйста, мне вот эти данные нужно считать по сигналу готовности RDY, по временной диаграмме,когда RDY=0, начинается чтение,ну и перевод из последовательного в параллельный. Как мне этот сигнал в программе приплести?
покажите диаграмму. Там есть временная зависимость?
Сигнал же на ногу какую то приходит?
Опрашивайте состояние ноги, если вдруг там 0 то начинайте чтение.
Простейший if
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 07.06.2013, 09:19   #7
olenka1808las
Пользователь
 
Регистрация: 06.06.2013
Сообщений: 28
По умолчанию

Вот временная диаграмма
Изображения
Тип файла: jpg DSC_0352[1].jpg (56.4 Кб, 132 просмотров)
olenka1808las вне форума Ответить с цитированием
Старый 07.06.2013, 09:30   #8
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Ну вот с этого надо было начинать.

Код:
int value =0;
unsigned char SCLK_LAST_STATE = PORTA.AN1 // допустим это пин клок
// сохраняем состояние клока

if (RDY == 0)
   while (CS == 0)
      {
          // считывание происходит при переходе с нуля на 1
          if (SCLK_LAST_STATE == 0 && PORTA.AN1 == 1)
          {
                 value <<= 1;
                 value += PORTA.AN2; // считываем значение
          }
          SCLK_LAST_STATE = PORTA.AN1; // опять сохраняем состояние клока
      }
где то так будет происходить чтение
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 07.06.2013, 12:56   #9
olenka1808las
Пользователь
 
Регистрация: 06.06.2013
Сообщений: 28
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Ну вот с этого надо было начинать.

Код:
int value =0;
unsigned char SCLK_LAST_STATE = PORTA.AN1 // допустим это пин клок
// сохраняем состояние клока

if (RDY == 0)
   while (CS == 0)
      {
          // считывание происходит при переходе с нуля на 1
          if (SCLK_LAST_STATE == 0 && PORTA.AN1 == 1)
          {
                 value <<= 1;
                 value += PORTA.AN2; // считываем значение
          }
          SCLK_LAST_STATE = PORTA.AN1; // опять сохраняем состояние клока
      }
где то так будет происходить чтение
А где здесь отражено, что код 16-разрядный?
olenka1808las вне форума Ответить с цитированием
Старый 07.06.2013, 12:59   #10
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от olenka1808las Посмотреть сообщение
А где здесь отражено, что код 16-разрядный?
Вы вообще своим делом занимаетесь??
Диаграмму смотрели? где там отражено что код 16 разрядный?
читать будет пока идут клоки и удержан Chip select ... там разрядов может быть превеликое множество.
а int это аж 32 разряда, уж должно хватить ..
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регистр xaloooooo C# (си шарп) 2 16.11.2012 10:43
Регистр EBP ABCDEF1551 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 24 17.02.2012 01:43
Невыводит регистр ax DrHome Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 26.04.2010 00:08
Запись в регистр Vitek-pm Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 17.02.2010 04:00
регистр vitalik007 Общие вопросы Delphi 2 15.09.2007 02:41