реклама на сайте
подробности

 
 
> scmRtos для медных чайников
varvar
сообщение Feb 12 2012, 09:04
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811



Добрый день всем!
Возникло желание - точнее, необходимось использовать многозадачность в своем проекте - вернее, или надо писать свой диспетчер (в котором я уже успел запутаться), или пользоваться чем-то готовым.
Увидел scmRtos - попытался запустить демку. Пример под IAR на MSP430F2617 - у меня на плате MSP430F2410, IAR версия 5.30

Немножко подправил демку под свою плату, чтобы нужный светодиодик моргал, указал иару на MSP430F2410 - и ничего. WDT прерывание случается раза 4 (вроде как это системный таймер?), после чего программа улетает неведомо куда.

Кто-нибудь может на путь истинный наставить - что можно трогать, что нельзя. Может ли на работоспособности версия компилятора сказаться? Или, лучше всего, может у кого готовая рыба завалялась для моргания именно на этом кристалле или похожем?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Chudik
сообщение Oct 11 2012, 22:54
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 31-03-06
Пользователь №: 15 676



AHTOXA
Прикинул объявление класса для дисплея. Посмотри пожалуйста с точки зрения формы и логичности. Может что-то подправить?
Код
template<typename cs_pin>
class TDisplay
{
  private:
      spi_base_t& spi;
      typedef cs_pin LCD_CS;
      
      Pin<2, 6, 'H'> LCD_RS;    // H for Data, L for Command
      
      unsigned char   *font;
      uint8_t fontnumber, fontwidth, fontheight;
      uint8_t x, y; // position on the screen
      
      inline void select(void) { spi.lock(); LCD_CS::On(); }
      inline void deselect(void) { LCD_CS::Off(); spi.unlock();  }
      inline void send(uint8_t data) { spi << data; }
      void send_array(uint8_t *data, uint16_t count)
      { select();
        for(uint16_t i=0; i<count; i++)
          spi << data[i];
        deselect();
      }
      void send_command(uint8_t *data, uint16_t count);
      void send_data(uint8_t *data, uint16_t count);
      void goto_xy(uint8_t x, uint8_t y);
  public:
      void TDisplay(uint8_t *init, spi_base_t& spiref): spi(spiref);            
      void Set_contrast(uint8_t data);
      void ClrLines(unsigned char startline, unsigned char linesnum);    // Clear number of text lines
      void ClrText(unsigned char line, unsigned char xpos, unsigned char length); // Clear part of the line

      void SetFont(uint8_t num);
      uint8_t GetFont(void);
      void putchar(unsigned char ch, uint8_t xpos, uint8_t ypos);
      void putstring(char *string, uint8_t xpos, uint8_t ypos);
      void ShowSoftFont(unsigned char num);

}


Здесь только для вывода текста. Мне пока графика не нужна.
Функции будут описаны в другом файле. Они есть в виде функций C. Надеюсь, что не придётся менять слишком много.

Блин, разрываюсь между тремя проектами: пара хардверных и этот. Скорость написания никакая. sad.gif
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 12 2012, 03:33
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



По-моему, вполне. В любом случае, по ходу дела всегда можно что-то подправить/изменить/добавить.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Chudik
сообщение Oct 13 2012, 04:07
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 31-03-06
Пользователь №: 15 676



Цитата(AHTOXA @ Oct 11 2012, 20:33) *
по ходу дела всегда можно что-то подправить/изменить/добавить.

Ну да, что и происходит.
Посмотри пожалуйста.

Код
template<typename cs_pin>
class TDisplay
{
  private:
      spi_base_t& spi;
      typedef cs_pin LCD_CS;
      
      Pin<2, 6, 'H'> LCD_RS;    // H for Data, L for Command
      Pin<1, 4, 'L'> LCD_RST;   // Active 0, set to it during CSL
      uint8_t   status;         // 1/0 - On/Off. OLED requires to be off when not in use
      
      unsigned char   *font;
      uint8_t fontnumber, fontwidth, fontheight;
      uint8_t x, y; // position on the screen
      
      inline void select(void) { spi.lock(); LCD_CS::On(); }
      inline void deselect(void) { LCD_CS::Off(); spi.unlock();  }
      inline void send(uint8_t data) { spi << data; }
      void send_array(uint8_t *data, uint16_t count)
      { select();
        for(uint16_t i=0; i<count; i++)
          spi << data[i];
        deselect();
      }
      void send_command(uint8_t *data, uint16_t count);
      void send_data(uint8_t *data, uint16_t count);
      void goto_xy(uint8_t x, uint8_t y);
  public:
      TDisplay(uint8_t *init, spi_base_t& spiref): spi(spiref);            
      void Set_contrast(uint8_t data);
      
      uint8_t getstatus(void);
      void On(void);    // Because of using OLED display
      void Off(void);   // Because of using OLED display
      
      void SetFont(uint8_t num);
      uint8_t GetFont(void);
      void ClrLines(unsigned char startline, unsigned char linesnum);    // Clear number of text lines
      void ClrText(unsigned char line, unsigned char xpos, unsigned char length); // Clear part of the line
      void putchar(unsigned char ch, uint8_t xpos, uint8_t ypos);
      void putstring(char *string, uint8_t xpos, uint8_t ypos);
      void ShowFont(unsigned char num);
}


И несколько начальных функций. Не надо-ли что-то подправить? Хотелось бы понять перед тем, как перейду к описанию public функций. И по-моему в конструкторе класса у меня наверняка есть грубые ошибки в синтаксисе, поскольку пишу по остаткам памяти многолетней давности. rolleyes.gif
Массив init приведён просто для референса. С ним как раз более-менее всё понятно. sm.gif
Да, в качестве основы взят найденный на инете драйвер некоего аналогичного графического дисплея, некоторые комментарии не переведены sm.gif

Код
const uint8_t init[] =  {0x40,    //Display start line 0
                         0xa1,    //ADC reverse    <<<< Probably need to be changed
                         0xc0,    //Normal COM0...COM63
                         0xa6,    //Display normal
                         0xa2,    //Set Bias 1/9 (Duty 1/65)
                         0x2f,    //Booster, Regulator and Follower On
                         0xf8,    //Set internal Booster to 4x
                         0x00,
                         0x27,    //Contrast set
                         0x81,
                         0x16,
                         0xac,    //Set indicator
                         0x00,     //0x01,
                         0xAF, //};    //Display on
                         0xb0,    //Page start sddress 0
                         0x10,    //Set Higher Column Start Address 0
                         0x00     //Set Lower Column Start Address 0
                         };

/**************** Functions **************************************************/

void TDisplay::send_command(uint8_t *data, uint16_t count)
{
  LCD_RS::Off();    // switch to send command
  send_array(data, count);  // SPI CS controlled inside this function
}

void TDisplay::send_data(uint8_t *data, uint16_t count)
{
  LCD_RS::On();    // switch to send data
  send_array(data, count);  // SPI CS controlled inside this function
}

// Set symbol position in text mode
//Parameter:
//     x:    X - Position on screen (0 - 127)
//     y:    Y - Position on screen (0 - 8)
void TDisplay::goto_xy(uint8_t x, uint8_t y);
{
  uint8_t set[] = {0xb0, 0x10, 0x00};    //Control commands array
  set[0] += y;        //Y - Add Y Position to Set Page Start Address
  set[1] += x >> 4;   //High - Nibble auf Steuerbefehl addieren
  set[2] += x & 0x0f; //Low - Nibble auf Steuerbefehl addieren
  send_command(set, 3);
}

//TDisplay constructor
TDisplay::TDisplay(uint8_t *init, spi_base_t& spiref): spi(spiref)
{
  LCD_RST::Off();   // unreset LCD
  
  send_command((uint8_t *)init, sizeof(init));  // Initialization

    for(uint8_t line=0; line<8; line++) // clear display memory
    {
        goto_xy(0, line);
        spiref.select();
        send(0);
        spiref.deselect();
    }
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- varvar   scmRtos для медных чайников   Feb 12 2012, 09:04
- - varvar   Ok, кажется загрузка новой версии (4.0) немного по...   Feb 12 2012, 14:56
|- - dxp   QUOTE (varvar @ Feb 12 2012, 21:56) Ok, к...   Feb 12 2012, 16:34
- - varvar   Цитата(dxp @ Feb 12 2012, 19:34) А зачем ...   Feb 12 2012, 18:11
|- - dxp   QUOTE (varvar @ Feb 13 2012, 01:11) так н...   Feb 13 2012, 06:27
- - varvar   Я с примеров и начинал - с моей версией ИАРа и 3.1...   Feb 13 2012, 16:17
|- - dxp   QUOTE (varvar @ Feb 13 2012, 23:17) Я с п...   Feb 14 2012, 03:52
- - varvar   Попытаюсь воспользоваться еще раз добротой и отзыв...   Feb 14 2012, 20:04
- - a9d   Почитай статьи по потокам. Это фактически тоже сам...   Feb 14 2012, 20:48
- - dxp   1. В процессе ждать флаг события от таймера, когда...   Feb 15 2012, 05:04
- - tamam   Здравствуйте. Чтобы не плодить лишних тем решил от...   Feb 22 2012, 06:18
|- - AHTOXA   Цитата(tamam @ Feb 22 2012, 12:18) За осн...   Feb 22 2012, 08:10
|- - tamam   Цитата(AHTOXA @ Feb 22 2012, 12:10) Ага. ...   Feb 22 2012, 09:12
- - ReAl   У меня всё уже работает (1-EventFlag и 4-Debug и н...   Feb 22 2012, 08:05
|- - ReAl   Цитата(ReAl @ Feb 22 2012, 10:05) Если за...   Feb 22 2012, 17:55
|- - tamam   Спасибо, буду разбираться дальше.   Feb 22 2012, 19:02
- - ReAl   Прошу прощения за задержку. 23-го первый пример бы...   Feb 26 2012, 11:55
|- - tamam   Спасибо за оперативность. Разбираюсь....   Feb 27 2012, 12:46
- - ReAl   4-Debug уже там же.   Mar 1 2012, 14:28
- - varvar   Товарищи гуру и приближенные к ним! Помогите р...   Jul 12 2012, 08:29
- - ReAl   Как-то так. Кодvoid SleepUntil(tick_count_t ti...   Jul 12 2012, 08:54
- - varvar   Спасибо, когда пояснили, все стало так очевидно...   Jul 12 2012, 09:22
- - Посторонним В...   доброго времени днутра или ночера... есть комплек...   Aug 3 2012, 09:06
|- - _Артём_   Цитата(Посторонним В... @ Aug 3 2012, 12...   Aug 3 2012, 10:53
- - Посторонним В...   Цитата(_Артём_ @ Aug 3 2012, 11:53) Приме...   Aug 6 2012, 08:12
|- - _Артём_   Цитата(Посторонним В... @ Aug 6 2012, 11...   Aug 6 2012, 10:34
|- - _Артём_   Цитата(Посторонним В... @ Aug 6 2012, 11...   Aug 6 2012, 12:58
|- - Посторонним В...   Цитата(_Артём_ @ Aug 6 2012, 13:58) Updat...   Aug 7 2012, 08:06
|- - _Артём_   Цитата(Посторонним В... @ Aug 7 2012, 11...   Aug 7 2012, 09:56
|- - Посторонним В...   Цитата(_Артём_ @ Aug 7 2012, 10:56) Больш...   Aug 16 2012, 08:57
|- - _Артём_   Цитата(Посторонним В... @ Aug 16 2012, 11...   Aug 16 2012, 11:39
|- - AHTOXA   Цитата(Посторонним В... @ Aug 16 2012, 14...   Aug 16 2012, 15:44
|- - Посторонним В...   Цитата(AHTOXA @ Aug 16 2012, 15:44) Разра...   Aug 21 2012, 03:43
|- - AHTOXA   У вас, похоже, не работает прерывание от системног...   Aug 21 2012, 04:07
|- - Сергей Борщ   QUOTE (AHTOXA @ Aug 21 2012, 07:07) У вас...   Aug 21 2012, 05:26
- - Посторонним В...   выкладываю исходники   Aug 21 2012, 06:31
|- - _Артём_   Цитата(Посторонним В... @ Aug 21 2012, 09...   Aug 21 2012, 20:37
|- - Посторонним В...   Цитата(_Артём_ @ Aug 21 2012, 20:37) Стра...   Aug 22 2012, 04:26
- - varvar   На очередные грабли наступил. В ИАРе для 430 стОит...   Sep 6 2012, 18:50
- - ReAl   Если подозрение на стек -- увеличить стек для проц...   Sep 6 2012, 20:36
|- - varvar   Цитата(ReAl @ Sep 6 2012, 23:36) Если под...   Sep 8 2012, 16:17
- - Chudik   Помогите пожалуйста определиться со структурой про...   Oct 3 2012, 02:09
- - dxp   Никто, кроме вас, не знает, как лучше распределить...   Oct 4 2012, 04:35
- - Chudik   dxp Спасибо за ответ. Про общее правило - это-то ...   Oct 4 2012, 19:31
|- - _Артём_   Цитата(Chudik @ Oct 4 2012, 22:31) Ага, с...   Oct 4 2012, 20:10
|- - Chudik   Цитата(_Артём_ @ Oct 4 2012, 13:10) Ну да...   Oct 4 2012, 21:11
- - Chudik   Не нашёл в документации других членов класса proce...   Oct 4 2012, 23:54
|- - _Артём_   Цитата(Chudik @ Oct 5 2012, 02:54) Не наш...   Oct 5 2012, 00:35
- - Chudik   Ага, спасибо, нашёл в доке.   Oct 5 2012, 02:17
- - Chudik   Возможно глупый вопрос: может ли mutex быть членом...   Oct 5 2012, 14:22
|- - _Артём_   Цитата(Chudik @ Oct 5 2012, 17:22) может ...   Oct 5 2012, 14:27
|- - AHTOXA   Локальной тоже может. Например, представьте, что у...   Oct 5 2012, 16:41
|- - _Артём_   Цитата(AHTOXA @ Oct 5 2012, 19:41) Локаль...   Oct 5 2012, 17:03
|- - Chudik   Цитата(AHTOXA @ Oct 5 2012, 09:41) У меня...   Oct 5 2012, 23:59
|- - _Артём_   Цитата(Chudik @ Oct 6 2012, 02:59) Вот, в...   Oct 6 2012, 01:03
||- - Chudik   Цитата(_Артём_ @ Oct 5 2012, 18:03) А чем...   Oct 6 2012, 03:07
|- - AHTOXA   Цитата(Chudik @ Oct 6 2012, 05:59) Можно ...   Oct 6 2012, 08:53
- - Chudik   AHTOXA Огромное спасибо! Как раз первое, что я...   Oct 6 2012, 20:25
|- - AHTOXA   Я, честно говоря, не совсем понимаю, что я должен ...   Oct 13 2012, 05:10
- - Chudik   Ну, вот такие замечания и нужны Спасибо. Естестве...   Oct 13 2012, 18:54
|- - AHTOXA   Цитата(Chudik @ Oct 14 2012, 00:54) А поч...   Oct 15 2012, 03:26
- - Chudik   AHTOXA получил сообщение в IAR КодError[Pe020...   Oct 17 2012, 23:45
|- - AHTOXA   Я в IAR-е не копенгаген   Oct 18 2012, 03:30
|- - Сергей Борщ   QUOTE (Chudik @ Oct 18 2012, 02:45) ident...   Oct 18 2012, 05:54
- - Chudik   Посмотрел опции компиляции. Там стоял автоматическ...   Oct 18 2012, 18:40
|- - AHTOXA   А в файле M3_Terminal.h есть строчка Код#include ...   Oct 18 2012, 18:52
- - Chudik   Конечно: Код#ifndef M3_TERMINAL_H #define M3_TERMI...   Oct 18 2012, 19:36
|- - AHTOXA   Хм. Странно. 1. Возможно где-то ещё есть объявлени...   Oct 18 2012, 19:49
|- - Chudik   Разобрался, мой косяк был - кросс ссылки на файлы ...   Oct 18 2012, 21:00
|- - _Артём_   Цитата(AHTOXA @ Oct 18 2012, 22:49) в ИАР...   Oct 18 2012, 21:20
- - AHTOXA   Цитата(Chudik @ Oct 19 2012, 03:00) в соо...   Oct 19 2012, 04:54
|- - Chudik   Цитата(AHTOXA @ Oct 18 2012, 21:54) Ну и ...   Oct 19 2012, 20:22
|- - _Артём_   Цитата(Chudik @ Oct 19 2012, 23:22) Угу, ...   Oct 19 2012, 23:00
- - Chudik   Ничего не понимаю КодError[Pe020]: ide...   Oct 26 2012, 22:32
|- - AHTOXA   Это же GCC-шные названия файлов и регистров у меня...   Oct 26 2012, 23:21
- - Chudik   Логично, конечно. Сейчас посмотрю. Мне казалось, ч...   Oct 26 2012, 23:57
- - Chudik   Регистры переназначил. Функцию rw для SPI подправи...   Oct 27 2012, 03:18
|- - AHTOXA   1. spi_base_t - это не шаблонный класс, не надо к ...   Oct 27 2012, 05:43
- - Chudik   Ага, спасибо, поменял. Полегчало. Соотвественно, ...   Oct 27 2012, 05:53
- - dezna   добрый день! появилась необходимость использов...   Jan 21 2013, 10:38
|- - AHTOXA   Светодиоды в 1-EventFlag мигают быстро-быстро, гла...   Jan 21 2013, 11:10
|- - dezna   Цитата(AHTOXA @ Jan 21 2013, 15:10) Свето...   Jan 21 2013, 11:17
|- - AHTOXA   В вашем листинге нет упоминания о конструкторах. П...   Jan 21 2013, 16:22
|- - dezna   Цитата(AHTOXA @ Jan 21 2013, 20:22) В ваш...   Jan 22 2013, 04:58
|- - AHTOXA   Цитата(dezna @ Jan 22 2013, 10:58) COLLEC...   Jan 22 2013, 05:47
|- - dezna   Цитата(AHTOXA @ Jan 22 2013, 09:47) Код ...   Jan 22 2013, 06:21
|- - AHTOXA   Сложно сказать. Листинг практически идентичен моем...   Jan 22 2013, 08:20
|- - dezna   Цитата(AHTOXA @ Jan 22 2013, 12:20) Сложн...   Jan 22 2013, 10:11
|- - AHTOXA   Цитата(dezna @ Jan 22 2013, 16:11) но не ...   Jan 22 2013, 10:57
|- - dezna   Цитата(AHTOXA @ Jan 22 2013, 14:57) Я доб...   Jan 22 2013, 11:14
|- - IgorKossak   Цитата(AHTOXA @ Jan 22 2013, 12:57) Я пои...   Jan 22 2013, 11:49
|- - demiurg_spb   Цитата(IgorKossak @ Jan 22 2013, 15:49) Н...   Jan 22 2013, 12:58
||- - IgorKossak   Цитата(demiurg_spb @ Jan 22 2013, 14:58) ...   Jan 22 2013, 13:26
|- - AHTOXA   Цитата(IgorKossak @ Jan 22 2013, 17:49) Н...   Jan 22 2013, 14:04
- - IgorKossak   Для сборки под Cortex-Mx пользуюсь тулчейном от Li...   Jan 22 2013, 08:32
- - mdmitry   Цитата(IgorKossak @ Jan 22 2013, 11:32) Д...   Jan 22 2013, 10:24
- - dezna   Цитата(IgorKossak @ Jan 22 2013, 12:32) Д...   Jan 22 2013, 10:28
2 страниц V   1 2 >


Reply to this topicStart new topic
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 17:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.015 секунд с 7
ELECTRONIX ©2004-2016