Форт-система

Готовая электроника для самодельного робота. Уровень от начинающих до опытных конструкторов.

Re: Форт-система

Сообщение lebaon » 06 окт 2008, 19:21

: ПОДЕРГАТЬ 1 PORTA ;

:crazy:
Аватара пользователя
lebaon
Безбашенный Теоретик
 
Сообщения: 1137
Зарегистрирован: 07 янв 2006, 18:30
Откуда: Подмосковье

Re: Форт-система

Сообщение VoidVolker » 20 окт 2008, 13:14

Извините Товарищи, я вынужден Вас покинуть - у меня появилась более прогрессивная игрушка :pardon: Желаю Вам всяческих успехов и надеюсь все-таки оцените и будете развивать Форт-направление 8)
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc
Аватара пользователя
VoidVolker
 
Сообщения: 27
Зарегистрирован: 08 авг 2008, 18:47
Откуда: Подмосковье
прог. языки: Форт

Re: Форт-система

Сообщение EdGull » 20 окт 2008, 13:32

ну теперь мы точно форт не оценим... :D
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: Форт-система

Сообщение hudbrog » 20 окт 2008, 13:55

Че за игрушка-то хоть? может нам тоже стоит себе такую завести :D
У меня в голове опилки и длинные слова меня только огорчают.
Аватара пользователя
hudbrog
 
Сообщения: 1585
Зарегистрирован: 14 май 2008, 15:49
Откуда: Москва
ФИО: Алексей

Re: Форт-система

Сообщение Myp » 20 окт 2008, 18:40

VoidVolker, завёл себе женщину :: ?
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Форт-система

Сообщение chu » 23 сен 2010, 10:40

Отмечусь я посильным вкладом для оживления дебатов...)
Итак, к делу:

Заинтересовал amforth 4.0. Скачал. Собрал макетку: ATmega32 + 4светодиода + 3 кнопы.
Скомпилил amforth на 8МГц. Прошил. Все прошло штатно. Написал uploader ( на SP-Forth),
загрузил в amforth все, что нашлось в папочке /lib (в том числе assembler и multitasker ). Израсходовано ресурсов:
Код: Выделить всё
> .res
free FLASH cells      7240
free RAM cells        1734
used EEPROM cells     64
used data stack cells 0
used return stack     10
free return stack     70
ok
> amforth 4.0 ATmega32
>

Поиграл со светодиодами:
Код: Выделить всё
\ #include bitnames.frt

PORTC 4 portpin: green
PORTC 3 portpin: red
PORTC 2 portpin: blue
PORTD 7 portpin: white   \ OC2 выход компаратора таймера2

: inileds
        green pin_output
        red   pin_output
        blue  pin_output
        white pin_output
        ;

: blink ( n n -- )
        0 ?do
        blue over pulse dup ms
        red  over pulse dup ms
        loop drop
        ;
\ стописят раз моргнуть синий-красный, импульсы и паузы 75 миллисекунд
\ 75 150 blink

тут в определении blink - ошибка!
лениво править - предлагаю разобраться самостоятельно :))
Поиграл с ШИМ'ом ( яркость светодиода):
Код: Выделить всё
: inilight
       [ 1 6 lshift        \ wgm00
         1 5 lshift or ]   \ com01
        TCCR2 c!   
        ;
hex

\ выключить свет ( остановить таймер CS2[2..0] = 000 )
: -light   TCCR2 dup c@ F8 and swap c! white low ;
\ включить
: +light   TCCR2 dup c@ 1 or swap c! ; \ ( CS2[2..0] = 001 )
\ яркость
: bright! ( n -- ) FF and OCR2 c! ;


Покрутил два DC двигателя от старого двухкассетного магнитофона ( драйвер L293B )
Код: Выделить всё
\ motor1:
\ разрешение/скорость(ШИМ)
PORTD 5 portpin: en1 en1 pin_output
\ направление:
PORTA 6 portpin: m10 m10 pin_output
PORTA 7 portpin: m11 m11 pin_output

\ motor2:
\ разрешение/скорость(ШИМ)
PORTD 4 portpin: en2 en2 pin_output
\ направление:
PORTA 4 portpin: m20 m20 pin_output
PORTA 5 portpin: m21 m21 pin_output

код отсутствует, так как крутил напрямую в консоли, а лог не сохранил :pardon:

Подключил шаговый двигатель от пятидюймового флопика - 12В, 200 шагов на круг:
Код: Выделить всё
marker stepper

  base @ hex

  PORTA F bitmask: stepper1  stepper1 pin_output

  create phase
  5 ,  \ 0101
  1 ,  \ 0001
  9 ,  \ 1001
  8 ,  \ 1000
  A ,  \ 1010
  2 ,  \ 0010
  6 ,  \ 0110
  4 ,  \ 0100   

  base !

\ это константы, которые прибавляются к индексу( смещение в таблице phase)
1 constant half-step
2 constant wave
2 constant normal

variable sequence
variable idx        \ текущий индекс в таблице
variable direction
variable dly        \ пауза между последовательными шагами

*************
упс, нада бежать, продолжу пзже...
Последний раз редактировалось chu 08 май 2013, 10:23, всего редактировалось 3 раз(а).
Аватара пользователя
chu
 
Сообщения: 77
Зарегистрирован: 23 сен 2010, 09:16
прог. языки: Forth

Re: Форт-система

Сообщение chu » 02 окт 2010, 16:52

Итак, недельный перерыв...Бездарно прошла неделя, чего там говорить - пустая беготня в поисках работы, никчемушное пиянство...увы.
С другой стороны:
- 1. обновил amForth - с amforth 4.0 до amforth 4.2;
- 2. поправил самописный amforth-4.2_uploader.spf;
- 3. надыбал второй шаговик 12В, 200 шагов, идентичный первому
и подключил его к ATmega32.Соответственно поменялась концепция кода.

Итак, два шаговых двигателя, обеспечивающие полярную систему координат - азимут/угол_места. Предполагается управление системой с помощью мышки. ( Вместо "пушки" - лазерная указка). И, конечно же, - Forth ;)

По порядку:
1. Скомпилированный (AVR Studio 4) amForth4.2 с полным комплектом слов:

Код: Выделить всё
   
ATmega32 memory use summary [bytes]:
Segment   Begin    End      Code   Data   Used    Size   Use%
---------------------------------------------------------------
[.cseg] 0x000000 0x0077b0   2152   9510  11662   32768  35.6%
[.dseg] 0x000060 0x000060      0      0      0    2048   0.0%
[.eseg] 0x000000 0x000040      0     64     64    1024   6.3%

Assembly complete, 0 errors, 0 warnings


2. После загрузки 18-ти "библиотечных" файлов ( lib/*.frt ):
Код: Выделить всё

amforth 4.2 ATmega32
> .res
amforth 4.2 ATmega32 running at 8000 kHz
free FLASH cells        6211
free RAM bytes          1744
used EEPROM bytes       68
used data stack cells   0
used return stack cells 5
free return stack cells 35
ok
>




3. Код - в студию!
Код: Выделить всё

\
\ stepper.frt
\ chu 16:09 29.09.2010
\
\ ==============================================================
\
\ Stepper motor
\

\ The half-step sequence
\ 0 1 0 1   \ 0x05
\ 0 0 0 1   \ 0x01
\ 1 0 0 1   \ 0x09
\ 1 0 0 0   \ 0x08
\ 1 0 1 0   \ 0x0A
\ 0 0 1 0   \ 0x02
\ 0 1 1 0   \ 0x06
\ 0 1 0 0   \ 0x04

\
\ ==============================================================
\

  marker -stepper

  base @ hex
 
  create phase
  55 ,
  11 ,
  99 ,
  88 ,
  AA ,
  22 ,
  66 ,
  44 ,
 
  base !

  1 constant half-step
  2 constant wave
  2 constant normal

\
\ ==============================================================
\

  : -- create over , + does> i@ + ;
 
  0
  1 -- idx              \ displacement in phase table
  1 -- sequence         \ value to change idx
  1 -- shft             \ reserved***
  1 -- ststate          \ reserved***
  1 cells -- dly        \ before next step
  1 cells -- direction  \ boolean value
  1 cells -- steps      \ to rotate
  1 cells -- total      \ steps, signed
  1 cells -- res1       \ reserved***
  1 cells -- motor      \ pinmask:portadr
  constant /stepper

\
\ ==============================================================
\ example:create new stepper motor structure with name 'altitude'
\      PORTA F stepper: altitude

  : stepper:  ( portaddr pinmask -- )
        here /stepper allot dup constant
        motor swap over c! 1+ c!
        ;

  : motor@  ( stm_addr -- pinmask portaddr )
        motor dup c@ swap 1+ c@
        ;

\
\ example:
\ 2  half-step altitude init_stm!

  : init_stm!  ( dly sequence stm_addr -- )
        swap over sequence c!
        swap over dly !
        0 over idx c!
        0 over direction !
        0 over steps !
        0 over total !
        motor@ pin_output
        ;

  : idx+    ( stm_addr --  )
        dup  idx c@
        over sequence c@ + 7 and
        swap idx c!
        ;

  : idx-    ( stm_addr --  )
        dup  idx c@
        over sequence c@ - 7 and
        swap idx c!
        ;

  : step    ( stm_addr --  )
        dup direction @
        if   dup idx- dup total @ over sequence c@ - over total !
        else dup idx+ dup total @ over sequence c@ + over total !
        then phase over idx c@ + i@ swap motor@ pin!
        ;

  : rotate  ( stm_addr n --  )
        0 ?do dup step dup dly @ ms loop drop
        ;

  : reverse ( stm_addr --  )
        direction dup @ invert swap !
        ;

  : half!   ( stm_addr --  )
        sequence half-step swap !
        ;

  : normal! ( stm_addr --  )
        dup half! dup idx c@ 1 and
        if dup step then sequence normal swap !
        ;

  : wave!   ( stm_addr --  )
        dup half! dup idx c@ 1 and 0=
        if dup step then sequence wave swap !
        ;

\ снять напряжение с обмоток
  : stopoff ( stm_addr -- )
        0 swap motor@ pin!
        ;

\ провернуть двигатель в "нулевую" позицию
  : park    ( stm_addr -- )
        dup  total @ dup 0< if
        over direction  0 swap ! else
        over direction -1 swap ! then
        abs  rotate
        ;


\
  : run    ( stm_addr -- )

        dup steps @ 0= if drop exit then
        dup steps @ 0< if

        dup sequence @ over steps +!
        dup direction -1 swap ! else

        dup sequence @ negate over steps +!
        dup direction  0 swap ! then

        dup step dly @ ms
        ;


\
\ ==============================================================
\

  : stm?    ( stm_addr --  )
        cr
        base @ >r
        decimal
        ." idx.............." dup idx      c@ u. cr
        ." sequence........." dup sequence c@ u. cr
        ." delay............" dup dly       @ u. cr
        ." direction........" dup direction @  . cr
        ." steps to rotate.." dup steps     @  . cr
        ." total steps......" dup total     @  . cr
        hex
        ." port............." motor@ u. cr
        ." mask............."        u. cr
        r> base !
        ;
\
\ ==============================================================
\



Дальнейшие телодвижения будут происходить в следующих направлениях:
1. Одновременная работа двух двигателей. Для этого будет задействована многозадачность ( lib/multitask.frt). Forth, как известно - не только язык программирования, но и сам себе среда программирования, и сам себе - операционная система ;) Собственно говоря, вышеупомянутое изменение "концепции кода" вызвано желанием освоить multitasker, а последнее слово - 'run' - первый шаг в эту сторону.
2. Подключение мышки ps/2. Для организации обмена с мышкой предполагается использовать штатные средства amForth 4.2 для обработки прерываний.

Справка: в качестве консоли amForth используется программа HyperTerminal:

Код: Выделить всё

amforth 4.2 ATmega32
> .res
amforth 4.2 ATmega32 running at 8000 kHz
free FLASH cells        5485
free RAM bytes          1712
used EEPROM bytes       68
used data stack cells   0
used return stack cells 5
free return stack cells 35
ok
> hex
ok
> PORTA F stepper: stm1
ok
> PORTA F0 stepper: stm2
ok
> 2 half-step stm1 init_stm!
ok
> 5 half-step stm2 init_stm!
ok
> stm1 stm? stm2 stm?

idx..............0
sequence.........1
delay............2
direction........0
steps to rotate..0
total steps......0
port.............3B
mask.............F

idx..............0
sequence.........1
delay............5
direction........0
steps to rotate..0
total steps......0
port.............3B
mask.............F0
ok
> stm2 100 rotate stm1 55 rotate
ok
> stm1 stm? stm2 stm?

idx..............5
sequence.........1
delay............2
direction........0
steps to rotate..0
total steps......85
port.............3B
mask.............F

idx..............0
sequence.........1
delay............5
direction........0
steps to rotate..0
total steps......256
port.............3B
mask.............F0
ok
> decimal
ok
> stm2 reverse stm2 200 rotate
ok
> stm2 100 rotate
ok
> stm2 reverse stm2 80 rotate
ok
> stm1 reverse stm1 150 rotate
ok
> stm1 stm? stm2 stm?

idx..............7
sequence.........1
delay............2
direction........-1
steps to rotate..0
total steps......-65
port.............3B
mask.............F

idx..............4
sequence.........1
delay............5
direction........0
steps to rotate..0
total steps......36
port.............3B
mask.............F0
ok
> stm1 park
ok
> stm2 park
ok
> stm1 stm? stm2 stm?

idx..............0
sequence.........1
delay............2
direction........0
steps to rotate..0
total steps......0
port.............3B
mask.............F

idx..............0
sequence.........1
delay............5
direction........-1
steps to rotate..0
total steps......0
port.............3B
mask.............F0
ok
> stm1 stopoff stm2 stopoff
ok



Пока все, продолжение следует.

Добавлено спустя 2 часа 54 минуты 39 секунд:
Прошивочка для любопытствующих. Слова для шаговика - присутствуют.
AVR ATmega32 @8MHz, uart = 9600, 8 бит, паритета нет, 1 стоповый.
Программатор - PonyProg2000.
Вложения
vm4th2+sm.hex
(54.41 КиБ) Скачиваний: 567
Последний раз редактировалось chu 11 окт 2010, 09:52, всего редактировалось 1 раз.
Аватара пользователя
chu
 
Сообщения: 77
Зарегистрирован: 23 сен 2010, 09:16
прог. языки: Forth

Re: Форт-система

Сообщение chu » 07 окт 2010, 06:08

Хм, продолжение...Пожалуй шаговые двигатели пока постоят.
А мы поговорим о Форте. Я не стану холиварить, скажу просто: Forth - он другой. Категорически. И теперь из горних высей плавненько перемещаемся поближе к делам нашим многотрудным )) Каждый, кто писал код для микроконтроллера, управляющий каким-либо железом ( драйвер, иными словами ), знает что такое всеразличные delay() и для чего они нужны.
Посмотрим, что может предложить amForth-4.2: в лексиконе имеется слово 1ms, что , как нетрудно догадаться, означает задержку приблизительно в 1 миллисекунду. Кроме него имеется слово ms. Унутреннее его устройство:
: ms 0 ?do 1ms loop ;
Видно, что оно просто в цикле вызывает слово 1ms указанное количество раз
Применяется так: 5 ms bla-bla-bla 10 ms .
Хорошие слова, полезные. А как быть, если нужны микросекундные интервалы? Если вы еще помните, в прошлом посте я ставил себе задачу наладить обмен с мышой и миллисекундные тооооормозззза никанают.
Начинаю исследовать amForth, напрягая таймер2: прескалер=8 ( amForth у меня крутится на 8 МГц, соответственно таймер будет щелкать микросекунды), счет от 0 и до останова.
Код: Выделить всё

amforth 4.2 ATmega32
> decimal
ok
> : t2> 0 TCCR2 c! ; \ остановить таймер
ok
> : <t2 2 TCCR2 c! ; \ запустить в вышеобозначенном режиме
ok
> \ собственно сам тест
ok
> : <t2> t2> 0 TCNT2 c! <t2 t2> cr TCNT2 c@ dup .x bl emit . ;
ok
> <t2>

16  22  ok
> <t2>

15  21  ok
> <t2>

15  21  ok
>


Хм, 21 микросекунда между стартом и стопом таймера, хреново...
Включаю моск. Каждое из слов <t2 t2> является высокоуровневым определением, и в свою очередь состоит из вызовов трех высокоуровневых слов. Каждое такое слово обрабатывает внутренний ( адресный) интерпретатор Форта. Вобщем, полученный результат мне не нравится. Хотелось бы интервалов покороче. Что нам говорит программерская традиция? "Критичные по времени участки кода пишуться на ассемблере." О как! Их есть у amForth'а ;) ...\amforth-4.2\lib\assembler.frt ( скормлен на шаге 2 из передыдущего поста). Продолжаем шаманить: определим слова запуска и останова таймера на встроенном ассемблере
Код: Выделить всё

> only forth also assembler
ok
> hex 25 constant tccr2
ok
> code t2> tccr2 R2 out, end-code
ok
> code <t2 R17 2 ldi, tccr2 R17 out, end-code
ok
> : <t2> t2> 0 TCNT2 c! <t2 t2> cr TCNT2 c@ dup .x bl emit . ;
ok
> only forth
ok
> decimal
ok
> <t2>

3  3  ok
> <t2>

3  3  ok
> <t2>

3  3  ok
>


Комментарии к коду:
- регистр R2 во внутренней кухне amForth'а используется как 'ноль',
( см."...\amforth-4.2\core\macros.asm")
- TCCR2 имеет значение 0x45, адрес, который не может использоваться с ассемблерной командой 'out', для этого определяется tccr2, имеющий значение 0х25.
- претензии к виду ассемблерного кода отметаются, как флудерастские ( изучайте матчасть).
- загадочное слово ' .x ' выводит на консоль ("распечатывает") число на вершине стека в шестнадцатиричном виде, сохраняя текущее основание системы счисления и имеет определение:
: .x base @ swap hex . base ! ;
- слово '.' просто распечатывает число на стеке по текущему основанию.
- фраза 'bl emit' выводит на консоль пробел.
- 'cr' выводит на консоль "перевод строки, возврат каретки"

Итак, 3 микросекунды. Есть мнение признать результат удовлетворительным.
Но будем последовательны и запустим еще один тест. Между <t2 t2> воткнем примитив, который ничего не делает - noop и посмотрим, что из этого выйдет.
Код: Выделить всё
> : <<t2>> t2> 0 TCNT2 c! <t2 noop t2> cr TCNT2 c@ dup .x bl enmit . ;
ok
> <<t2>>

7  7  ok
>


Что мы видим? Накладные расходы на внутренний (адресный) интерпретатор косвенного шитого кода составляют 4 микросекунды. Претензии принимаются.

Могу сказать, что amForth конечно же неудовлетворителен для серьезных разработок.
А взрослые дяди для этих целей применяют коммерческие системы SwiftX ( http://www.forth.com/embedded/swiftx-em ... ms-14.html ) от Forth, inc. и VFX Forth от MicroProcessor Engineering limited ( http://www.mpeforth.com/ ), которые генерят нативный код, позволяют всеразличную оптимизацию, вплоть до удаления из целевого кода всего, что внем не используется...Но это уже "совсем другая история", да и стоят они неподъёмно - 1500 баксов и евриков соответственно, а жаль :(

Уфф, заколебался уписываться. Хватит на сегодня, пожалуй.
Засим, откланиваюсь, искренне Ваш chu.
PS. moving forth.
Последний раз редактировалось chu 31 авг 2012, 11:37, всего редактировалось 1 раз.
Аватара пользователя
chu
 
Сообщения: 77
Зарегистрирован: 23 сен 2010, 09:16
прог. языки: Forth

Re: Форт-система

Сообщение Eruman » 07 окт 2010, 23:28

Блин, крутатень. В универе баловался фортом, писал даже для MenuetOS чото там.
Почитать, чтоли... Вымораживает только постфиксная запись. Мозги ломаются. Хотя, это дело привычки, ИМХО
Соединяй и здравствуй.
Аватара пользователя
Eruman
 
Сообщения: 897
Зарегистрирован: 12 авг 2010, 15:10
Откуда: Астраханская обл.

Re: Форт-система

Сообщение chu » 08 окт 2010, 09:39

Eruman писал(а):Вымораживает только постфиксная запись. Мозги ломаются. Хотя, это дело привычки, ИМХО


Это очень быстро проходит. Не стоит писать длинных определений. Иногда встречаются определения длиной в страницу - ужснах - я такие и не читаю даже. Хотя, грешен, один раз "поступился принципами", когда писал поисковый алгоритм для 1-wire, просто по другому не получалось ( в разумные сроки)...
В форте одна из самых трудных вещей - придумать грамотное имя слова, чтобы не было таких - lpFuckingErrorOnSomewereSomthing... :ROFL:
Форт прямо таки вопиет о лаконизме ( кртксть - стра ), в тоже время форт дисциплинирует процесс мышления ( который на самом деле настолько хаотичен, что "человек разумный" - звучит, как бы это помягче сказать... :no: )
В данном ключе могу порекомендовать книгу Thinking Forth от Лео Броуди.
Имеется перевод с английского С.Н. Дмитренко: "Способ мышления - ФОРТ. Язык и философия для решения задач." Взять можно тут http://www.forth.org.ru/~cactus/files/brodie.rar :good:
И не обязательно после прочтения записываться в фанаты форта. 8)

Спасибо за внимание. chu.
PS. moving forth
PPS. не пинайте - я не холиварю...
Последний раз редактировалось chu 31 авг 2012, 11:40, всего редактировалось 1 раз.
Аватара пользователя
chu
 
Сообщения: 77
Зарегистрирован: 23 сен 2010, 09:16
прог. языки: Forth

Re: Форт-система

Сообщение Eruman » 08 окт 2010, 10:07

Да уж, с дисциплиной - это проблема. Случалось разбираться в листингах, где сплошь буквы со знаками препинания. Демоническая краткость. В этом ключе имя lpFuckingErrorOnSomewereSomthing
- просто верх заботы о человеке ;)
Соединяй и здравствуй.
Аватара пользователя
Eruman
 
Сообщения: 897
Зарегистрирован: 12 авг 2010, 15:10
Откуда: Астраханская обл.

Re: Форт-система

Сообщение Eruman » 08 окт 2010, 14:40

Возможна ли реализация прямой записи, а-ля бейсик?
Например,
1 2 + .
заменяем на
.( 1 +( 2 ) )
или так
1 +( 2 ) .
где завершающая скобка соответсвенно выполняет команду, ранее отложенную для запуска.
Т.е. что-то вроде стека адресов.
Мне очень импонирует наращиваемость Форта, а вот постфикс - сомневаюсь, что массово понимание к людям придет.
Соединяй и здравствуй.
Аватара пользователя
Eruman
 
Сообщения: 897
Зарегистрирован: 12 авг 2010, 15:10
Откуда: Астраханская обл.

Re: Форт-система

Сообщение chu » 08 окт 2010, 15:48

Eruman писал(а):Возможна ли реализация прямой записи, а-ля бейсик?

http://lurkmore.ru/Forth
"стеки и обратная польская нотация — в общем случае начинающий фортер думает также и о том, чтобы сделать в форте всё, как у людей. Но через некоторое время начинает уже у людей всё делать, как в форте."
Аватара пользователя
chu
 
Сообщения: 77
Зарегистрирован: 23 сен 2010, 09:16
прог. языки: Forth

Re: Форт-система

Сообщение Eruman » 08 окт 2010, 16:23

Это безусловно есть, но есть один момент: В моем случае планируется использование самобеглых роботов совершенно неподготовленными юзерами. Требуется максимально упрощенная нотация. ИМХО, постфикс тяжеловат. Хотя, возможно мои сомнения и надуманы, я же еще им програмить не давал :)

Ок. Чу, а можно прикрутить Форт к Меге8?
Соединяй и здравствуй.
Аватара пользователя
Eruman
 
Сообщения: 897
Зарегистрирован: 12 авг 2010, 15:10
Откуда: Астраханская обл.

Re: Форт-система

Сообщение chu » 08 окт 2010, 16:31

Eruman писал(а): Чу, а можно прикрутить Форт к Меге8?

Мега 8 маловата будет. Т.е. теоретически можно, но смысла никакого. Тем более в целях обучения. Речь идет именно об amForth'е. А он, кстати, основной целевой платформой имеет как раз всеразличные *рдуины. ( имхо)
Аватара пользователя
chu
 
Сообщения: 77
Зарегистрирован: 23 сен 2010, 09:16
прог. языки: Forth

Пред.След.

Вернуться в МиниБот — национальный класс роботов

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2