Страница 1 из 4

Вопросы по программированию стенда SDK-2.0

СообщениеДобавлено: 19 май 2008, 08:32
bmig
думаю я буду выглядеть не очень хорошо, но да ладно.
следующий раз опишу ошибку (программирую н другом компе)

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 19 май 2008, 13:20
kluchev
bmig писал(а):думаю я буду выглядеть не очень хорошо, но да ладно.
следующий раз опишу ошибку (программирую н другом компе)

А чего тут такого? Этот сайт сделан специально в целях обучения.

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 25 май 2008, 10:43
bmig
как говорил.
но ошибку №1 - я определил и исправил (файл назывался по другому)

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 25 май 2008, 14:25
Shico
bmig писал(а):как говорил.
но ошибку №1 - я определил и исправил (файл назывался по другому)

Так, собственно, остальные три ошибки это следствие первой. IO0DIR, IO0SET, IO0CLR - это названия регистров, описанных в файле LPC2292.h. Так как этого файла нет, то и регистры компилятор не находит. Если подключение файла LPC2292.h не помогло, то надо дальше разбираться, например посмотреть настройки проекта.
По крайней мере по приведенному скриншоту я могу сказать только это.

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 28 май 2008, 06:19
bmig
спасибо всё пошло,
но возник вопрос: почему блок светодиодов работает как 2 параллельных порта
исходник программы вот

#include <lpc2292.h>
int main (void)
{
unsigned long i;
IO2DIR |= 0xFF0000;
while (1)
{
IO2SET |= 0xF50000;
for (i=0; i < 5000000; i++ );
IO2CLR |= 0xF50000;
for (i=0; i < 5000000; i++ );
}
}

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 28 май 2008, 12:04
Shico
bmig писал(а):но возник вопрос: почему блок светодиодов работает как 2 параллельных порта

Просто линейка светодиодов спроектирована следующим образом (из-за нехватки "ножек" микроконтроллера):
Линейка из 8-ми светодиодов управляется 6-ю сигналами: 4 - линии "данных" и 2 линии выбора группы светодиодов (всего 2 группы по 4 светодиода). Т.о. линии выбора задают активную половину (верхнюю, нижнюю, или обе сразу) линейки светодиодов, а линии данных (4 сигнала) задают состояние выбранной группы светодиодов. Более подробно можно посмотреть на схеме стенда.
Чтобы управлять всеми 8 светодиодами нужно использовать принцип динамической индикации. Т.е. попеременно подсвечивать обе половинки линейки светодиодов (например с частотой 200-300 Гц.).

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 03 июн 2008, 11:10
bmig
Спасибо сегодня попробую.

Да, на глаза попалась книга по программированию микроконтроллеров серии LPC2000
вот пример от туда о программировании ЖКИ, но он не идёт (название книги напишу по позже):
#include <lpc2292.h>

#include <stdio.h>

int main (void) {

PINSEL0 = 0x00050000;

U1LCR = 0x83;
U1DLL = 97;
U1LCR = 0x03;
printf ("Hello World\n");
while (1) {
;
}
}

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 03 июн 2008, 14:09
Shico
bmig писал(а):Да, на глаза попалась книга по программированию микроконтроллеров серии LPC2000
вот пример от туда о программировании ЖКИ, но он не идёт (название книги напишу по позже):...

Что значит "не идёт"? Если Вы ожидаете вывода строки на дисплей стенда, то на нем ничего и не должно отображаться. Потому что в примере инициализируется последовательный канал и делается попытка вывода в него строки ("Hello World").
Более подробно напишу позже.

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 03 июн 2008, 15:47
AlexNickolaenkov
bmig, пользуйтесь, пожалуйста, для оформления кода специальными тэгами. Читать его без форматирования — сил нет (особенно если его много). Если что кнопка для оформления кода находится пятой слева в тулбаре над окном для редактирования сообщения (между кнопками Quote и List).

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 04 июн 2008, 01:39
Shico
bmig писал(а):Да, на глаза попалась книга по программированию микроконтроллеров серии LPC2000
вот пример от туда о программировании ЖКИ, но он не идёт (название книги напишу по позже):...

Чтобы эта программа заработала она должна немного измениться:
Код: Выделить всё
#include <lpc2292.h>
#include <stdio.h>

/*-----------------------------------------------------------------------------
Запись символа в последовательный канал
-----------------------------------------------------------------------------*/
int putchar( int c )
{
    while ( ! ( U0LSR & 0x20 ) );
    U0THR = c;
    return c;
}

/*-----------------------------------------------------------------------------
Функция Main
-----------------------------------------------------------------------------*/
int main (void) 
{
    // Инициализация портов ввода-вывода микроконтроллера
    PINSEL0 = 0x00000005;

    // Инициализация UART 0 на скорости 9600 бод
    U0LCR   = 0x83;
    U0DLL   = 78;         // X = Fosc / (16 * 9600)   
    U0LCR   = 0x03;       // DLAB = 0

    printf( "Hello World\n" );

    while ( 1 );
}                               

1. Здесь используется последовательный канал 0. То есть тот, через который Вы программируете стенд.
2. Скорость установливается на 9600 бод. Хотя легко может быть другой, если рассчитать нужный коэффициент:
Код: Выделить всё
    U0DLL   = 78;           // X = Fosc / (16 * 9600)   

3. Чтобы заработала функция printf() нужно переопределить функцию putchar(), которая в ней используется.
4. Увидеть результат работы программы можно в любой терминальной программе (например m3p, t167b, HyperTerminal), настроенной на скорость 9600 бод. Строка "Hello World" выводится 1 раз, сразу после включения стенда.

Полный проект для Keil'а выложен в теме "Примеры программ для стенда SDK-2.0".

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 04 июн 2008, 07:12
bmig
спасибо за примеры
интересно, но возник вопрос - зачем инициализируем все порты, ведь работаем только со вторым?

второй вопрос - как считать символ с клавиатуры

и ещё как вывести символ на ЖКИ

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 04 июн 2008, 10:15
kluchev
bmig писал(а):интересно, но возник вопрос - зачем инициализируем все порты, ведь работаем только со вторым?


Нужно всегда приводить плату в БЕЗОПАСНОЕ СОСТОЯНИЕ сразу после старта. Если какое-либо устройство будет работать встык (два устройства на шине на вывод), то порты могут сгореть.

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 04 июн 2008, 10:41
bmig
то есть если я хочу вывести символ на ЖКИ, то мне надо инициализировать ЖКИ и через
printf вывести на экран символ?

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 04 июн 2008, 10:53
Shico
bmig писал(а):то есть если я хочу вывести символ на ЖКИ, то мне надо инициализировать ЖКИ и через
printf вывести на экран символ?

Нет. На ЖКИ просто так символ невывести. Во-первых, для него нужно написать специальный драйвер. Во-вторых, ЖКИ графический и, более менее легко, на него можно вывести пиксель (зажечь, потушить), а чтобы выводить символы, нужно написать программу, которая будет рисовать ("вручную") каждый символ из пикселей. В-третьих, после выполнения первых двух условий можно и printf с ЖКИ соединить.

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 04 июн 2008, 11:03
Shico
bmig писал(а):второй вопрос - как считать символ с клавиатуры

и ещё как вывести символ на ЖКИ

Код: Выделить всё
/*-----------------------------------------------------------------------------
Чтение символа из последовательного канала
-----------------------------------------------------------------------------*/
unsigned char rsio0 ( void )
{   
    while ( ! ( U0LSR & 0x01 ) );
    return ( U0RBR );
}

Читает, с ожиданием, символ из последовательного канала 0.

Когда будет время, попробую сделать пример с ЖКИ.

P.S. Кстати, Вы какую клавиатуру имели ввиду - ПК или стенда? Приведенный пример позволяет считать код символа клавиши, нажатой на клавиатуре ПК в окне терминальной программы.

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 04 июн 2008, 17:14
bmig
да ещё вопрос язык программирования С, но я слышал что это С для встраеваемых приложений
кто может скиньте ссылку где можно о нём по подробнее прочитать

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 04 июн 2008, 17:33
Shico
bmig писал(а):да ещё вопрос язык программирования С, но я слышал что это С для встраеваемых приложений
кто может скиньте ссылку где можно о нём по подробнее прочитать

Это самый обыкновенный Си, по крайней мере с точки зрения синтаксиса. Отличается он в основном тем, ЧТО на нем делается. А так, отличия, в основном, состоят в наличии специальных ключевых слов (например, __irq). Можно посмотреть документацию к стенду.

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 04 июн 2008, 18:47
bmig
на счёт чтения символа с клавиатуры
А что бы считать символ с клавиатуры стенда (я хотел бы сначала считать символ с клавиатуры и вывести на светодиоды) можно ли при этом, занести символ в какую-нибуть переменную

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 04 июн 2008, 18:56
AlexNickolaenkov
bmig писал(а):А что бы считать символ с клавиатуры стенда (я хотел бы сначала считать символ с клавиатуры и вывести на светодиоды) можно ли при этом, занести символ в какую-нибуть переменную


думаю это вам помешают сделать только если религиозные побуждения...

Re: Утилиты для программирования стенда SDK-2.0

СообщениеДобавлено: 04 июн 2008, 18:58
Shico
bmig писал(а):на счёт чтения символа с клавиатуры
А что бы считать символ с клавиатуры стенда (я хотел бы сначала считать символ с клавиатуры и вывести на светодиоды) можно ли при этом, занести символ в какую-нибуть переменную

Можно и такую программу написать... Хотя начать я советую, все таки, с последовательного канала. Он проще: чтение символа - "три строчки", вывод символа - "три строчки". Все просто и обозримо. А чтобы считать символ с клавиатуры стенда, нужно, как и для ЖКИ, написать специальный драйвер. Который новичку, на мой взгляд, сразу понять будет сложновато. Написали бы лучше программу, выводящую на светодиоды код символа, прочитанного из последовательного канала.