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

 
 
> Выпущена scmRTOS 4.0., Ура, товарищи! :)
AHTOXA
сообщение Apr 5 2012, 12:57
Сообщение #1


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

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



Собственно, субж.
Ссылки:

Кроме того, незадолго до этого была выпущена версия 3.11. Это завершающая, багофиксная версия 3.x. Ссылки:


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ReAl
сообщение Apr 14 2012, 10:38
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Вы её просто не умеете готовить. Как, видимо, и любую другую вытесняющую ОС, так как то же самое будет в любой другой независимо от языка реализации.

Если Вы «драйверные» по сути вещи будете запихивать в отдельные процессы с ожиданием посланного сообщения из тупого обработчика прерываний, то будет то же самое — большие задержки, большие расходы не переключение задач, на стеки процессов.

Если Вы «драйверные» вещи выделите в отдельные классы, как в обсуждениях по ссылкам в предыдущем моём сообщении, а в процесс будете отправлять уже «высокоуровневый» результат работы драйвера, то отрабатывать драйверные прерывания будут так же быстро, как и в программе без какой-либо ОС. Всю быструю работу будет делать драйвер, остальное — разбуженный результатом процесс. Это вполне реализуемо в рамках scmRTOS.

Не нравится отдельный драйверный класс — сделайте свой хитрый процесс. Раз он хитрый — Вам не удастся воспользоваться готовым шаблоном для стандарнтых процессов, но Вы тут так много говорили про С++, что у Вас не должно быть проблем сделать, например, такое (за основу взят пример 2 из пакета avr-gcc и проверено в железе):
CODE

//******************************************************************************
//* FULLNAME: Single-Chip Microcontroller Real-Time Operating System
//* NICKNAME: scmRTOS
//* PROCESSOR: AVR (Atmel)
//* TOOLKIT: avr-gcc (GNU)
//* PURPOSE: avr-gcc Port Test File

... порезано ...

//******************************************************************************

//---------------------------------------------------------------------------
#include <avr/io.h>
#include "pin_macros.h"
#include <scmRTOS.h>

#if scmRTOS_CONTEXT_SWITCH_SCHEME == 1
// for analog comparator initialisation in main()
#include <util/delay.h>
#endif


//---------------------------------------------------------------------------
// Sample target
// The sample is intended for following AVR microcontrollers:
// atmega48..atmega328
// atmega64, atmega128
// atmega640..atmega2561
// Some changes in register names may be needed for other AVRs.

#if defined(TIMSK1)
# define TIMER1_IE_REG TIMSK1
#elif defined(TIMSK)
# define TIMER1_IE_REG TIMSK
#else
# error "Timer1 interrupt mask register not defined"
#endif

//---------------------------------------------------------------------------
// "Hello, scope!" pins in pin_macros.h notation.
#define TIMER1_ISR D,5,H
#define TIMER1_TO_PROC1 B,0,H
#define PROC1 B,1,H
#define PROC2 B,2,H
#define PROC3 B,3,H
#define TIMER_HOOK B,4,H
#define IDLE_HOOK B,5,H
#define MAMONT_TRUNK C,5,H

//---------------------------------------------------------------------------
struct TMamont // data type for sanding by message
{
enum TSource { PROC_SRC, ISR_SRC } src;
int data;
};

//---------------------------------------------------------------------------
// Process types

// Два процесса стандартные
typedef OS::process<OS::pr1, 160> TProc2;
typedef OS::process<OS::pr2, 120> TProc3;

// Третий имеет методы для общения с себе подобными и метод, отрабатывающий
// «в ожидании НАСТОЯЩЕГО прерывания»

// avr-gcc не позволяет объявить статический член класса обработчиком прерывания,
// приходится пользоваться помощью друга
OS_INTERRUPT void TIMER1_COMPA_vect();

// Наследуем от базового типа процесса scmRTOS
class TProc1 : public OS::TBaseProcess
{
friend void TIMER1_COMPA_vect();
public:
// Раз не воспользовались шаблоном стандратного процесса — солнце закатываем вручную
TProc1()
: OS::TBaseProcess( &Stack[stack_size/sizeof(stack_item_t)],
OS::pr0, reinterpret_cast<void (*)()>(exec) )
{
TCCR1B = (1 << WGM12) | (1 << CS10); // CTC mode, clk/1
OCR1A = 40000U;
TIMER1_IE_REG = (1 << OCIE1A); // Timer1 OC interrupt enable
}

// Это для вызова из других процессов
static void send_message(TMamont::TSource source, int data);

private:
static const size_t stack_size = 120;
OS_PROCESS static void exec();

static TMamont Mamont;
static OS::message<TMamont> MamontMsg;

// А это НАСТОЯЩЕЕ прерывание
INLINE void compa_isr();

stack_item_t Stack[stack_size/sizeof(stack_item_t)];
};

TProc1 Proc1;
TMamont TProc1::Mamont;
OS::message<TMamont> TProc1::MamontMsg;

void TProc1::send_message(TMamont::TSource source, int data)
{
TMamont m;
m.src = source;
m.data = data;
MamontMsg = m;
MamontMsg.send();
}

// Этот метод будет вызываться из НАСТОЯЩЕГО прерывания до любого перепланирования и т.п.
// Отрабатывает максимально быстро и может накопить работу (например, принять весь пакет
// по каналу связи) и только потом послать результирующее сообщение.
void TProc1::compa_isr()
{
TMamont m;
m.src = TMamont::ISR_SRC;
m.data = 10;
MamontMsg = m;
ON(MAMONT_TRUNK);
MamontMsg.send_isr();
}


//---------------------------------------------------------------------------
// Process objects
//
TProc2 Proc2;
TProc3 Proc3;

//---------------------------------------------------------------------------
int main()
{
// Start System Timer
TIMER0_CS_REG = (1 << CS01) | (1 << CS00); // clk/64
TIMER0_IE_REG |= (1 << TOIE0);

#if scmRTOS_CONTEXT_SWITCH_SCHEME == 1
// Setup analog comparator as software interrupt source
#if PORT_TOGGLE_BY_PIN_WRITE // see pin_macros.h for PORT_TOGGLE_BY_PIN_WRITE definition and sing
ACSR = (1 << ACBG); // Ref ON, interrupt on both edges
#else
ACSR = (1 << ACBG) | (1 << ACIS1); // Ref ON, falling edge
#endif
DRIVER(RAISE_PIN,OUT); // AIN1 - output
// analog comparator propagation and synchronization delay
_delay_us(2);
ACSR |= (1 << ACI); // needed for chips with improved sbi/cbi behavior
ACSR |= (1 << ACIE);
#endif

DRIVER(TIMER1_ISR,OUT);
DRIVER(TIMER_HOOK,OUT);
DRIVER(IDLE_HOOK,OUT);
DRIVER(MAMONT_TRUNK,OUT);
//
OS::run();
}

//---------------------------------------------------------------------------
void TProc1::exec()
{
DRIVER(PROC1,OUT);
DRIVER(TIMER1_TO_PROC1,OUT);
for(;;) {
OFF(PROC1);
MamontMsg.wait();
ON(PROC1);
OFF(TIMER1_TO_PROC1);
MamontMsg.out(Mamont);
if(Mamont.src == TMamont::PROC_SRC) {
OFF(MAMONT_TRUNK);
} else {
OFF(MAMONT_TRUNK);
ON(MAMONT_TRUNK);
OFF(MAMONT_TRUNK);
}
}
} // TProc1::exec()


//---------------------------------------------------------------------------
namespace OS {
template<> OS_PROCESS void TProc2::exec()
{
DRIVER(PROC2,OUT);
for(;;) {
OFF(PROC2);
sleep(20);
ON(PROC2);
}
} // TProc2::exec()
} // namespace OS

//---------------------------------------------------------------------------
namespace OS {
template<> OS_PROCESS void TProc3::exec()
{
DRIVER(PROC3,OUT);
for(;;) {
OFF(PROC3);
sleep(1);
ON(PROC3);
ON(MAMONT_TRUNK);
Proc1.send_message(TMamont::PROC_SRC, 5); // обращаемся к процессу от другого процесса
}
} // TProc3::exec()
} // namespace OS

//---------------------------------------------------------------------------
OS_INTERRUPT void TIMER1_COMPA_vect()
{
ON(TIMER1_ISR);
ON(TIMER1_TO_PROC1);
OS::TISRW ISRW;
// Часть логики процесса работает непосредственно в прерывании без перепланирования
// и без переключения задач
Proc1.compa_isr();
OFF(TIMER1_ISR);
}
Тут имеем быструю реакцию (уже не класса драйвера, а непосредственно класса процесса) на прерывание. Но не в его методе exec(), предназначенном для работы в рамках ненастоящего прерывания вытесняющего планирования ОС, а в его методе compa_isr().
Всё как Вы хотели «но не знали как и постеснялись спросить».
Если ядро имеет приоритетную систему прерываний, как в современных "Электроника-60", 1801ВМ, MSP430, i8051 (вычёркиваем, C++ для него нет и scmRTOS не спортится, но на С всё то же в виде модулей и инкапсуляцией static-об’ектами это работает), ARM, то этот подход, как и с классами драйверов, автоматически ею воспользуется. Нет — не судьба. Но страдать от необходимости «идти длинным путем через OS, через диспетчер, через полинг, через арбитр приоритетов....» не приходится и на AVR.
Более того, в классе драйвера UART для работы в рамке SLIP в передатчике у меня два isr-метода. Метод udre_isr() вообще «внеосевой», оне не пользуется сервисами ОС и очень лёгкий, после него не производится перепланирование (оно и не нужно, данное прерывание ничего не поменяло в состояниях процессов). А вот метод txc_isr() уже сообщает наверх о том, что пакет передан полностью, вызывает сервисы ОС и после него происходит перепланирование.

Цитата(Aprox @ Apr 14 2012, 12:01) *
Точнее сказать, без привычной из прошлого OS.

Из какого прошлого? Кому привычной? Привычной нам ОС или неправильного её использования Вами из-за привычной работы без ОС?

В RT11 (FB) было то же самое — драйвера отрабатывали быстро, при необходимости было более медленное переключение на ожидающую задачу. Без С++ и современных чипов.

А то, что Вы описали — это таки не вытесняющая ОС вообще. Это расталкивание всей работы по обработчикам прерываний с оставшейся программой без каких-либо признаков ОС либо с зачатками кооперативной ОС, пользующейся результатом работы выполненной в прерываниях обработки. Вполне себе решение, пользовался раньше и пользуюсь сейчас. Без ОС или с кооперативной ОС часто иначе невозможно.
Если некоторые поселенные в прерывания задачи довольно длительны, то такой подход просит приоритетной системы вложенных прерываний. да. Но никаких современных чипов для этого не нужно, это есть в MSP430. Это было в 1801ВМ1, ВМ2 30+ лет назад. Там, кстати, в RT11 для драйверов готовые макросы были для регулирования приоритета обработчика, самое важное он делал на большом приоритете, потом снижал приоритет ядра до более низкого и его могли прервать даже те прерывания, которых он победил при первоначальном арбитраже. То же самое я делал на i8051 — после критической по времени части обработчика очищал уровень приоритета и данный обработчик уже могли прервать не только более приоритетные прерывания, но и вобще все, т.е. я снижал уровень приоритета обработчика прерываний до приоритета основного кода. Иногда при этом даже то же самое прерывание прерывало как бы само себя, но шло при этом по другой ветке (по бедности — таймеров не хватало, вот и было на один таймер навешано несколько задач разной периодичности и длительности). Не совсем то, что было в 1801ВМ или что есть у MSP430 или современных чипов, но это именно эта идеология.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Aprox
сообщение Apr 15 2012, 08:20
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(ReAl @ Apr 14 2012, 14:38) *
Если Вы «драйверные» вещи выделите в отдельные классы, как в обсуждениях по ссылкам в предыдущем моём сообщении, а в процесс будете отправлять уже «высокоуровневый» результат работы драйвера, то отрабатывать драйверные прерывания будут так же быстро, как и в программе без какой-либо ОС. Всю быструю работу будет делать драйвер, остальное — разбуженный результатом процесс. Это вполне реализуемо в рамках scmRTOS.

А смысл? Зачем нужна вообще scmOS, если и без нее реализуются все те же самые функции вытеснения процессов с приоритетом и защищенность данных каждой отдельной задачи? Зачем мне осваивать ставшую ненужной OS и подлаживаться под ее условности?
Цитата
Не нравится отдельный драйверный класс — сделайте свой хитрый процесс. Раз он хитрый — Вам не удастся воспользоваться готовым шаблоном для стандарнтых процессов, но Вы тут так много говорили про С++...

Этот язык я использую для опреления задачи реального времени как класса с защищенными методами и данными. Отдельные стеки, сохранять контекст каждой задачи, уже не неужно. Соответственно, одна из главных фич многозадачных OS с приходом C++ выглядит ненужной.
[ коды skipped]
Цитата
Тут имеем быструю реакцию (уже не класса драйвера, а непосредственно класса процесса) на прерывание. Но не в его методе exec(), предназначенном для работы в рамках ненастоящего прерывания вытесняющего планирования ОС, а в его методе compa_isr().

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

Цитата
делал на большом приоритете, потом снижал приоритет ядра до более низкого и его могли прервать даже те прерывания, которых он победил при первоначальном арбитраже. То же самое я делал на i8051 — после критической по времени части обработчика очищал уровень приоритета и данный обработчик уже могли прервать не только более приоритетные прерывания, но и вобще все, т.е. я снижал уровень приоритета обработчика прерываний до приоритета основного кода. Иногда при этом даже то же самое прерывание прерывало как бы само себя, но шло при этом по другой ветке (по бедности — таймеров не хватало, вот и было на один таймер навешано несколько задач разной периодичности и длительности). Не совсем то, что было в 1801ВМ или что есть у MSP430 или современных чипов, но это именно эта идеология.

Видите ли, ссылаться на опыт прошлого, на проблемы со старыми чипами... как-то неконструктивно. Я знаю все те проблемы, сам наплясался с бубном всласть. Сейчас время другое- в чипах появились нормальные прерывания с приоритетом, периферия вся забуферирована через FIFO, не надо программно торопиться с пересылками блоков данных- это за нас делает DMA. Напичкали все, о чем мечталось лет десять назад. Так, пользоваться надо!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AHTOXA   Выпущена scmRTOS 4.0.   Apr 5 2012, 12:57
- - haker_fox   Искренние поздравления! Использовал несколько ...   Apr 6 2012, 02:27
- - Fat Robot   Молодцы!   Apr 6 2012, 09:10
- - Aprox   Уважаемые авторы новой 4-ой версии! Позвольте...   Apr 9 2012, 18:32
|- - _Артём_   Цитата(Aprox @ Apr 9 2012, 21:32) Или все...   Apr 9 2012, 19:00
||- - Aprox   Цитата(_Артём_ @ Apr 9 2012, 23:00) А что...   Apr 10 2012, 09:02
||- - demiurg_spb   Цитата(Aprox @ Apr 10 2012, 13:02) Зато к...   Apr 10 2012, 10:12
|||- - dxp   QUOTE (demiurg_spb @ Apr 10 2012, 17:12) ...   Apr 10 2012, 10:17
||||- - demiurg_spb   ответил в предыдущем посте.   Apr 10 2012, 10:21
|||- - dxp   QUOTE (demiurg_spb @ Apr 10 2012, 17:12) ...   Apr 10 2012, 13:33
||- - Сергей Борщ   QUOTE (Aprox @ Apr 10 2012, 12:02) Мне пр...   Apr 10 2012, 10:13
|||- - Aprox   Цитата(Сергей Борщ @ Apr 10 2012, 14:13) ...   Apr 10 2012, 19:47
|||- - aaarrr   Цитата(Aprox @ Apr 10 2012, 23:47) Я посм...   Apr 10 2012, 20:12
|||- - demiurg_spb   Цитата(Aprox @ Apr 10 2012, 23:47) ...   Apr 11 2012, 04:54
|||- - Сергей Борщ   QUOTE (Aprox @ Apr 10 2012, 22:47) Видите...   Apr 11 2012, 05:48
|||- - Aprox   Цитата(Сергей Борщ @ Apr 11 2012, 09:48) ...   Apr 11 2012, 12:50
|||- - mdmitry   Цитата(Aprox @ Apr 11 2012, 16:50) А юзер...   Apr 11 2012, 13:43
|||- - AHTOXA   Цитата(Aprox @ Apr 11 2012, 18:50) Уточни...   Apr 11 2012, 14:44
|||- - Aprox   Цитата(AHTOXA @ Apr 11 2012, 18:44) Обраб...   Apr 11 2012, 19:11
|||- - AHTOXA   Цитата(Aprox @ Apr 12 2012, 00:24) OS по ...   Apr 11 2012, 19:12
||||- - Aprox   Цитата(AHTOXA @ Apr 11 2012, 23:12) У мен...   Apr 12 2012, 07:57
||||- - Lotor   Цитата(Aprox @ Apr 12 2012, 11:57) Чтобы ...   Apr 12 2012, 08:29
||||- - MrYuran   Цитата(Aprox @ Apr 12 2012, 11:57) Дело з...   Apr 12 2012, 08:43
||||- - Aprox   Цитата(MrYuran @ Apr 12 2012, 11:43) ScmR...   Apr 12 2012, 11:54
|||- - Сергей Борщ   QUOTE (Aprox @ Apr 11 2012, 22:11) Работа...   Apr 11 2012, 19:56
||- - _pv   Цитата(Aprox @ Apr 10 2012, 16:02) Зато к...   Apr 10 2012, 11:35
||- - AHTOXA   Цитата(Aprox @ Apr 10 2012, 15:02) Вот, я...   Apr 10 2012, 12:31
||- - _Артём_   Цитата(AHTOXA @ Apr 10 2012, 15:31) Вложе...   Apr 10 2012, 14:11
||- - AHTOXA   Цитата(_Артём_ @ Apr 10 2012, 20:11) Може...   Apr 10 2012, 16:56
||- - _Артём_   Цитата(AHTOXA @ Apr 10 2012, 19:56) в scm...   Apr 10 2012, 18:08
|||- - AHTOXA   Цитата(_Артём_ @ Apr 11 2012, 00:08) Ну д...   Apr 11 2012, 07:26
|||- - _Артём_   Цитата(AHTOXA @ Apr 11 2012, 10:26) Ну, у...   Apr 11 2012, 17:09
|||- - AHTOXA   Цитата(_Артём_ @ Apr 11 2012, 23:09) 70 г...   Apr 11 2012, 18:07
||- - Aprox   Цитата(AHTOXA @ Apr 10 2012, 20:56) Нет, ...   Apr 10 2012, 20:30
||- - aaarrr   Цитата(Aprox @ Apr 11 2012, 00:30) Тогда ...   Apr 10 2012, 20:54
|- - bookevg   Цитата(Aprox @ Apr 9 2012, 22:32) 1. Вы ...   Apr 9 2012, 19:05
|- - Сергей Борщ   QUOTE (Aprox @ Apr 9 2012, 21:32) 1. Вы ...   Apr 9 2012, 20:53
- - Anatoly74   Найдена опечатка в порте AVR, Common/OS_Kernel.h В...   Apr 11 2012, 07:34
|- - _pv   Цитата(Anatoly74 @ Apr 11 2012, 14:34) На...   Apr 11 2012, 09:05
||- - demiurg_spb   Цитата(_pv @ Apr 11 2012, 12:05) а будет ...   Apr 11 2012, 09:08
|- - Сергей Борщ   QUOTE (Anatoly74 @ Apr 11 2012, 10:34) До...   Apr 11 2012, 10:23
||- - ReAl   Цитата(Aprox @ Apr 11 2012, 15:50) Но ни ...   Apr 11 2012, 13:48
||- - Сергей Борщ   QUOTE (ReAl @ Apr 11 2012, 16:48) Сдвигае...   Apr 11 2012, 14:03
||- - mdmitry   Получается, что в текущем варианте можно использо...   Apr 11 2012, 14:35
||- - Сергей Борщ   QUOTE (mdmitry @ Apr 11 2012, 17:35) Полу...   Apr 11 2012, 14:45
||- - mdmitry   Зануда: А в документации страницы с 115 по 118, ...   Apr 11 2012, 14:56
|- - ReAl   Цитата(Anatoly74 @ Apr 11 2012, 10:34) На...   Apr 11 2012, 13:39
- - mdmitry   Aprox, Вас ни кто не заставляет использовать эту О...   Apr 11 2012, 20:06
- - dxp   QUOTE (mdmitry @ Apr 11 2012, 21:56) Зану...   Apr 12 2012, 03:44
- - viterra   Дело в том, что с типами данных действительно БЕДА...   Apr 12 2012, 10:05
- - IgorKossak   Хочется надеяться, что на том и порешили. Дальше, ...   Apr 12 2012, 12:24
|- - Aprox   Цитата(IgorKossak @ Apr 12 2012, 16:24) Д...   Apr 12 2012, 17:42
|- - IgorKossak   Цитата(Aprox @ Apr 12 2012, 20:42) А по д...   Apr 12 2012, 17:56
|- - MrYuran   Цитата(Aprox @ Apr 12 2012, 21:42) А по д...   Apr 12 2012, 17:57
|- - ReAl   Цитата(MrYuran @ Apr 12 2012, 20:57) А вы...   Apr 12 2012, 20:33
|- - Aprox   Цитата(ReAl @ Apr 13 2012, 00:33) Я думаю...   Apr 13 2012, 07:18
|- - Nixon   Цитата(Aprox @ Apr 13 2012, 10:18) Если ч...   Apr 13 2012, 07:25
||- - Aprox   Цитата(Nixon @ Apr 13 2012, 11:25) Отличн...   Apr 14 2012, 09:01
|- - haker_fox   QUOTE (Aprox @ Apr 13 2012, 15:18) В моем...   Apr 13 2012, 15:24
|- - ReAl   Цитата(Aprox @ Apr 13 2012, 10:18) Нет, н...   Apr 13 2012, 18:47
- - Nixon   Хотелось бы в рантайме иметь возможность определен...   Apr 12 2012, 12:33
|- - mdmitry   Цитата(Nixon @ Apr 12 2012, 16:33) Хотело...   Apr 12 2012, 12:52
|- - Сергей Борщ   QUOTE (Nixon @ Apr 12 2012, 15:33) Хотело...   Apr 12 2012, 12:59
- - Nixon   Все правильно, но из плагина я читаю переменную ил...   Apr 12 2012, 13:04
|- - _Артём_   Цитата(Nixon @ Apr 12 2012, 16:04) Все пр...   Apr 12 2012, 13:30
- - dxp   QUOTE (IgorKossak @ Apr 13 2012, 00:56) П...   Apr 13 2012, 03:35
|- - ReAl   Цитата(dxp @ Apr 13 2012, 06:35) Ну, а си...   Apr 13 2012, 05:18
|- - IgorKossak   Цитата(dxp @ Apr 13 2012, 06:35) Одну я п...   Apr 13 2012, 06:42
- - Lotor   Позиция авторов, что задачи с одинаковым приоритет...   Apr 13 2012, 06:44
- - dxp   QUOTE (ReAl @ Apr 13 2012, 12:18) Кстати,...   Apr 13 2012, 13:08
|- - Lotor   Цитата(dxp @ Apr 13 2012, 17:08) Смысл в ...   Apr 13 2012, 13:46
|- - IgorKossak   Цитата(Lotor @ Apr 13 2012, 16:46) ... та...   Apr 13 2012, 14:29
- - Nixon   Хотел бы еще добавить свои пять копеек. IMHO полез...   Apr 13 2012, 13:27
- - dxp   QUOTE (Nixon @ Apr 13 2012, 20:27) По пов...   Apr 13 2012, 17:29
|- - Lotor   Цитата(dxp @ Apr 13 2012, 21:29) Да, тему...   Apr 16 2012, 04:20
|- - VslavX   Цитата(Lotor @ Apr 16 2012, 07:20) Я согл...   Apr 16 2012, 06:19
|- - sasamy   Цитата(Aprox @ Apr 15 2012, 12:20) одна и...   Apr 15 2012, 11:08
|- - AHTOXA   Цитата(Aprox @ Apr 15 2012, 14:20) Зачем ...   Apr 15 2012, 13:57
|- - ReAl   Цитата(Aprox @ Apr 15 2012, 11:20) Видите...   Apr 15 2012, 15:46
- - dxp   QUOTE (Aprox @ Apr 15 2012, 15:20) Отдель...   Apr 16 2012, 04:52
|- - Lotor   Цитата(dxp @ Apr 16 2012, 08:52) Почему б...   Apr 16 2012, 05:48
|- - dxp   QUOTE (Lotor @ Apr 16 2012, 12:48) У меня...   Apr 16 2012, 06:35
|- - ReAl   Цитата(dxp @ Apr 16 2012, 09:35) Кто сказ...   Apr 16 2012, 07:29
||- - dxp   QUOTE (ReAl @ Apr 16 2012, 14:29) Та не™,...   Apr 16 2012, 07:46
||- - Lotor   Цитата(dxp @ Apr 16 2012, 11:46) Кстати, ...   Apr 16 2012, 08:44
|- - Lotor   Цитата(dxp @ Apr 16 2012, 10:35) Всё равн...   Apr 16 2012, 07:29
|- - VslavX   Цитата(dxp @ Apr 16 2012, 09:35) Это что ...   Apr 16 2012, 08:40
|- - AHTOXA   Цитата(VslavX @ Apr 16 2012, 14:40) Поэто...   Apr 16 2012, 08:50
|- - VslavX   Цитата(AHTOXA @ Apr 16 2012, 11:50) ваш в...   Apr 16 2012, 09:11
|- - AHTOXA   У меня нет ни IAR-а ни LCP17xx BTW, а не было ли ...   Apr 16 2012, 09:27
|- - VslavX   Цитата(AHTOXA @ Apr 16 2012, 12:27) У мен...   Apr 16 2012, 09:34
|- - AHTOXA   Цитата(VslavX @ Apr 16 2012, 15:34) Думаю...   Apr 16 2012, 09:48
|- - VslavX   Цитата(AHTOXA @ Apr 16 2012, 12:48) Предс...   Apr 16 2012, 10:09
|- - AHTOXA   Цитата(VslavX @ Apr 16 2012, 16:09) Это в...   Apr 16 2012, 11:12
- - dxp   QUOTE (VslavX @ Apr 16 2012, 15:40) Опера...   Apr 16 2012, 11:03
- - VslavX   Цитата(dxp @ Apr 16 2012, 14:03) Я про ва...   Apr 16 2012, 11:17
- - dxp   QUOTE (VslavX @ Apr 16 2012, 18:17) По зн...   Apr 16 2012, 11:47
- - VslavX   Цитата(dxp @ Apr 16 2012, 14:47) Это хоро...   Apr 16 2012, 11:59
3 страниц V   1 2 3 >


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

 


RSS Текстовая версия Сейчас: 9th August 2025 - 04:18
Рейтинг@Mail.ru


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