roboforum.ru

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

AVR-DOS для МиниБота

Re: AVR-DOS для МиниБота

EdGull » 11 янв 2009, 09:38

энкодеры двойные

Re: AVR-DOS для МиниБота

MiBBiM » 11 янв 2009, 15:58

уменьшил размер стека, выкинул некоторые команды.
установил более жесткие ограничения на длины токенов(слов интерпретатора) и их количество.
итог: свободно 65% флеша, 404 байта озу.
добавил отладочные строки, очень хотелось бы посмотреть что выводит реальное устройство
=DeaD= писал(а):Не понял

мб вы предложили бы суперсложный алгоритм :D вот я и спросил
Вложения
tester.rar
файл и прошивка interpreter test
(87.14 КиБ) Скачиваний: 29
1.JPG
к чему стремимся

Re: AVR-DOS для МиниБота

EdGull » 11 янв 2009, 16:09

ну так давай новый код, старый ругается.

Re: AVR-DOS для МиниБота

MiBBiM » 11 янв 2009, 16:12

Interpreter test.bas
INTERPRETER TEST.HEX
в архиве tester.rar

Re: AVR-DOS для МиниБота

EdGull » 11 янв 2009, 16:13

и чё не выкладываешь этот волшебный архив?

Re: AVR-DOS для МиниБота

MiBBiM » 11 янв 2009, 16:15

:crazy: а в верхнем сообщении его нет?
странно.
Вложения
tester.rar
репост
(87.14 КиБ) Скачиваний: 21

Re: AVR-DOS для МиниБота

EdGull » 11 янв 2009, 16:33

вот что написало на FS 1

fs 1
GOTCHA! You have entered string:AVR-DOS: Ready f0>m0>AVR-DOS: Ready f0>m0>AVR-DO
S: Ready f0>m0>AVR-DOS: Ready f0
Begin to extract tokens
lpos2, token1:9
token1(pos,len):1,8
lpos2, token2:0
token2(pos,len):10,71
Tokens are extracted
Begin to extract next token as string
Res string:AVR-DOS:
First command token is:AVR-DOS:
Command 'AVR-DOS: Ready f0>m0>AVR-DOS: Ready f0>m0>AVR-DOS: Ready f0>m0>AVR-DOS:
Ready f0' not recognized

0000>
GOTCHA! You have entered string:
Begin to extract tokens
Tokens are extracted

0000>GOTCHA! You have e00>GOTCHA! You have e00>GOTCHA! You have e00>GOTCHA! You
have

Re: AVR-DOS для МиниБота

MiBBiM » 11 янв 2009, 16:44

у терминала бод рейт какой? в исходнике 19200, попробуйте перекомпилировать с меньшей скоростью уарт

Добавлено спустя 1 минуту 3 секунды:
да нажатия ентера, он повторяет пользовательский ввод?(бэкспейс работать должен)

Re: AVR-DOS для МиниБота

EdGull » 11 янв 2009, 16:50

себе везде поставил 115200
это теперь стандарт в миниботах

Добавлено спустя 5 минут 40 секунд:
на 19200 тоже самое

Re: AVR-DOS для МиниБота

MiBBiM » 11 янв 2009, 17:33

таакс. теперь при вводе fs 1 он будет возвращать код каждого принятого символа, в том числе ентера.(при этом первоначальный ввод не сохраняется. буквы команды будут висеть перед "getsymbol")
увеличил размер буфера приема уарта, снизил скорость до 2400, добавил задержку 250мс после вывода приглашения.
увеличил стек до неприличия. проверьте частоту мк.
на этом мои рецепты пока закончились

Добавлено спустя 1 минуту 21 секунду:
P.S. выкладывайте плиз скриншот терминала, не видно, выводится ли надпись приветствия :)

Добавлено спустя 1 минуту 48 секунд:
вообще, такое ощущение что он считает юзерским вводом отправленные мною же символы. оч странно для дуплекса
Вложения
1.JPG
вот что должно получится.
tester2.rar
новый код
(88.3 КиБ) Скачиваний: 25

Re: AVR-DOS для МиниБота

EdGull » 11 янв 2009, 17:37

по циклу лупит кучу всего

Re: AVR-DOS для МиниБота

MiBBiM » 11 янв 2009, 18:08

вернул стек к 128,128,128.
убрал строчку с фусибитами, вообщем просто привел конфиги к вашей ver2, разве что буфер по усарту побольше и скорость поменьше. убрал лишние дебаг строки. добавил нехилое ожидание между двумя символами. чуток изменил процедуру ввода команды.

здесь он принимает символ:
Код: Выделить всёРазвернуть
Do
  Gbinp = Waitkey()                                         ' get user input
  If Gbinp <> 0 Then                                        ' something typed in?
      If Gbinp = 27 Then                                    ' use ESC for exit from interpreter
         Exit Do
      End If
      Waitms 500
      Print "get symbol:" ; Gbinp
      Waitms 500
      Getinput Gbinp                                        ' give input to interpreter
  End If
Loop       

здесь он обрабатывает символы и составляет из них большую строку Gspcinput:
Код: Выделить всёРазвернуть
Sub Getinput(pbbyte As Byte)
   ' stores bytes from user and wait for CR (&H13)
   Select Case Pbbyte
      Case &H0A                                             ' do nothing
      Case &H0D                                             ' Line-end?
         Print Chr(&H0d) ; Chr(&H0a) ;
               Print "GOTCHA! You have entered string:" ; Gspcinput
         Docommand                                          ' analyse command and execute
         Gbpcinputpointer = 1                               ' reset for new user-input
         Gspcinput = ""
         Printprompt
      Case &H08                                             ' backspace ?
         If Gbpcinputpointer > 1 Then
            Print Chr(&H08);
            Decr Gbpcinputpointer
         End If
      Case Else                                             ' store user-input
         If Gbpcinputpointer <= Cpcinput_len Then
            Mid(gspcinput , Gbpcinputpointer , 1) = Pbbyte
            Incr Gbpcinputpointer
            Mid(gspcinput , Gbpcinputpointer , 1) = &H00    ' string-terminator
            Print Chr(pbbyte);                              ' echo back to user
         End If
   End Select
End Sub


где-то в этих процедурах происходит ошибка. об этом можно судить по тому что у вас в терминале
EdGull писал(а):GOTCHA! You have entered string:AVR-DOS: Ready f0>m0>AVR-DOS: Ready f0>m0>AVR-DOS: Ready f0>m0>AVR-DOS: Ready f0

это строка пользовательского ввода :shock: , что очень странно, поскольку эхо работает(или нет? среда должна получится такая же как и в виндоус командной строке (пуск, выполнить, cmd))
если этот тест не пройдет, то просто перепишу пользовательский ввод(например, команда Input должна работать как раз так же, как и эти две процедуры, только бэкспейс и ескейп поддерживаться не будут)
Вложения
1.JPG
что должно выводить
tester4.rar
последняя
(83.41 КиБ) Скачиваний: 23

Re: AVR-DOS для МиниБота

EdGull » 11 янв 2009, 18:17

снова по циклу лупит
вот кусок
get symbol:99
cget symbol:111
oget symbol:109
mget symbol:109
mget symbol:97
aget symbol:110
nget symbol:100
dget symbol:115
sget symbol:13

GOTCHA! You have entered string:AVR-DOS: Ready for commands
Command 'AVR-DOS: Ready for commands' not recognized

0000>get symbol:10
get symbol:13

GOTCHA! You have entered string:

0000>get symbol:10
get symbol:48
0get symbol:48
0get symbol:48
0get symbol:48

Re: AVR-DOS для МиниБота

MiBBiM » 11 янв 2009, 18:49

ну вот видите. опять та же ситуация: то что я печатаю на выход чудесным образом превращается во вход :crazy: так, вначале вывожу первую строку
AVR-DOS: Ready for commands
.
принимаю её обратно(как если бы пользователь её ввел):
get symbol:99
cget symbol:111
oget symbol:109
mget symbol:109
mget symbol:97
aget symbol:110
nget symbol:100
dget symbol:115
sget symbol:13

прослеживается слово commands(читая по вертикали). далее процесс повторяется:
get symbol:10
get symbol:48
0get symbol:48
0get symbol:48
0get symbol:48

начинает выводить строку: 0000>get symbol:10

как будто rx-tx закоротили :crazy:

переписал процедуру ввода. должна работать 100%. иначе :shock:
Вложения
t5.rar
:shock:
(83.42 КиБ) Скачиваний: 20

Re: AVR-DOS для МиниБота

EdGull » 11 янв 2009, 18:51

да, так и есть rx-tx закорочен
нужно отключать rx при передаче


cron
Rambler\'s Top100 Mail.ru counter