Jump to content

SerYoga72

Members
  • Content Count

    8
  • Joined

  • Last visited

Community Reputation

0 Обычный

About SerYoga72

  • Rank
    Новенький

Информация

  • Город
    Дрезна

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    Контроллеры...

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Я кажется понял, если я использую #define то при компиляции данный код вставляется в место вызова и перехода не происходит, а в моем случае происходит переход в функцию и возврат из нее, то есть так мы экономим процессорные тики, я правильно понял? А для чего do-while ?
  2. Заставил я это работать )). Благодарю. Теперь вопрос для повышения общего уровня образованности так сказать, ну если Вы не против.: Вы предлагаете такую реализацию: У меня реализовано так: void SCL(uchar b) { if (b) (P1OUT |= BIT7); else P1OUT &= ~BIT7; } //Строб void CSB(uchar b) { if (b) (P1OUT |= BIT4); else P1OUT &= ~BIT4; } //Выбор чипа void SDO(uint b) { if (b) (P1OUT |= BIT6); else P1OUT &= ~BIT6; } //Передаваемые данные Чем Ваша реализация лучше? (Вопрос не для спора а для понимания) И для чего цикл do-while ? По поводу SDI (принимаемых данных) Вы правы, просто я данные пока не собирался принимать и написал на автопилоте P1OUT. Заранее благодарен. P.S. Как уменьшить межстрочный интервал в форуме?
  3. Пример Порт 1 Пин 0 P1OUT |= BIT0 ; // P1.0 установили в единицу P1OUT &= ~BIT0; // Установили в ноль Это хорошо для моргания одним светодиодом, но часто проще сразу записать 1 или 0 в нужный порт, типа P1.0 = 1; // Неужели подобное невозможно реализовать в MSP430 ?? Я как только не пробовал... И нигде не нахожу. Для реализации SPI пришлось создать четыре функции, я считаю это бредом каким то, если честно. // Маразм для програмного SPI void SCL(uchar b) { if (b==1) (P1OUT |= BIT7); else P1OUT &= ~BIT7; } //Строб void CSB(uchar b) { if (b==1) (P1OUT |= BIT4); else P1OUT &= ~BIT4; } //Выбор чипа void SDI(uchar b) { if (b==1) (P1OUT |= BIT6); else P1OUT &= ~BIT6; } //Передаваемые данные void SDO(uchar b) { if (b==1) (P1OUT |= BIT5); else P1OUT &= ~BIT5; } //Принимаемые данные И кстати, в Вашей версии реализации вот этот кусок почему то не работает: SDO(data & mask); Еще сильно не думал, но даже если data имеет значения 0xFFFF, SDO все равно имеет значение 0, всегда ноль.... Даже примерно не могу понять почему... Я использую CCS. И кстати булевых переменных тут что то же нет? Обявления типа bool var; выдает ошибку неопределенный тип....
  4. Я понимаю, но как я сказал - я совсем не программист, когда то давно писал на ассемблере. Вот например Ваш код мне сложен для понимания, я его конечно раскурю, я Вам благодарен, но придумать я бы такое не смог. Еще раз благодарю. Еще бы кто по работе с портами просветил...
  5. Приветствую всех. Подскажите не совсем программисту (или совсем не программисту) как грамотно реализовать программный SPI. МК CC430F5137 + OLED дисплей WEH000802A от Winstar. Данные 10 бит. Аппаратный в контроллере позволяет только 8, выход свой написать. Написал, но мне это не нравиться, знаю что можно намного проще, но не нахожу решения. Да и как то странно с портами в этом контроллере работается, нельзя (или не знаю как) данные напрямую в порт кидать, типа P1.0 = 1; А только BITами оперировать??? Вот что у меня получилось, смеяться разрешается )) // Обработчик дисплея // // Маразм для програмного SPI void SCL(uchar b) { if (b==1) (P1OUT |= BIT7); else P1OUT &= ~BIT7; } //Строб void CSB(uchar b) { if (b==1) (P1OUT |= BIT4); else P1OUT &= ~BIT4; } //Выбор чипа void SDI(uchar b) { if (b==1) (P1OUT |= BIT6); else P1OUT &= ~BIT6; } //Передаваемые данные void SDO(uchar b) { if (b==1) (P1OUT |= BIT5); else P1OUT &= ~BIT5; } //Принимаемые данные // Вывод управляющей команды для дисплея void WriteCMD(uchar CMD) { uchar i; CSB(0); SDI(0); _delay_cycles(100); SCL(0); _delay_cycles(100); SCL(1); SDI(0); _delay_cycles(100); SCL(0); _delay_cycles(100); SCL(1); _delay_cycles(100); for(i=0;i<8;i++) { uchar t = ((CMD>>(7-i)) & 0x01); // Как уйти от переменной t ????? SDI(t); SCL(0); _delay_cycles(100); SCL(1); _delay_cycles(100); } CSB(1); } /*============================================ Вывод одиночного символа на дисплей ============================================*/ void WriteOneDAT(uchar DAT) { uchar i;; CSB(0); SDI(1); _delay_cycles(100); SCL(0); _delay_cycles(100); SCL(1); SDI(0); _delay_cycles(100); SCL(0); _delay_cycles(100); SCL(1); _delay_cycles(100); for(i=0;i<8;i++) { uchar t =((DAT>>(7-i)) & 0x01); SDI(t); SCL(0); _delay_cycles(100); SCL(1); _delay_cycles(100); } CSB(1); } Технически разница между Командой и Данными в первом бите SDI и объединить эти две функции наверно не проблема, но я уверен что это можно написать как то грамотнее ... Как в этом контроллере с портами работать кроме как P1OUT |= BIT1 ??? Нельзя как то типа P1OUT_1 = 1; ?? Где то в буржуйской литературе мапинг какой то проскакивал, но там я вообще не вьехал про что это, для чего это.... Заранее Всем Благодарен.
  6. День добрый! Есть пульт на базе CC430F5137. Кнопка вкл/выкл заведена на P2.0 . Как сделать так что бы при нажатии на кнопку и удержании ее в течении 5 сек контроллер просыпался, а в рабочем состоянии наоборот засыпал. P.S. А кратковременное нажатие на эту кнопку в рабом режиме будет выполнять функцию Стоп. Заранее благодарен.
  7. День добрый! Извините что не в тему, ищу человека который сможет реализовать несколько функций под CC430F5137. Естественно не за так. Срочно надо. Уже месяц ищу. Черт меня дернул связаться с этим контроллером...
  8. Мне нужна помощь в реализации нескольких функций, для знающего - пару-тройку вечеров работы. Никого не могу найти... можно писать сюда: mymail.1910@bk.ru
  9. И меня кинул ))) Его реквизиты яко бы : Альфа-банк Реквизиты: карта 4890494628597783 Ельцов Георгий Борисович Еще возмутился что я только половину заплатил ))) Программистом прикинулся ))
  10. День добрый. Есть два устройства (пульт и исполнительный контроллер) собранные на CC430F5137 и связанные по радиоканалу. Ищу того кто сможет грамотно написать под них ПО на С, желательно в CCS (но не обязательно), в разумные сроки за разумные деньги )) ?
×
×
  • Create New...