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

 
 
> Работа TXC в USART, Не могу разобраться с флагом "окончание передачи", помогите
fmdost
сообщение Aug 19 2007, 23:46
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Доброго времени суток!
Помогите разобраться с работой USART в tiny2313. Немогу понять как работает флаг TXC. В даташите написано что он выставляется по окончании передачи. Но там есть буферизация в 2 байта. Он выставляется если передал 1 байт или если передал всё?
Передаю сразу 2 байта, и жду прерывания, для переключения драйвера 485 на приём. Приёма на другом конце не происходит. Работает только если после передачи первого байта проверять флаг вручную и передавать второй байт после его установки. Соответственно так же переключаю на приём.
ЗЫ. В прерывании сбрасывал флаг записью в него 1. При передаче 2х байт запрещал прерывания для неразрывности, всё равно ничего не добился. Смотрел по осцылу время нахождения в режиме передача, но ничего непонял. Сколько реально времени (включая служебные биты 1-четности и 1-стоп 9-ый) будет передавать 2 байта усарт?

Сообщение отредактировал Т.Достоевский - Aug 20 2007, 00:03
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
defunct
сообщение Aug 20 2007, 15:46
Сообщение #2


кекс
******

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



Цитата
Работает только если после передачи первого байта проверять флаг вручную и передавать второй байт после его установки. Соответственно так же переключаю на приём.

Не надо ничего проверять.
Сделайте очередь.
В прерывании TXC посылайте следующий байт - если нечего слать - то переключайте линию на прием.

PS: вы на чем пишете программу? asm/c?

Цитата
Честно говоря никогда не испольвал этот флаг. Использую вместо него UDRE, он выставляется если регистр данных передатчика пуст

честно говоря никогда не использовал UDRE. Т.к. по TXC все что связано с 485-м реализуется гораздо удобнее, как бонус даже межсимвольный интервал непроизвольно получается.
Go to the top of the page
 
+Quote Post
fmdost
сообщение Aug 20 2007, 20:11
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Цитата(defunct @ Aug 20 2007, 19:46) *
Не надо ничего проверять.
Сделайте очередь.
В прерывании TXC посылайте следующий байт - если нечего слать - то переключайте линию на прием.

PS: вы на чем пишете программу? asm/c?
честно говоря никогда не использовал UDRE. Т.к. по TXC все что связано с 485-м реализуется гораздо удобнее, как бонус даже межсимвольный интервал непроизвольно получается.

Пишу на асме. Вот и Я этот бонус захотел. Всётаки наверное камень глючит. Походу 2 прерывания даёт.
Посылаю сразу 2 байта. И получаю 2 прерывания по TXC! К сожалению новый будет только в четверг!

Сообщение отредактировал Т.Достоевский - Aug 20 2007, 20:13
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 21 2007, 00:41
Сообщение #4


кекс
******

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



Цитата(Т.Достоевский @ Aug 20 2007, 23:11) *
Пишу на асме. Вот и Я этот бонус захотел. Всётаки наверное камень глючит. Походу 2 прерывания даёт.
Посылаю сразу 2 байта. И получаю 2 прерывания по TXC! К сожалению новый будет только в четверг!

Я где-то приводил пример работы с UART на asm'e..
Искать долго, поэтому просто прикляю его еще раз.
смотрите в атаче.

Пример написан под AT90S2313, чтобы переделать под Tiny2313 надо будет поменять таблицу векторов и возможно пару штрихов с настройкой UART'a. Так же надо будет выставить константы Fosc и BaudRate согласно вашим потребностям.

константа
.equ PD7 = 7 ; // объявим константу которая не прописана в .inc файле

используется как флажек (прием/передачи)
поменяйте ее на Pin которым у вас меняется направление (прием/передача) 485-го.

Цитата
у меня фраза "камень глючит" или "винда не так села" вызывает ....

Согласен. Камень тут не причем.
2 TXC на 2 переданных байта - абсолютно нормальное поведение чипа.
Прикрепленные файлы
Прикрепленный файл  HelloWorld.zip ( 3.79 килобайт ) Кол-во скачиваний: 100
 
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 22 2007, 10:09
Сообщение #5


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



To defunct. Посмотрел на ваш код.
Цитата(defunct @ Aug 20 2007, 23:41) *
Пример написан под AT90S2313, чтобы переделать под Tiny2313 надо будет поменять таблицу векторов и возможно пару штрихов с настройкой UART'a

Одно место меня озадачило, в теле подпрограммы PutChar вы снова вызываете PutChar. Это что, такая рекурсия заложена, или как? Вроде не должно работать.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 22 2007, 12:55
Сообщение #6


кекс
******

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



Цитата(=GM= @ Aug 22 2007, 13:09) *
Одно место меня озадачило, в теле подпрограммы PutChar вы снова вызываете PutChar. Это что, такая рекурсия заложена, или как?

Спасибо что проявили интерес ;>
Да - там рекурсия.
посылаем строку "hello\n"
putchar автоматически добавит возврат каретки и терминал примет "hello\r\n".

Цитата
Вроде не должно работать.

Попробуйте код. ;>
Какой резон мне выкладывать что-то нерабочее?
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 23 2007, 09:19
Сообщение #7


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Aug 22 2007, 11:55) *
Да - там рекурсия

Посмотрел попристальнее - нет там никакой рекурсии. И вообще, проще было бы вызывать не rcall PutChar, a rcall __skip_add_cr (ну и названьице(:-)). И выполнение было бы быстрее, ведь рутина у вас и в прерывании вызывается...

Цитата(defunct @ Aug 22 2007, 11:55) *
Попробуйте код

А чего его пробовать, и так видно, что тяжеловесно и неоптимально. Например, фрагмент с кольцевым буфером можно написать в два раза короче. А что там за пляски с бубнами в PutChar: in AH,SREG cli + out SREG,AH? Не проще ли обойтись связкой cli/sei. Или вот: зачем стоит tst AL перед rcall PutChar в рутине Print?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 23 2007, 12:49
Сообщение #8


кекс
******

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



Цитата(=GM= @ Aug 23 2007, 12:19) *
Посмотрел попристальнее - нет там никакой рекурсии.

Смотрите пристальнее сразу. Ок?
Есть там рекурсия, коль скоро функция вызывает сама себя.

Цитата
проще было бы вызывать не rcall PutChar, a rcall __skip_add_cr (ну и названьице(:-)).

Не сомневаюсь что вы именно так и поступаете, у меня же все метки начинающиеся с "__" внутренние и я стараюсь их не вызывать, чтобы было меньше путаницы.

Цитата
А что там за пляски с бубнами в PutChar: in AH,SREG cli + out SREG,AH? Не проще ли обойтись связкой cli/sei. Или вот: зачем стоит tst AL перед rcall PutChar в рутине Print?

Не проще. Потому что вызывается эта функция еще и в прерывании.

И вообще прежде чем хаить хамоватым тоном - разберитесь с кодом.

Цитата
Или вот: зачем стоит tst AL перед rcall PutChar в рутине Print?

опечатка.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 23 2007, 16:14
Сообщение #9


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Aug 23 2007, 11:49) *
Есть там рекурсия, коль скоро функция вызывает сама себя.

Ну-ну, tell it your sailors(:-). Рекурсии там нет. Рекурсия – это сведение вычисления задачи некоторой размерности N к вычислению аналогичных задач меньшей размерности. Вот пример классической рекурсии.
Код
Задача заключается в том, чтобы найти по заданному n число последовательности Фибоначчи Fn.
#include <stdio.h>
#include <time.h>
long F(unsigned int n)
{
  return n <= 1 ? n : F(n-1) + F(n-2);
}
int main()
{
  time_t begin, end;
  long res;
  for(int n = 0; n < 40; n++)
  {
    time(&begin);
    res = F(n);
    time(&end);
    printf("%-3i\t%-9li\t%-20.3f\n",n,res,difftime(end,begin));
  }
  return 0;
}

Кстати, цикл является частным видом рекурсии. У вас ни того, ни другого.
Цитата(defunct @ Aug 23 2007, 11:49) *
Не сомневаюсь что вы именно так и поступаете, у меня же все метки начинающиеся с "__" внутренние и я стараюсь их не вызывать, чтобы было меньше путаницы.

Дорогой мой, зачем метки тогда вообще писать. Я пишу программы так, чтобы они были эффективные и красивые, а не какие-то там крокозябры (это не вам).
Цитата(defunct @ Aug 23 2007, 11:49) *
Не проще. Потому что вызывается эта функция еще и в прерывании.

Ну хорошо, не проще, так не проще. Сейчас я вам покажу как ваш код работает. Выполняется программа Print, перед brne возникает прерывание по приему с rx. Программа прерывания запишет принятый байт внутрь строки, которую программа Print собирается поместить в кольцевой буфер. В результате вы получите не ту строку, которую копировали из флеши, а несколько другую. Я бы назвал сиё скрытым (неявным) багом.
Цитата(defunct @ Aug 23 2007, 11:49) *
И вообще прежде чем хаить хамоватым тоном - разберитесь с кодом

Прошу прощения, если кого-то обидел, но я никому не хамил и никого не хаял. Была выложена программа, идёт её обсуждение, ничего личного.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 23 2007, 17:54
Сообщение #10


кекс
******

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



Цитата(=GM= @ Aug 23 2007, 19:14) *
Ну-ну, tell it your sailors(:-). Рекурсии там нет. Рекурсия – это сведение вычисления задачи некоторой размерности N к вычислению аналогичных задач меньшей размерности. Вот пример классической рекурсии.


Ваше определение рекурсии и пример - неверны. либо взяты не из той предметной области.

рекурсия — частичное определение объекта через себя, определение объекта с использованием ранее определённых. Рекурсия используется, когда можно выделить самоподобие задачи.

В программировании рекурсия — вызов функции или процедуры из неё же самой

источник:
http://ru.wikipedia.org/wiki/Рекурсия

Цитата
Ну хорошо, не проще, так не проще. Сейчас я вам покажу как ваш код работает.

lol.gif

Цитата
Выполняется программа Print, перед brne возникает прерывание по приему с rx. Программа прерывания запишет принятый байт внутрь строки, которую программа Print собирается поместить в кольцевой буфер. В результате вы получите не ту строку, которую копировали из флеши, а несколько другую. Я бы назвал сиё скрытым (неявным) багом.

Теоретически возможно. Атомарность Print я не организовывал.
Но конструкция реализованная в PutChar не препятствует организации атомарности Print.

тем же самым in Rr, SREG - cli - out SREG, Rr

Цитата
Дорогой мой, зачем метки тогда вообще писать.

Во-первых выбирайте выражения. Своему бойфренду можете говорить "дорогой мой".
Во-вторых, я не виноват что русский язык порождает неоднозначность ("не вызывать" - имелось в виду "call" не делать. )
в третьих - это такой стиль - для обозначения внутренних меток (локальных для функций) на которые осуществяется условный переход я применю "тэг" - "__".
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 23 2007, 21:29
Сообщение #11


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Aug 23 2007, 17:54) *
Ваше определение рекурсии и пример - неверны. либо взяты не из той предметной области. рекурсия — частичное определение объекта через себя, определение объекта с использованием ранее определённых. Рекурсия используется, когда можно выделить самоподобие задачи.

Мой пример классический, не я его выдумал, взгляните на него непредвзято (заменил там рекурсивную функцию F на более заметную RECURRENCE).
Код
long RECURRENCE(unsigned int n)
{
  return n <= 1 ? n : RECURRENCE(n-1) + RECURRENCE(n-2);
}

Напишите ваш код PutChar на си в таком же виде, тогда и будем говорить, что верно, а что неверно. Интересно, что у вас будет параметром рекурсии?
Цитата(defunct @ Aug 23 2007, 17:54) *
Теоретически возможно. Атомарность Print я не организовывал.
Но конструкция, реализованная в PutChar не препятствует организации атомарности Print.
тем же самым in Rr, SREG - cli - out SREG, Rr

Так я и сказал. что все эти примочки внутри PutChar не нужны, не решают они задачу до конца, а снаружи атомарность передачи строки вы не обеспечили. И не теоретически, а сугубо практически, поверьте.
Цитата(defunct @ Aug 23 2007, 17:54) *
Во-первых, выбирайте выражения. Своему бойфренду можете говорить "дорогой мой"

Да что ж такое! Такое впечатление, что или у всех мозги такие извращенные, или все свихнулись на этой секссвободе, что ни скажешь, всё переводят в плоскость гениталий. Вы уж, уважаемый, тоже слова выбирайте.


Цитата(SasaVitebsk @ Aug 23 2007, 18:16) *
=GM=, при всём уважении к Вашим знаниям давайте будем добрее друг к другу. Так вы отобъёте всякое желание выложить свою прогу, чтобы кому-то помочь. smile.gif

Знаний как раз маловато, спасибо форуму, много даёт в плане самообразования. Да я...белый и пушистый, defunct'а почти люблю (как брата, а то опять поймет не в той плоскости(:-)). Что касается проги, не собирался я её критиковать, с первого взгляда она мне понравилась, посмотрел по диагонали - в подпрограмме вывода символа вроде используется рекурсия, вот думаю, люди рекурсию применяют, а я от неё как чёрт от ладана, ну я и спросил спроста, а потом уж стал смотреть, а он мне отвечает, да, там рекурсия, да какая рекурсия, курам на смех
Цитата(SasaVitebsk @ Aug 23 2007, 18:16) *
Любая мало-мальски приличная прога содержит ошибки. Иногда их вылавливаешь годами. Плюс различные предпочтения у каждого программиста. Это как аккорды на гитаре. Один пользуется чаще такими, а другой другими. Но если оба музыканта, то музыка всё равно звучит. smile.gif

Согласен. Ошибок в любой программе полно, у самого так. Смотришь на программу годичной давности, и думаешь, неужели это я написал такое гуано? Ну посмотрел я его программу, ну высказал замечания, будь благодарен, что кто-то потратил своё время, разобрался, принял участие, ответил, что плохого? Почему сразу надо воспринимать как наезд, которого и в помине не было. Дефункту не надо было говорить, чтоб код испытал(:-). Да если б все мои программы так критиковали, это было бы здорово, и программы были бы в стократ лучше...


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 23 2007, 21:57
Сообщение #12


кекс
******

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



Цитата(=GM= @ Aug 24 2007, 00:29) *
Мой пример классический, не я его выдумал, взгляните на него непредвзято (заменил там рекурсивную функцию F на более заметную RECURRENCE).

Взглянул непредвзято.. будем считать, что вы взяли определение рекурсии не из той предметной области.

Цитата
Напишите ваш код PutChar на си в таком же виде, тогда и будем говорить, что верно, а что неверно. Интересно, что у вас будет параметром рекурсии?

отправляемый char, а что еще может быть параметром?
функциональный аналог ассемблерной функции:

Код
void put(U8 ch)
{
    if (ch == 0x0A) // add CR char ahead of LF
        put(0x0D);
    {
        U8 IStatus = ILock()
        pRing->storage[ pRing->tail ] = ch;
        pRing->tail = RingNextTail( pRing );
        IUnlock( IStatus );
    }
}



Цитата
Так я и сказал. что все эти примочки внутри PutChar не нужны, не решают они задачу до конца,

Это вам так кажется.
Примочки внутри putchar решают свои задачи:
- атомарность выгрузки символа в очередь
- добавление символа CR

Цитата
а снаружи атомарность передачи строки вы не обеспечили. И не теоретически, а сугубо практически, поверьте.

Господи, да что вы цепляетесь к фантикам от конфет. Чес слово.
Уж не пойму или у меня там полный бред в коде или у вас проблемы с прочтением алгоритма из асм программы.

поменять Print так:
Код
/*
* Print()
* Выводит строки размещенные во флеш памяти через PutChar
* ---> Z - указатель на строку оканчиваемую \0 во флеш
* <--- ничего не возвращает
*/
Print:
    in    AH, SREG
    push  AH
    cli
__do_output:    
    lpm; // читаем данные флеш
    adiw  Z, 1  // увеличим указатель на 1 (z++)
    mov   AL, R0
    rcall PutChar
    tst   AL
    brne  __do_output
    
    pop   AH
    out   SREG, AH
    ret

и будет обеспечиваться атомарность.
push/pop конечно же можно сократить если использовать какой-либо другой регистр для хранения SREG вместо AH, но поставил специально для наглядности.

Цитата
да какая рекурсия, курам на смех

Маленькая простенькая - но рекурсия, т.к. функция вызывает сама себя.
Прочитайте определение рекурсии на wiki.


Цитата
Ну посмотрел я его программу, ну высказал замечания, будь благодарен, что кто-то потратил своё время, разобрался, принял участие, ответил, что плохого?

Я выразил вам благодарность и попытался нормально ответить на ваши вопросы вначале.

PS: я и сейчас пытаюсь отвечать на ваши вопросы по-сущесту, с приведением ссылок и примеров. Может вы просто не замечаете?
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 23 2007, 22:22
Сообщение #13


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Aug 23 2007, 21:57) *
Уж не пойму или у меня там полный бред в коде или у вас проблемы с прочтением алгоритма из асм программы. поменять Print так:
Код
/*
* Print()
* Выводит строки размещенный во флеш памяти через UART
* ---> Z - указатель на строку оканчиваемую \0 во флеш
* <--- ничего не возвращает
*/
Print:    in    AH, SREG
    push  AH
    cli
__do_output:    
    lpm; // читаем данные флеш
    adiw  Z, 1  // увеличим указатель на 1 (z++)
    mov   AL, R0
    rcall PutChar
    tst   AL
    brne  __do_output
    pop   AH
    out   SREG, AH
    ret

и будет обеспечиваться атомарность

Ну, это другое дело. Но тогда сохранение/восстановление статус-регистра в PutChar не нужно, о чём я и толкую последние две страницы.

Кстати, неплохо бы добавить проверку на переполнение буфера в подпрограмме обработки прерываний по приему. UART_RX_ISR так и будет писать по кругу, никаких ограничений у вас нет, возможен скрытый баг.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Т.Достоевский   Работа TXC в USART   Aug 19 2007, 23:46
- - haker_fox   Цитата(Т.Достоевский @ Aug 20 2007, 08:46...   Aug 20 2007, 03:06
- - arttab   Заслали Вы в буфер байт или 2 байта. начинается пе...   Aug 20 2007, 04:04
|- - haker_fox   Цитата(arttab @ Aug 20 2007, 13:04) Но пе...   Aug 20 2007, 04:48
|- - Т.Достоевский   Цитата(arttab @ Aug 20 2007, 08:04) Засла...   Aug 20 2007, 10:44
|- - IEC   Цитата(Т.Достоевский @ Aug 20 2007, 13:44...   Aug 20 2007, 10:49
|- - Т.Достоевский   Цитата(IEC @ Aug 20 2007, 14:49) ВСЕГО ба...   Aug 20 2007, 11:02
|- - SasaVitebsk   Цитата(Т.Достоевский @ Aug 20 2007, 14:02...   Aug 20 2007, 14:56
- - vesago   Для 485 я пользую следующие конструкции: Код//POPT...   Aug 20 2007, 07:06
|- - Т.Достоевский   Цитата(vesago @ Aug 20 2007, 11:06) Код#p...   Aug 20 2007, 10:47
|- - vesago   Цитата(Т.Достоевский @ Aug 20 2007, 13:47...   Aug 21 2007, 09:47
- - IEC   Цитата(Т.Достоевский @ Aug 20 2007, 02:46...   Aug 20 2007, 10:46
|- - SasaVitebsk   Цитата(Т.Достоевский @ Aug 20 2007, 23:11...   Aug 20 2007, 22:56
|- - Т.Достоевский   Цитата(defunct @ Aug 21 2007, 04:41) 2 TX...   Aug 21 2007, 02:06
|- - defunct   Цитата(=GM= @ Aug 24 2007, 01:22) Ну, это...   Aug 23 2007, 22:41
|- - =GM=   Открыл новую тему на предмет написания и использов...   Aug 24 2007, 20:19
- - arttab   Почему получается 2 прерывания по TXC при передачи...   Aug 21 2007, 04:53
|- - Rst7   Цитата(arttab @ Aug 21 2007, 07:53) Почем...   Aug 21 2007, 10:59
|- - defunct   Цитата(Rst7 @ Aug 21 2007, 13:59) Вообщем...   Aug 21 2007, 11:47
||- - Rst7   Цитата(defunct @ Aug 21 2007, 14:47) Они ...   Aug 21 2007, 11:59
||- - defunct   Цитата(Rst7 @ Aug 21 2007, 14:59) Обоснуй...   Aug 21 2007, 15:48
||- - Rst7   Цитата(defunct @ Aug 21 2007, 18:48) Ну н...   Aug 22 2007, 05:20
|- - IEC   Цитата(Rst7 @ Aug 21 2007, 13:59) Работат...   Aug 21 2007, 13:42
|- - ReAl   Цитата(Rst7 @ Aug 21 2007, 12:59) Ну в пр...   Aug 22 2007, 06:40
- - Igor26   ЦитатаЧто вы понимаете под словом "отладчик...   Aug 21 2007, 05:19
- - WHALE   А AVRSTUDIO че не пользуете?Такие вещи там нормаль...   Aug 21 2007, 06:10
|- - Т.Достоевский   Цитата(WHALE @ Aug 21 2007, 10:10) А AVRS...   Aug 21 2007, 09:44
|- - Maik-vs   Цитата(Т.Достоевский @ Aug 21 2007, 13:44...   Aug 21 2007, 13:59
|- - WHALE   Цитата(Maik-vs @ Aug 21 2007, 17:59)...   Aug 21 2007, 17:45
|- - Maik-vs   Цитата(WHALE @ Aug 21 2007, 21:45) Дык у ...   Aug 22 2007, 06:13
- - SasaVitebsk   А я был очень рад увидеть два флага. Наверное посл...   Aug 21 2007, 20:29
- - SasaVitebsk   =GM=, при всём уважении к Вашим знаниям давайте бу...   Aug 23 2007, 18:16
- - WHALE   ЦитатаРекурсия – это сведение вычисления задачи не...   Aug 23 2007, 18:42
- - Т.Достоевский   С новым камнем всё заработало. Проблема была не с ...   Aug 27 2007, 21:29
- - Rst7   Цитата(Т.Достоевский @ Aug 28 2007, 00:29...   Aug 28 2007, 05:16
- - Maik-vs   Цитата(Rst7 @ Aug 28 2007, 09:16) 2 раза ...   Aug 28 2007, 09:24


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

 


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


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