Автор Тема: Электрофокусёр  (Прочитано 157716 раз)

Оффлайн passer_by

  • Global Moderator
  • Академик
  • *****
  • Сообщений: 1534
    • Астро-бродяга
Re: Электрофокусёр
« Ответ #135 : Сентября 19, 2012, 13:13:35 »
 :) Я, так понимаю, прграмистов на нашем форуме больше чем астрономов.  ;)
Нет, конечно, большое всем спасибо за разъяснения. Надо дальше мне разбираться. Если упрусь во что ни будь, еще буду спрашивать.
Просто тяжело переходить на все сразу. С  PIC_ами как то по проще. Те же даташиты... Для PIC_ов даже с моим знанием английского легко определяю имя нужного регистра и какие биты как нужно устанавливать для работы периферии. В AVR_ках путаюсь, как то вяло прописано. Для USART  в одних местах прописано, что для задания скорости приемо/передачи регистр UBRR, но с ним  компилятор выдает ошибку. В других местах вроде UCSRA, UCSRB... Как туда писать, пока не разобрался. Ну и с Бэйсика на С ..... В бэйсике 80% моих потребностей в программировании покрыта спец.командами. И не надо думать о регистрах, задержках.... Ну посмотрим, дальше бум мучиться :)
Тал 200К, Тал 75R, ED 80, EQ6 Pro, Lamegon 8/100B, QHY8, QHY6.

Оффлайн halx

  • Профессор
  • *****
  • Сообщений: 511
  • Александр
    • DobMod
Re: Электрофокусёр
« Ответ #136 : Сентября 20, 2012, 01:27:24 »
Может завести нам тему типа "ликбез по программированию"? Как считаете?
MY SKY TODAY @+37.89509,-122.30699,+63m:

Zhumell Dob 12", Meade ETX-125, AstroScan 100

Оффлайн Aleksey_M

  • Профессор
  • *****
  • Сообщений: 655
  • Houston, we've got a problem!
Re: Электрофокусёр
« Ответ #137 : Сентября 20, 2012, 09:46:48 »
Может завести нам тему типа "ликбез по программированию"? Как считаете?
Я только "ЗА"!
Только вспомнить, сколько времени я потратил на самоизучение языка Си и премудростей программирования микроконтроллеров... :)
Чую, много кто занимается конструированием электронных примочек для скопов (минимум двое)!
SW SKP1501, МТ-3S

Оффлайн passer_by

  • Global Moderator
  • Академик
  • *****
  • Сообщений: 1534
    • Астро-бродяга
Re: Электрофокусёр
« Ответ #138 : Сентября 20, 2012, 10:38:13 »
(минимум двое)!
:)
Ну тему не тему, можно и здесь продолжить на конкретном примере. Многие примеры по фокусеру попадутся.  Я вижу такие этапы: Подключение LCD, обеспечение связи с компьютером по USART, управление шаговыми двигателями, реализация интерфейса 1Ware...
Сейчас мусолю схему подключения LCD. Налетел на такую конструкцию - bit_is_set(c, 7). Разобрался, что этот макрос проверяет установлен ли бит 7 в байте "с" в 1. Это вроде из стандартных библиотек Си. Где то можно посмотреть эти библиотеки и их применение? Желательно на русском.
Тал 200К, Тал 75R, ED 80, EQ6 Pro, Lamegon 8/100B, QHY8, QHY6.

Оффлайн Aleksey_M

  • Профессор
  • *****
  • Сообщений: 655
  • Houston, we've got a problem!
Re: Электрофокусёр
« Ответ #139 : Сентября 20, 2012, 11:02:17 »
Налетел на такую конструкцию - bit_is_set(c, 7). Разобрался, что этот макрос проверяет установлен ли бит 7 в байте "с" в 1. Это вроде из стандартных библиотек Си. Где то можно посмотреть эти библиотеки и их применение? Желательно на русском.
А не проще и нагляднее:
if ((bait_c&0x80)==0x80) {инструкция;}
else {}
Здесь конкретно по логическому и выделяем бит и смотрим за равенством логической 1
Или чуть универсальнее:
if ((bait_c>>bit)&1==1) {}
Здесь байт сдвигается до нужного бита (>>bit), все старшие биты обнуляются (&1) кроме нулевого и идет сравнение с 1.
SW SKP1501, МТ-3S

Оффлайн Monoid

  • Global Moderator
  • Доцент
  • *****
  • Сообщений: 456
Re: Электрофокусёр
« Ответ #140 : Сентября 20, 2012, 12:37:28 »
Можно даже ещё проще: if (bait_c&0x80) ...
Ведь if проверяет, равно значение нулю или нет.

Оффлайн Aleksey_M

  • Профессор
  • *****
  • Сообщений: 655
  • Houston, we've got a problem!
Re: Электрофокусёр
« Ответ #141 : Сентября 20, 2012, 13:05:19 »
Можно даже ещё проще: if (bait_c&0x80) ...
Ведь if проверяет, равно значение нулю или нет.
Можно и так.
У мну глаз спотыкается, когда нет равно  ;D
SW SKP1501, МТ-3S

Оффлайн passer_by

  • Global Moderator
  • Академик
  • *****
  • Сообщений: 1534
    • Астро-бродяга
Re: Электрофокусёр
« Ответ #142 : Сентября 20, 2012, 13:28:59 »
Попробовал. Прописал if (c&0x80), все работает  :) То есть в таких случаях можно не пользоваться библиотекой, где bit_is_set. Мне даже попадалось где то, когда искал что это такое, что конструкция bit_is_set устарела и ей лучше не пользоваться.
P.S. А правильнее как указывать переменную с -  bait_c или просто можно просто с.
« Последнее редактирование: Сентября 20, 2012, 13:32:10 от passer_by »
Тал 200К, Тал 75R, ED 80, EQ6 Pro, Lamegon 8/100B, QHY8, QHY6.

Оффлайн Aleksey_M

  • Профессор
  • *****
  • Сообщений: 655
  • Houston, we've got a problem!
Re: Электрофокусёр
« Ответ #143 : Сентября 20, 2012, 14:19:52 »
P.S. А правильнее как указывать переменную с -  bait_c или просто можно просто с.
Как вам угодно! Это ИМЯ переменной, которое может быть любым.
SW SKP1501, МТ-3S

Оффлайн Aleksey_M

  • Профессор
  • *****
  • Сообщений: 655
  • Houston, we've got a problem!
Re: Электрофокусёр
« Ответ #144 : Сентября 20, 2012, 14:25:48 »
Попробовал. Прописал if (c&0x80), все работает
Если я правильно понимаю, то в настоящей конструкции c&0x80 сравнивается с единицей, что всегда будет ложью.
0xFF&0x80=0x80 а не 1. Выделяется старший (0х80) бит.

Если конструкция if (c&0x80) работает, то скорей всего компилятор сравнивает с ненулем, а не с единицей.
Поправьте меня, если не прав.
SW SKP1501, МТ-3S

Оффлайн passer_by

  • Global Moderator
  • Академик
  • *****
  • Сообщений: 1534
    • Астро-бродяга
Re: Электрофокусёр
« Ответ #145 : Сентября 20, 2012, 14:52:34 »
Да, сравнение идет на наличие 1.
Тал 200К, Тал 75R, ED 80, EQ6 Pro, Lamegon 8/100B, QHY8, QHY6.

Оффлайн Aleksey_M

  • Профессор
  • *****
  • Сообщений: 655
  • Houston, we've got a problem!
Re: Электрофокусёр
« Ответ #146 : Сентября 20, 2012, 18:58:00 »
Да, сравнение идет на наличие 1.
Т.е. if (c&0x80) не рулит?
В таком случае удобно использовать, если не хотите адиничку писать ;)
if ((C>>bit)&1)
SW SKP1501, МТ-3S

Оффлайн Monoid

  • Global Moderator
  • Доцент
  • *****
  • Сообщений: 456
Re: Электрофокусёр
« Ответ #147 : Сентября 20, 2012, 19:00:38 »
В C есть лишь одно ложное значение -- 0.  Все остальные являются истинными.  Поэтому сравнивается с нулём.

Оффлайн Aleksey_M

  • Профессор
  • *****
  • Сообщений: 655
  • Houston, we've got a problem!
Re: Электрофокусёр
« Ответ #148 : Сентября 20, 2012, 19:04:57 »
В C есть лишь одно ложное значение -- 0.  Все остальные являются истинными.  Поэтому сравнивается с нулём.
Т.е. запись if (c&0x80) тождественна записи if ((c&0x80)!=0) ?
SW SKP1501, МТ-3S

Оффлайн passer_by

  • Global Moderator
  • Академик
  • *****
  • Сообщений: 1534
    • Астро-бродяга
Re: Электрофокусёр
« Ответ #149 : Сентября 20, 2012, 20:23:13 »
Может быть не правильно выразился. У меня там проверяется именно истинность выражения, т. е. не Ø
Тал 200К, Тал 75R, ED 80, EQ6 Pro, Lamegon 8/100B, QHY8, QHY6.