Страница 1 из 1

Непонятная нестабильность программы на BASCOM

Добавлено: Чт июн 18, 2009 04:45:42
Sergey84
Добрый день.
Зашел в тупик.
Использую BASCOM всего 2 дня, только потому что условия проекта такие.
Понемногу стал втягиваться. Проект почти готов. Но вот беда - при длительной работе - порядка 2-3 минут (в протеусе) появляется нестабильность, глючки.
Сама прога просто опрашивает по рс232 устройство и выводит на виртуальный терминал считанные значения.
Глюки заключаются в том что периодически, с определенной частотой в выводимом тексте проскакивают кракозяблы, а иногда программа просто останавливается (Напомню, пока тестирую в протеусе).
Пугает то, что периодичность и внешний вид глюка меняется при изменении параметров

framersize, swstack, hwstack.
Что я только не пробовал - и большие значения, и малые, и вообще не указывать, полагаясь на умолчания. Максимум что удавалось - это продлить до нескольких менут период глюка.
Боюсь что что-то там со стеком и т.д. перетирается...

Помогите. Для чего указанные значений? Как они могут вызывать такие глюки?

PS: Proteus 6.5 SP 5, BASCOM 1.11.9.1
Чип mrga8

Спасибо.
Сергей.

Добавлено: Пн июн 22, 2009 00:00:58
Gryphon
Использую BASCOM-AVR уже долго и ни разу не видел таких глюков. У тебя какой BASCOM-AVR: крякнутый или демо, а протеус? Кстати, были случаи, когда сам Протеус глючит (сам видел). Для начала покажи исходный код, а я сам проверю.

Re: Непонятная нестабильность программы на BASCOM

Добавлено: Пн июн 22, 2009 05:31:33
mr.Kirill
[quote="Sergey84"]
PS: Proteus 6.5 SP 5, BASCOM 1.11.9.1
Чип mega8[/quote]
Если учесть что сейчас активно используется версия Proteus 7.4...То не мешало бы обновиться. С тех времен уже не мало воды утекло, много глюков было исправлено (и добавлено новых) :)

Добавлено: Вт июн 23, 2009 07:10:04
Sergey84
Спасибо за советы.

Удалось кое-что наэкспериментировать.
Если во всех процедурах все Local переменные заменить на Dim (оставить объявления тамже, но не Local а Dim) - то все проблемы сразу исчезают.
Как только внутри функции делаю Local (хотябы одной), тутже возникают проблемы.
Насколько я понимаю, $framesize - это размер области для локальных переменных, который выделяется каждый раз когда вызывается функция?
Как только я не менял значение - все равно при длительной (а чаще сразу) работе появляются сбои. Сбои определенно управляются этой величиной, так как ее изменение изменяет момент сбоя и его вид.
Раньше писал на асм авр, на cvavr -проблем не было вообще...

PS: да, думаю стоит попробовать проапгрейдить Протеус, но так как раньше я не замечал этих глюков, то думаю что генерится плохой hex (ну или неправильно сконфигурированный)

Спасибо еще раз.
Очень хочется разобраться, мне с ним видимо еще придется работать.

Добавлено: Вт июн 23, 2009 09:53:41
mr.Kirill
Sergey84 писал(а):Раньше писал на асм авр, на cvavr -проблем не было вообще...
Если было такое хорошее начало - и ASM, и CVAVR, то зачем перешли на это "чудо" BASCOM?

Мой совет - бросайте его куда подальше, вернитесь к ASM и CVAVR.

Добавлено: Вт июн 23, 2009 11:06:08
Sergey84
Было бы счастье да несчастье помогло :cry:
Баском это условие проекта, в котором я лишь очередное звено.

Добавлено: Вт июн 23, 2009 23:23:56
pomidor
'бросайте его куда подальше, вернитесь к ..'
а вот здесь наоборот говорят
http://www.radiokot.ru/forum/viewtopic.php?t=17040

как жить дальше, кому верить.. (шутка)

Добавлено: Ср июн 24, 2009 00:33:18
saschai
'бросайте его куда подальше, вернитесь к ..'
а вот здесь наоборот говорят
http://www.radiokot.ru/forum/viewtopic.php?t=17040

как жить дальше, кому верить.. (шутка)
Не слушай никого и работай в том, что тебе удобнее :))
Я Бейсик изучал в 1983 году в институте, навыки остались, по сему и Васик мне по душе, хотя и всего по немножку, кстати долго метался между Си и АСМ. Мне, например для души, а не для заработка, оптимизировать можно любой код, так что все зависит от программера :))

Добавлено: Ср июн 24, 2009 06:24:44
pomidor
автоцитата с bascomavr.3bb.ru

'Наступил на эти грабли, забодался бороться, пока не прочитал на баскомовсом форуме [ http://www.mcselec.com/index2.php?optio ... &Itemid=59], что баском не любит underscore - знаков подчеркивания ( _ ) и иногда принимает их за перенос на следующую строку и маленько сходит с ума.
Те, названия типа First_sub лучше не применять, а использовать что-то вроде Secondsub'

может, в чем-то подобном проблема (кстати, исходник показали бы, глядишь, народ попробовал бы на разных протеусах-баскомах, а то и в железе)

Добавлено: Ср июн 24, 2009 10:25:14
Sergey84
Всем спасибо за советы.

Учту информацию и по нижнему подчеркиванию, использовал, больше не буду.

Проблема как всегда в руках, в этом не сомневался (успокойтесь, любители васика :wink: ).
Невнимательно прочитал хелп, и использовал return внутри процедуры для выхода из нее (в середине тела процедуры). Все, сейчас все работает со всеми Local'ами при дефолтных значениях framesize 8)

Ничего плохого про бейсик сказать не могу, считаю что хороший программист справится с любым языком. Кажется немного перебирает в сгенерированном коде, многовато. Еще слишком туповат, не понимает сложных выражений - как результат куча временных переменных и сложночитаемый код.

Надо подшаманить прошивочку на 2 камня для дома - это будет на асм.

Всем спасибо.

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

Еще раз спасибо.