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

 
 
> Порты AVR и компиляция
allexmor
сообщение Sep 26 2007, 15:26
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 19-05-07
Пользователь №: 27 828



Очень долго работал с разными МК(51, в основном ARM) решил попробовать AVR вопросы:
У этих AVR что нет удобного побитового доступа к портам?
Какой компилятор делает наиболее красивый код?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Sep 27 2007, 20:02
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Есть ещё один момент для WinAvr. Только за последних пару лет его пересобирали раз десять. Регулярно что-то меняли в том числе координальное. Так что насчёт совместимости и большого количества проектов это не вся правда. Править придётся. То там то тут выскакивают сообщения - пересобрал - неработает. Работать с ним отнюдь не легче чем с IARом. Хотя и IAR к числу лёгких в освоении пакетов не относится. Документация разбросана по всему интернету. Никакой упорядоченности. Что-то надо - полез искать. Чаще всего если и найдёшь, то в каком нибудь FAQе.

Короче очень геморойная вещь. Ясно что если освоил, то тогда нормально.

Выпад по поводу данных в EEPROM и FLASH - явно бредовый. Удобная вещь - она всегда удобная.

Зачем мне для обращения к Flash переменной обращаться ч/з подпрограмму? А если у меня в одной формуле/операторе используются переменные Flash и RAM? Например знакогенератор в видеоозу вывожу. IAR отличный код генерит и прекрасно оптимизирует такие места. А чтобы по ошибке не использовать переменные EEPROM, выход простой. defunct его фактически указал. Обзавите переменную eeMyInt. И всё для вас будет ясно.

Это просто яркий пример как можно всё с ног на голову поставить.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 28 2007, 22:37
Сообщение #3


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(SasaVitebsk @ Sep 28 2007, 00:02) *
Выпад по поводу данных в EEPROM и FLASH - явно бредовый. Удобная вещь - она всегда удобная.

Зачем мне для обращения к Flash переменной обращаться ч/з подпрограмму?

Это просто яркий пример как можно всё с ног на голову поставить.
Давайте посмотрим, на Вашем любимом IAR:
Код
#include <string.h>

__eeprom char eeString[]="Prived !";
char String[10]="ABCDEFGHIJ";

int main(void)
{
  memcpy(String,  (void const *)eeString, 10);
  memcpy((void *)eeString, String, 10);
  return 0;
}

Скомпилируйте этот код и пройдитесь по нему отладчиком,
я думаю что результат Вас сильно порадует, особенно второй memcpy biggrin.gif

P.S Тока не нужно мне рассказывать что этот пример высосан из пальца...
Прямое преобразование типов конечно вставлено специально,
тока где и когда Вы наткнетесь на такой результат в реальной программе будете знать
тока Вы и Ваш доктор в дурке (после отладки такого кода) smile.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 29 2007, 11:54
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(singlskv @ Sep 29 2007, 01:37) *
P.S Тока не нужно мне рассказывать что этот пример высосан из пальца...
Прямое преобразование типов конечно вставлено специально,
тока где и когда Вы наткнетесь на такой результат в реальной программе будете знать
тока Вы и Ваш доктор в дурке (после отладки такого кода) smile.gif

Ок, аналогичный пример:
Код
char Str[]="Hello";
char SomeChar;
int main(void)
{
     memcpy( (void *)SomeChar, Str, sizeof(Str));
}

Проблема здесь та же самая что и в вашем примере, и даже без переменных в eeprom.
Поэтому можете также вместе с доктором ковырять и этот код. Ибо когда нет понимания, что происходит в программе и что может происходить - забудьте про (void *).
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 29 2007, 17:21
Сообщение #5


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(defunct @ Sep 29 2007, 15:54) *
Ок, аналогичный пример:
Код
....................

Проблема здесь та же самая что и в вашем примере, и даже без переменных в eeprom.
Ну все таки не совсем одно и тоже, я свой пример показал только с точки зрения
потенциально проблемной части в использовании __eeprom, а в вашем примере просто
нарисован баг который из-за преобразования типов не смог поймать компилятор.

Насколько я знаю, в стандарте С вобще нет такого типа void __eeprom * smile.gif

А вот теперь представьте себе:
Код
__eeprom char eeString[]="Prived !";
char String[10]="ABCDEFGHI";
int Int=1;
long Long=2;

typedef struct
{
    void *ptr;
    int  size;
} SomeData;

SomeData* MassivHrenZnaetSKakimiDannimy[10];
......................
  {
    MassivHrenZnaetSKakimiDannimy[0].ptr = eeString;
    MassivHrenZnaetSKakimiDannimy[0].size = sizeof(eeString);
    MassivHrenZnaetSKakimiDannimy[1].ptr = String;
    MassivHrenZnaetSKakimiDannimy[1].size = sizeof(String);
    MassivHrenZnaetSKakimiDannimy[2].ptr = &Int;
    MassivHrenZnaetSKakimiDannimy[2].size = sizeof(Int);
    MassivHrenZnaetSKakimiDannimy[3].ptr = &Long;
    MassivHrenZnaetSKakimiDannimy[3].size = sizeof(Long);
.............................
.............................
.............................
    memcpy(KudatoTam,  MassivHrenZnaetSKakimiDannimy[x].ptr, MassivHrenZnaetSKakimiDannimy[x].size);
..........................
..........................
  }

Хрен знает какие данные оказались не совсем хрен знает какими, а все по тому что
кое кто придумал свой новый тип данных... __eeprom xxx
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 29 2007, 22:09
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(singlskv @ Sep 29 2007, 20:21) *
Насколько я знаю, в стандарте С вобще нет такого типа void __eeprom * smile.gif
Мы не обсуждали портируемость. В других компиляторах нет eeprom_write_byte();, а в некоторых процессорах нет eeprom wink.gif
Цитата(singlskv @ Sep 29 2007, 20:21) *
А вот теперь представьте себе:
Код
    MassivHrenZnaetSKakimiDannimy[0].ptr = eeString;
Получаем ошибку компилятора о несоответствии типов. Ту самую, которую в предыдущем примере вы задавили явным приведением к (void *). Ту самую, которую вы получите в WinAVR, если попытаетесь присвоть (void *) переменную типа (void EEMEM *) или prog_void.
Цитата(singlskv @ Sep 29 2007, 21:42) *
Где в этой проге можно написать cfg_EE = cfg_RAM ?
Не поверите - именно там, где надо сохранить данные. Компилятор подставит для каждого байта вызов __eeput8_16, в котором именно там, где это необходимо будет запрет/разрешение прерываний. Поверьте, код будет практически идентичен eeprom_write_byte(), за которую вы агитируете. Для очень редких случаев есть вариант *((uint8_t *)&cfg_EE.Config.ParamA)[2] = byte; Что касается ресурса eeprom, то я не случайно взял конфиг - как наиболее общий случай, когда ресурса хватит даже самому пытливому пользователю. И не пытайтесь меня убедить, что я должен потратить лишнее время чтобы экономить ресурс там, где его и так с запасом - это все равно что агитировать писать на асме (со всеми вытекающими недостатками), чтобы втиснуть програму в 2к памяти при 8к на борту. Если же есть какие-либо специальные требования (ресурс, необходимость отслеживать окончание по прерыванию) - думать головой никто не отменял.

Цитата(SergeiCh @ Sep 29 2007, 10:05) *
Но лучше (надеюсь, грамотные люди со мной согласятся) для конкретной задачи шевеления ногой писать макросы или online функции типа led_busy_on(), led_busy_off() и в коде использовать уже их. led_busy = 1, IMHO, хуже, разве что led_busy = ON smile.gif ...
Почти согласен. Но писать для каждой ноги xxx_on(), xxx_off() - да, конечно так и делал раньше. Но теперь - on(LED); off(FLASH_CS); if(signal(KEY)) - тоже абсолютно портируемо на любой С-компилятор. И сгенеренный код будет идентичен тому, который надо написать вручную для xxx_on(); xxx_off();


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 29 2007, 22:36
Сообщение #7


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Сергей Борщ @ Sep 30 2007, 01:57) *
Получаем ошибку компилятора о несоответствии типов. Ту самую, которую в предыдущем примере вы задавили явным приведением к (void *). Ту самую, которую вы получите в WinAVR, если попытаетесь присвоть (void *) переменную типа (void EEMEM *) или prog_void.
Я даже и не сомневался что именно Вы укажите на это несоответствие smile.gif,
этот код я даже и не пытался скомпилировать потому что очевидно одно из двух,
если компилятор пропустит такой код, то все очень плохо и пользоваться __eeprom
просто нельзя ни при каких обстоятельствах, а если не пропустит, то это говорит
о том что типы которые придумал IAR(__eeprom xxx), Эээ... ну мягко говоря не
являются таки типами..., по крайней мере в понимании С.
Цитата
Не поверите - именно там, где надо сохранить данные. Компилятор подставит для каждого байта вызов __eeput8_16, в котором именно там где это необходимо будет запрет/разрешение прерываний. Поверьте, код будет практически идентичен eeprom_write_byte(), за которую вы агитируете.
Упс..., это где это я агитировал за использование eeprom_write_byte() ?
Я этим ни разу не пользовался smile.gif У меня свои функции.
Если Вас не затруднит ответьте таки конкретно на 2 моих вопроса из поста №37.



Все равно не понимаю в чем Вы пытаетесь меня убедить.
Цитата(sensor_ua @ Sep 30 2007, 02:21) *
Код
/* Wait for completion of previous write */
while(EECR & (1<<EEWE));
В том что я обязан висеть в этом цикле пока не закончится запись ?
У меня это выглядит примерно так:
Код
//==============================================================
// Автомат записи в EEPROM
//==============================================================
void EepromRun()
{

  if (EECR & (1<<EEWE)) return;                // идет запись ? да, тогда отваливаем (другие дела)

  if (CurrState == EE_FREE)
  {
     ...................................
     ...................................

}

Цитата
Запись заканчивается не сразу после засылки адреса и данных

а после АППАРАТНОЙ записи - для мега16 это 8.5 ms типовое значение. Или Вы хотите сказать, что, буквы EEMEM автоматом вдруг делают неожидающей встроенную функцию
static inline void __attribute__ ((always_inline))
eeprom_write_byte (uint8_t *addr,uint8_t value);
? (Может, она случайноwink.gif и неожидающая, но тогда ею пользоваться низзя) А не пробовали посмотреть, во что раскладывается аналогичная операция у IAR? Дык тоже инлайновый вариант.
Если не используем встроенные функции или модификаторы, а боремся за отсутствие ожиданий при работе с EEPROM, то пример задачи не к месту - в обоих случаях нужно писать СВОЁ.

Я НЕ пользуюсь ни IARовским ни каким другим вариантом доступа к EEPROM.
У меня есть свой хорошо работающий автомат записи.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 30 2007, 07:59
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(singlskv @ Sep 30 2007, 01:36) *
а если не пропустит, то это говорит о том что типы которые придумал IAR(__eeprom xxx), Эээ... ну мягко говоря не являются таки типами..., по крайней мере в понимании С.
Это является расширением языка. Нормальные типы, ибо поддерживают все операции над данными - арифметику, присваивание, взятие адреса, обращение по указателю. Указатели на эти типы полностью аналогичны указателям на данные с __attribute__(("progmem")) и __attribute__(("EEPROM")), против которых (так получается) вы нас агитируете. Причем последние, в отличие от ИАРовских, не являются полноценными типами, ибо поддерживают только операцию взятия адреса и арифметику указателей.
Цитата(singlskv @ Sep 30 2007, 01:36) *
Упс..., это где это я агитировал за использование eeprom_write_byte() ?
Ну, раз вы агитируете за WinAVR и доступ функциями, раз вы нигде до этого не упомянули, что вами используется закат солнца вручную - телепатически я сделал вывод, что вы агитиреуте за реализованный в avr-libc метод.
Цитата(singlskv @ Sep 30 2007, 01:36) *
Если Вас не затруднит ответьте таки конкретно на 2 моих вопроса из поста №37.
Вопросов я там нашел два: 1)Где там использовать встроенные функции. Да, согласен, я не обратил внимание на 200-500 мкс, что меньше, чем время записи. Согласен, что в этом случае надо использовать самописные функци. Но, извините, а вы эти данные только пишете, и никогда не читаете? Если все же читаете, то что мешает использовать простые и удобные встроенные возможности компилятора?
Ваш вопрос номер два - про ресурс. Мне кажется, я на него ответил исчерпывающе - если ресурса хватает с запасом (а это наиболее частый случай, как в примере - при хранении конфигурации) то не имеет смысла тратить усилия на его экономию. Если он важен - можно сделать побайтовую запись с анализом.
Цитата(singlskv @ Sep 30 2007, 01:36) *
Все равно не понимаю в чем Вы пытаетесь меня убедить.
В том, что встроенная поддержка данных в eeprom и flash не вредное (как вы утверждаете), а напротив очень полезное и удобное (первое вытекает из второго) расширение компилятора.
Цитата(singlskv @ Sep 30 2007, 01:36) *
Я НЕ пользуюсь ни IARовским ни каким другим вариантом доступа к EEPROM.У меня есть свой хорошо работающий автомат записи.
Так я же и писал, что бывают случаи, когда надо работать головой и использовать нештатные решения. Но это не повод отказываться от удобных возможностей в остальных случаях.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Sep 30 2007, 12:13
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(Сергей Борщ @ Sep 30 2007, 11:59) *
Вопросов я там нашел два: 1)Где там использовать встроенные функции. Да, согласен, я не обратил внимание на 200-500 мкс, что меньше, чем время записи. Согласен, что в этом случае надо использовать самописные функци.

Собственно об этом и речь. Простое присваивание не заостряет на себе внимание, в отличии от вызова функции, и ведет к ошибкам от банальной невнимательности. Понятно, что в результате оба метода, и в ИАРе и в ГЦЦ одинаково эффективны. Но все же работа с ЕЕПРОМ у ГЦЦ больше напоминает обращение к внешней памяти, с ее неизбежными задержками, что помогает избегать глупых ошибок. Но тут уж видимо вопрос вкуса. Меня встроенные функции avr-libs вполне устраивают. Но вот никто почему-то не говорит о лицензионной чистоте используемого программного продукта....
Go to the top of the page
 
+Quote Post
Proton
сообщение Sep 30 2007, 12:42
Сообщение #10


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

Группа: Свой
Сообщений: 185
Регистрация: 3-08-05
Из: Новосибирск
Пользователь №: 7 334



Цитата(Qwertty @ Sep 30 2007, 19:13) *
Но вот никто почему-то не говорит о лицензионной чистоте используемого программного продукта....

А зачем об этом говорить если это не влияет на функциональность и качество компиляции?


--------------------
Всяк хорошая мысля к нам приходит опосля.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- allexmor   Порты AVR и компиляция   Sep 26 2007, 15:26
- - defunct   Цитата(allexmor @ Sep 26 2007, 18:26) У э...   Sep 26 2007, 16:01
- - Marian   Цитата(allexmor @ Sep 26 2007, 18:26) Оче...   Sep 26 2007, 16:38
|- - kv_addr   Цитата(Marian @ Sep 26 2007, 19:38) CVAVR...   Sep 27 2007, 20:15
- - sensor_ua   Цитататакого гонива как потребность применять 2 ко...   Sep 26 2007, 16:48
|- - defunct   Цитата(sensor_ua @ Sep 26 2007, 19:48) Wr...   Sep 26 2007, 22:19
|- - allexmor   Цитата(defunct @ Sep 27 2007, 02:19) Ну.....   Sep 27 2007, 04:51
- - bodja74   Зато сразу IOPIN=0x5555AAAA;   Sep 26 2007, 17:32
- - sensor_ua   Фаворит IAR. WinAVR вполне юзабилен, но когда нужн...   Sep 27 2007, 05:04
|- - allexmor   Цитата(sensor_ua @ Sep 27 2007, 09:04) Фа...   Sep 27 2007, 05:08
|- - alexander55   Цитата(allexmor @ Sep 27 2007, 09:08) Где...   Sep 27 2007, 05:49
- - mdmitry   WinAvr(gcc)+Eclipse - хорошая бесплатная связка дл...   Sep 27 2007, 06:27
|- - IJAR   IMHO: После IAR другие компиляторы даже пробовать...   Sep 27 2007, 06:51
|- - defunct   Цитата(IJAR @ Sep 27 2007, 09:51) IMHO: ...   Sep 27 2007, 08:56
|- - Qwertty   Цитата(defunct @ Sep 27 2007, 12:56) Ну п...   Sep 27 2007, 12:58
|- - defunct   Цитата(Qwertty @ Sep 27 2007, 15:58) Ну д...   Sep 27 2007, 13:10
||- - singlskv   Цитата(defunct @ Sep 27 2007, 17:10) Вы х...   Sep 27 2007, 14:48
|||- - defunct   Цитата(singlskv @ Sep 27 2007, 17:48) А к...   Sep 27 2007, 15:14
|||- - singlskv   Цитата(defunct @ Sep 27 2007, 19:14) Отли...   Sep 27 2007, 15:27
|||- - defunct   Цитата(singlskv @ Sep 27 2007, 18:27) eeC...   Sep 27 2007, 15:33
|||- - singlskv   Цитата(defunct @ Sep 27 2007, 19:33) Это ...   Sep 27 2007, 16:32
||- - Qwertty   Цитата(defunct @ Sep 27 2007, 17:10) Вы х...   Sep 27 2007, 16:23
|- - Сергей Борщ   Цитата(Qwertty @ Sep 27 2007, 15:58) Ну д...   Sep 27 2007, 14:23
|- - Qwertty   Цитата(Сергей Борщ @ Sep 27 2007, 18:23) ...   Sep 27 2007, 16:36
|- - singlskv   Цитата(Qwertty @ Sep 27 2007, 20:36) Знач...   Sep 27 2007, 17:49
|- - Сергей Борщ   Цитата(Qwertty @ Sep 27 2007, 19:36) Ну-н...   Sep 28 2007, 08:27
|- - Marian   Цитата(Сергей Борщ @ Sep 28 2007, 11:27) ...   Sep 28 2007, 15:16
- - GDI   В CodeVision можно сделать несколько файлов в прое...   Sep 27 2007, 09:09
||- - defunct   Цитата(singlskv @ Sep 29 2007, 20:21) Ну ...   Sep 29 2007, 19:47
|||- - singlskv   Цитата(defunct @ Sep 29 2007, 23:47) Да и...   Sep 29 2007, 20:15
|||- - defunct   Цитата(singlskv @ Sep 29 2007, 23:15) e=k...   Sep 29 2007, 20:20
|||- - singlskv   Цитата(defunct @ Sep 30 2007, 00:20) Ну и...   Sep 29 2007, 20:30
|||- - defunct   Цитата(singlskv @ Sep 29 2007, 23:30) [i]...   Sep 29 2007, 20:40
|||- - singlskv   Цитата(defunct @ Sep 30 2007, 00:40) Для ...   Sep 29 2007, 20:58
|||- - defunct   Цитата(singlskv @ Sep 30 2007, 01:36) Упс...   Sep 29 2007, 23:56
||||- - singlskv   Цитата(defunct @ Sep 30 2007, 03:56) Если...   Sep 30 2007, 18:32
||||- - SasaVitebsk   Цитата(singlskv @ Sep 30 2007, 21:32) Вос...   Sep 30 2007, 19:17
||||- - Сергей Борщ   Цитата(singlskv @ Sep 30 2007, 21:32) А ...   Sep 30 2007, 19:30
||||- - singlskv   Цитата(Сергей Борщ @ Sep 30 2007, 23:30) ...   Sep 30 2007, 20:04
||- - Dog Pawlowa   Цитата(Сергей Борщ @ Sep 30 2007, 01:09) ...   Sep 30 2007, 18:38
|||- - singlskv   Цитата(Dog Pawlowa @ Sep 30 2007, 22:38) ...   Sep 30 2007, 18:44
||||- - Dog Pawlowa   Цитата(singlskv @ Sep 30 2007, 21:44) Вы ...   Oct 1 2007, 11:56
|||- - defunct   Цитата(Dog Pawlowa @ Sep 30 2007, 21:38) ...   Sep 30 2007, 22:44
||- - Непомнящий Евгений   to Сергей Борщ Подскажите, а зачем нужна обвязка и...   Oct 1 2007, 10:38
|||- - Сергей Борщ   Цитата(Непомнящий Евгений @ Oct 1 2007, 13...   Oct 1 2007, 11:16
|||- - defunct   Цитата(Сергей Борщ @ Oct 1 2007, 14:16) К...   Oct 1 2007, 11:36
|||- - Сергей Борщ   Цитата(defunct @ Oct 1 2007, 14:36) Подро...   Oct 1 2007, 11:51
||- - SergeiCh   Цитата(Сергей Борщ @ Sep 30 2007, 05:09) ...   Oct 1 2007, 11:55
|- - Сергей Борщ   Цитата(singlskv @ Sep 29 2007, 01:37) Пря...   Sep 29 2007, 12:46
|- - singlskv   Цитата(Сергей Борщ @ Sep 29 2007, 16:46) ...   Sep 29 2007, 18:42
- - mdmitry   Увы! Началась религиозная война! По поводу...   Sep 27 2007, 20:51
- - SasaVitebsk   Преимущества они и в Африке преимущества. Вы пре...   Sep 28 2007, 23:06
|- - SergeiCh   Если хочется писать PORTB_0 = 1, это можно сделать...   Sep 29 2007, 07:05
- - sensor_ua   ЦитатаIAR дает нам простой инструмент доступа Заме...   Sep 29 2007, 19:56
- - sensor_ua   ЦитатаГде в этой проге можно написать cfg_EE = cfg...   Sep 29 2007, 21:05
|- - singlskv   Цитата(sensor_ua @ Sep 30 2007, 01:05) та...   Sep 29 2007, 21:26
- - sensor_ua   ЦитатаЯ НЕ пользуюсь ни IARовским ни каким другим ...   Sep 29 2007, 23:01
- - sensor_ua   ЦитатаEEMEM, PROGMEM я типами данных просто не счи...   Oct 1 2007, 05:17
- - Rst7   Кстати, между прочим, переделав eeprom.s90 наприме...   Oct 1 2007, 13:41
|- - SasaVitebsk   Цитата(Rst7 @ Oct 1 2007, 16:41) Кстати, ...   Oct 1 2007, 18:04
||- - Rst7   Цитата(SasaVitebsk @ Oct 1 2007, 21:04) ...   Oct 2 2007, 06:42
||- - SasaVitebsk   Цитата(Rst7 @ Oct 2 2007, 09:42) Ээээ... ...   Oct 2 2007, 11:39
||- - Rst7   Цитата(SasaVitebsk @ Oct 2 2007, 14:39) Я...   Oct 2 2007, 11:57
|- - singlskv   Цитата(Rst7 @ Oct 1 2007, 17:41) Кстати, ...   Oct 2 2007, 18:06
|- - Непомнящий Евгений   Цитата(singlskv @ Oct 2 2007, 22:06) Може...   Oct 3 2007, 04:22
- - sensor_ua   ЦитатаБыла идея патчить кодегенератор, дабы он дел...   Oct 2 2007, 14:18
|- - Rst7   Цитата(sensor_ua @ Oct 2 2007, 17:18) Пыт...   Oct 3 2007, 05:38
- - sensor_ua   ЦитатаМожет все-таки стоит в подобных ситуациях оз...   Oct 2 2007, 19:38
|- - singlskv   Цитата(sensor_ua @ Oct 2 2007, 23:38) А ...   Oct 2 2007, 20:08
- - sensor_ua   ЦитатаКак сохранить текущую конфигурацию прибора п...   Oct 2 2007, 20:32
|- - singlskv   Цитата(sensor_ua @ Oct 3 2007, 00:32) Оза...   Oct 2 2007, 20:56
|- - defunct   Цитата(singlskv @ Oct 2 2007, 23:56) Если...   Oct 2 2007, 21:44
|- - sensor_ua   Цитата(singlskv @ Oct 2 2007, 23:56) Я и ...   Oct 3 2007, 05:16
- - sensor_ua   Цитатаон генерирует комманду записи в RAMPx, ее мо...   Oct 3 2007, 06:58


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:29
Рейтинг@Mail.ru


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