roboforum.ru

Технический форум по робототехнике.


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

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

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

Сообщение VANO22 » 21 апр 2014, 05:29

напиши в личку свой работающий номер плиз, это Иван
VANO22
 
Сообщения: 1
Зарегистрирован: 20 апр 2014, 08:41

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

Сообщение chu » 22 сен 2014, 13:06

АЦП
Код: Выделить всёРазвернуть
\ chu 13:59 17.04.2013
\     22:57 17.04.2013
\

marker =adc=

: adc-start     ADCSRA    ADCSRA_ADSC over c@ or swap c! ;
: adc-complete? ADCSRA c@ ADCSRA_ADSC and  0= ;
: adc-data?     ADCSRA c@ ADCSRA_ADIF and     ;
: adc-end       ADCSRA    ADCSRA_ADIF over c@ or swap c! ;

\ adc turn on
: adc+
                           \    sound_sensor pin_pullup_off    \ input & low
     %01100000  ADMUX c!   \ REFS=01, ADLAR=1, MUX=00000
   [ ADCSRA_ADEN           \ ADC on
     ADCSRA_ADPS or        \ 16MHz/128=125KHz
   ] literal
     ADCSRA c!
    ;

\ turn off
: adc-
     ADCSRA
     ADCSRA_ADEN invert
     over c@ and swap c!
    ;
 
\
\ =============================================================================


\ adc init

\  $20  constant ADLAR

: ad<left   ADMUX  ADMUX_ADLAR over c@ or swap c! ;
: ad>right  ADMUX dup c@  ADMUX_ADLAR invert and swap c! ;


\ select analog channel
: adc! ( n --- )

    ADMUX_MUX        and    ADMUX c@
    ADMUX_MUX invert and or ADMUX c!
    ;

\ read adc result
: adc@ ADC c@ ADC 1+ c@ 8 lshift + ;  ( --- un )

\ get ad convertion
: !adc@ adc-start begin adc-complete? until adc@ ;

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

: adc-tst begin !adc@ .x cr pause 500 ms key? until key drop ;

для коллекции

Добавлено спустя 26 минут 15 секунд:
Код: Выделить всёРазвернуть
\ ADC info
\ chu 1:23 19.04.2013
\
marker =adc-info=

: ?adc.

        ver bl emit ." AD Converter" cr
      \
        ADMUX c@
        ." *******" cr
        ." (ADMUX) ADC Multiplexer Selection Register = "  dup .x cr
      \
        dup ADMUX_REFS and dup ." Reference Selection Bits = " .x cr
        6 rshift
        case
           &0 of ." AREF, Internal Vref turned off "  endof
           &1 of ." AVCC with external capacitor at AREF pin " endof
           &2 of ." Reserved "  endof
           &3 of
." Internal 2.56V Voltage Reference with external capacitor at AREF pin "
             endof
        endcase cr
      \
        ." ADLAR = "
        dup ADMUX_ADLAR and if
        ."  left adjust"   else
        ." right adjust"   then cr
      \
        ." Analog Channel and Gain Selection Bits" cr
        ADMUX_MUX and dup
        case
           &0 &8  range of ." Single Ended Input - A" .x endof
           &9 &30 range of
." Differential Inputs, see p224 datasheet"   drop endof
              &30       of ." 1.22V (Vbg)"          drop endof
              &31       of ." 0V (GND)"             drop endof
        endcase cr

        ." ********" cr
      \
        ADCSRA c@
        ." (ADCSRA) ADC Control and Status Register A = " dup .x cr
      \
        ." ADC is turned "
        dup ADCSRA_ADEN  and if ." ON" else ." OFF" then cr
      \
        ." AD Convertion is "
        dup ADCSRA_ADSC  and if
        ." in progress"    else
        ." complete"       then cr
      \
        dup ADCSRA_ADATE and if
        ." triggered"      else
        ." single convertion" then cr
      \
        dup ADCSRA_ADIF  and if
." ADC conversion completes and the Data Registers are updated" then cr
      \
        ." ADC Interrupt "
        dup ADCSRA_ADIE  and if
        ." enabled"        else
        ." disabled"       then cr
      \
        ." ADC Prescaler Select Bits = "
        ADCSRA_ADPS and dup .x ." ,  "
        ." ADC clocks = "
        f_cpu  &1000  um/mod swap drop
        swap 
        case
        0 &2 range of &2   endof
          &2       of &4   endof
          &3       of &8   endof
          &4       of &16  endof
          &5       of &32  endof
          &6       of &64  endof
          &7       of &128 endof
        endcase /  base @ swap decimal . base ! ." KHz" cr
      ;
Аватара пользователя
chu
 
Сообщения: 77
Зарегистрирован: 23 сен 2010, 09:16
прог. языки: Forth

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

Сообщение chu » 23 дек 2014, 07:30

Release 5.6 is out and it is by far the biggest change in amforth ever.
It is the first version that runs on two different controller types:
AVR Atmegas and the TI MSP430 (Launchpad G2553).
...
Enjoy
Matthias
Аватара пользователя
chu
 
Сообщения: 77
Зарегистрирован: 23 сен 2010, 09:16
прог. языки: Forth

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

Сообщение chu » 23 янв 2016, 10:54

ilya73 любезно предоставил код для 3.2" TFT LCD 65K color 400x240 with the touch screen and SD card socket.
Graphics и fonts основаны на работах американца Craig A. Lindley для SSD1289 65K Color LCD Controller .

Добавлено спустя 17 минут 41 секунду:
Начинаем осваивать Mecrisp-Stellaris.
Вложения
tft-lcd+touch.zip
(10.5 КиБ) Скачиваний: 0
Аватара пользователя
chu
 
Сообщения: 77
Зарегистрирован: 23 сен 2010, 09:16
прог. языки: Forth

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

Сообщение KPG » 16 авг 2018, 13:07

Тема больше не развивается?
Никого не заинтересовала? :)
KPG
 
Сообщения: 26
Зарегистрирован: 10 июл 2013, 21:18
Откуда: Chelyabinsk
прог. языки: Форт, С

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

Сообщение setar » 16 авг 2018, 13:32

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

Например GoLang, который впитал в себя лучшее из C , Python , java , лишен их недостатков
и к тому же компилируемый и мультипоточный из коробки.

Синтаксис Go на порядок более читаемый и понятный интуитивно
Аватара пользователя
setar
Site Admin
 
Сообщения: 10245
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

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

Сообщение KPG » 16 авг 2018, 13:56

setar писал(а):а в чем прикол ?
сейчас есть гораздо более интересные векторы приложения для обучения.

Например GoLang, который впитал в себя лучшее из C , Python , java , лишен их недостатков
и к тому же компилируемый и мультипоточный из коробки.

Синтаксис Go на порядок более читаемый и понятный интуитивно


"Прикол" Форт языка в его "аморфности" и возможности "мимикрировать" под хотелки пользователя и максимальной портабельности как системы так и кода.
Каждый может найти в его подходе свой смысл.
Кто то нашёл такой свой смысл и создал, например, Factor язык программирования или, например, 8th

P.S. Литература по Форт языку
Чтабельность языка - это субъективный фактор отображаемый в субкультуре его пользователей. :)
KPG
 
Сообщения: 26
Зарегистрирован: 10 июл 2013, 21:18
Откуда: Chelyabinsk
прог. языки: Форт, С

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

Сообщение setar » 16 авг 2018, 14:29

Этот фактор влияет прежде всего на количество ошибок, прежде всего логических
Аватара пользователя
setar
Site Admin
 
Сообщения: 10245
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

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

Сообщение KPG » 16 авг 2018, 14:53

setar писал(а):Этот фактор влияет прежде всего на количество ошибок, прежде всего логических

Любая система программирования приводит к тем или иным ошибкам (тем более логическим не связанными с используемым языком)
язык лишь и практика его использования может подсказать те или иные "устоявшиеся" схемы и приёмы работы с ним минимизирующие тот или иной вид ошибок.
тем не менее это не служит общим критерием не использования программирования вообще. :)
А уровень "контроля" инструментальн(ых/ыми) средст(в/вами) можно выбирать самостоятельно.
Предположу ещё, что количество ошибок возрастает при освоении нового инструментария и из-за непонимания диапазона его возможностей
и отсутствия необходимой практики.

Например, гипотетически, язык общения роботов с ИИ не обязательно должен наследовать существующие схемы языков программирования в силу каких то отсутствующих ограничений в "разуме" робота. :)

P.S. Проекты с Factor языком, как и с Форт в достаточной мере для ознакомления с ними присутствуют и на Github.
Для примера, например, авторский софт для ПК написан на Форт, а для STM32 на С в теме Лазерная установка для засветки фоторезиста от AlphaCrow
при этом для ПК его размер составил чуть более 100Кб и софт показал свою надёжность.

Бои Grobots ведутся на Форт подобом языке да и Форт так или иначе можно встретить много где.
Для любознательных Рускоязычный форум пользователей Форт (Forth) языка
KPG
 
Сообщения: 26
Зарегистрирован: 10 июл 2013, 21:18
Откуда: Chelyabinsk
прог. языки: Форт, С

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

Сообщение setar » 16 авг 2018, 15:47

Да кто же спорит, асемблер тоже много где встречается.
От этого от не становится более читаемым.

Лично я не горю желанием изучать язык если при первом взгляде на текст программы я не понимаю что в ней написано.
:) вероятно это моя личная фича, но предположу что так у 90% пользователей.
На мой взгляд выбрать для изучения Форт сегодня может только человек которому досталось "тяжелое наследство" которое нужно обслуживать
Аватара пользователя
setar
Site Admin
 
Сообщения: 10245
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

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

Сообщение KPG » 16 авг 2018, 15:55

setar писал(а):Да кто же спорит, асемблер тоже много где встречается.
От этого от не становится более читаемым.

Лично я не горю желанием изучать язык если при первом взгляде на текст программы я не понимаю что в ней написано.
:) вероятно это моя личная фича, но предположу что так у 90% пользователей.
На мой взгляд выбрать для изучения Форт сегодня может только человек которому досталось "тяжелое наследство" которое нужно обслуживать

Думаю Форт выбирают те, кому с ним удалось познакомится в той степени чтобы его понять и использовать. :)
Увы, этот момент затронул, в большей степени людей, прочитавших о нём книжки 90-х годов, а дальше их понимание и возможность следовать его путём в разных аспектах. Люди из нового поколения тоже приходят к Форт, но уже не известно каким путём.
Ассембер и Форт трудно сравнивать т.к. ниша использования и возможности очень разные.

P.S. Для промышленного использования Форт предъявляет достаточно высокий уровень его понимания и контроля и маркетологи его не пропустят в продакшен,в отличии от задач исследовательского плана.
По Форт есть и такой небольшой рускоязычный подфорум на airbase
Про "проблему" читабельности языка, мнение было приведено выше, если бы он массово рассматривался в учебных заведениях, то понимание его текста было лучше.
Для того кто может использовать Форт - это очень удобный инструментарий, хотя и не лишённый каких то субъективных "несуразностей"
Мне он, например, позволяет экспериментировать и с такими темами в частном порядке. :)
Нечитабельность языка не привела бы к появлению, например, Win32Forth и такого ресурса
Думаю мало смысла изучать данное направление в текущих массовых реалиях создания ПО. Можно не заработать себе на "хлеб" этим.
Forth на Hackday
KPG
 
Сообщения: 26
Зарегистрирован: 10 июл 2013, 21:18
Откуда: Chelyabinsk
прог. языки: Форт, С

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

Сообщение Eruman » 30 сен 2018, 18:27

"А не спеши ты Форт хоронить!
А у него еще есть дела..."
(почти как в песне)

Недавно попалась на вид плата Pololu Maestro Servo
Угадайте, какой скрипт используют? :)
https://www.pololu.com/docs/pdf/0J40/maestro.pdf
Соединяй и здравствуй.
Аватара пользователя
Eruman
 
Сообщения: 891
Зарегистрирован: 12 авг 2010, 15:10
Откуда: Астраханская обл.

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

Сообщение chu » 02 окт 2018, 11:05

setar писал(а):Лично я не горю желанием изучать язык если при первом взгляде на текст программы я не понимаю что в ней написано.

Абсолютно с Вами согласен. Очевидно же.
Код: Выделить всёРазвернуть
// Called 8 times per bit period
// Phase locked loop tries to synchronise with the transmitter so that bit
// transitions occur at about the time vw_rx_pll_ramp is 0;
// Then the average is computed over each bit period to deduce the bit value
void vw_pll()
{
    // Integrate each sample
    if (vw_rx_sample)
   vw_rx_integrator++;

    if (vw_rx_sample != vw_rx_last_sample)
    {
   // Transition, advance if ramp > 80, retard if < 80
   vw_rx_pll_ramp += ((vw_rx_pll_ramp < VW_RAMP_TRANSITION)
            ? VW_RAMP_INC_RETARD
            : VW_RAMP_INC_ADVANCE);
   vw_rx_last_sample = vw_rx_sample;
    }
    else
    {
   // No transition
   // Advance ramp by standard 20 (== 160/8 samples)
   vw_rx_pll_ramp += VW_RAMP_INC;
    }
    if (vw_rx_pll_ramp >= VW_RX_RAMP_LEN)
    {
   // Add this to the 12th bit of vw_rx_bits, LSB first
   // The last 12 bits are kept
   vw_rx_bits >>= 1;

   // Check the integrator to see how many samples in this cycle were high.
   // If < 5 out of 8, then its declared a 0 bit, else a 1;
   if (vw_rx_integrator >= 5)
       vw_rx_bits |= 0x800;

   vw_rx_pll_ramp -= VW_RX_RAMP_LEN;
   vw_rx_integrator = 0; // Clear the integral for the next cycle

   if (vw_rx_active)
   {
       // We have the start symbol and now we are collecting message bits,
       // 6 per symbol, each which has to be decoded to 4 bits
       if (++vw_rx_bit_count >= 12)
       {
      // Have 12 bits of encoded message == 1 byte encoded
      // Decode as 2 lots of 6 bits into 2 lots of 4 bits
      // The 6 lsbits are the high nybble
      uint8_t this_byte =
          (vw_symbol_6to4(vw_rx_bits & 0x3f)) << 4
          | vw_symbol_6to4(vw_rx_bits >> 6);

      // The first decoded byte is the byte count of the following message
      // the count includes the byte count and the 2 trailing FCS bytes
      // REVISIT: may also include the ACK flag at 0x40
      if (vw_rx_len == 0)
      {
          // The first byte is the byte count
          // Check it for sensibility. It cant be less than 4, since it
          // includes the bytes count itself and the 2 byte FCS
          vw_rx_count = this_byte;
          if (vw_rx_count < 4 || vw_rx_count > VW_MAX_MESSAGE_LEN)
          {
         // Stupid message length, drop the whole thing
         vw_rx_active = false;
         vw_rx_bad++;
                        return;
          }
      }
      vw_rx_buf[vw_rx_len++] = this_byte;

      if (vw_rx_len >= vw_rx_count)
      {
          // Got all the bytes now
          vw_rx_active = false;
          vw_rx_good++;
          vw_rx_done = true; // Better come get it before the next one starts
      }
      vw_rx_bit_count = 0;
       }
   }
   // Not in a message, see if we have a start symbol
   else if (vw_rx_bits == 0xb38)
   {
       // Have start symbol, start collecting message
       vw_rx_active = true;
       vw_rx_bit_count = 0;
       vw_rx_len = 0;
       vw_rx_done = false; // Too bad if you missed the last message
   }
    }
}

Код: Выделить всёРазвернуть
\ ----------------------------------------------------
\ Called 8 times per bit period
\ Phase locked loop tries to synchronise with the transmitter so that bit
\ transitions occur at about the time vw_rx_pll_ramp is 0;
\ Then the average is computed over each bit period to deduce the bit value


  : vw_pll
            SAMPLE  ?TRANSITION
       LAST-SAMPLE? if  GET-BIT
         RX-ACTIVE? if
       
           WHOLE-BYTE?  if
             GET-BYTE   IS-COUNT? if  vw_rx_count !
                        RX-COUNT-GOOD? 0= if exit then
                                  else
             PUT-BYTE  ?ALL-BYTES then

       RESET-BIT-COUNT  then

                  else
    ?START-SYMBOL then  then
    ;


Virtual Wire
Аватара пользователя
chu
 
Сообщения: 77
Зарегистрирован: 23 сен 2010, 09:16
прог. языки: Forth

Пред.

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

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

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

Mail.ru counter