Предлагаю здесь писать об обнаруженых глюках компилятора и возможных способах их обойти.
Обнаруженые ошибки компилятора.
Сообщений 1 страница 30 из 82
Поделиться22010-10-16 21:16:13
тема хорошая
но пара "но":
лицензия - у единиц, демо-версия - устарела чуток, в 2006 году выложена. А в новых явно глючки изправлены/добавлены
кряк - тоже может глюков добавить...
пяток версий на руках у народа
вывод: дело почти бесперспективное!
Поделиться32010-10-16 22:20:29
Когда я создавал эту тему, думал что глючит компилятор, но как оказалось, в исходнике была точка, на которую не ругался компилятор, а в место этого, тупо не грузил библиотеку и в итоге, появлялись сообщения об ошибках в совсем других строках, где все ОК.
Поделиться42010-10-27 21:22:31
Вопрос владельцам версий 2.Х.Х. Окна редактора по-прежнему меняют размеры самопроизвольно при загрузке новых файлов или при переключении окон? Дефект непринципиальный, но работать одновременно с несколькими файлами очень мешает. Причем никакие настройки не помогают. Напротив, при установке опции "Size of new editor window" = Maximazed и разворачивании Bascom на весь экран усугубляется. От версии ОС не зависит. Эта неприятность появилась приблизительно тогда, когда пошли версии под Vista.
Поделиться52010-10-27 21:25:10
Вроде нет.
Поделиться62010-10-27 21:43:05
Проблема осталась. Сворачиваешь одно, сворачиваются и другие, и наоборот.
Поделиться72010-11-10 08:55:45
Проверено в версиях 1.11.9.5 и 1.11.9.8
$regfile = "ATtiny44.dat"
....
Dim eTempCh(129) As ERAM Byte
Дает ошибку "Out of EPROM space".
Тогда как у него 256 байт EEPROM
Причина - ошибка в файле ATtiny44.DAT. Стоит E2END =$7F вместо E2END =$FF
Поделиться82010-11-10 21:22:09
В версии 2.0.1.0 тоже самое. Надо бы автору сообщить.
Сообщил. Только пока ответа нет.
Поделиться92010-11-11 14:12:19
Автор ATtiny44.DAT исправил. В новой версии будет исправленный файл. Передаёт спасибо.
Поделиться102010-11-11 15:11:27
Автор ATtiny44.DAT исправил. В новой версии будет исправленный файл. Передаёт спасибо.
Отлично! Может напишете ему еще про то, что он в очистке памяти MCUSR злобно делает ANDI $F7?
Из за этого определить причину перезагрузки становится не так то просто, хорошо хоть, что в R0 сохраняеет. В документации эту фичу не нашел, полдня потратил, пока в пршивку не посмотрел.
Поделиться112010-11-11 15:51:32
Отлично! Может напишете ему еще про то, что он в очистке памяти MCUSR злобно делает ANDI $F7?
Из за этого определить причину перезагрузки становится не так то просто, хорошо хоть, что в R0 сохраняеет. В документации эту фичу не нашел, полдня потратил, пока в пршивку не посмотрел.
Я не настолько хорошо знаком с языком, опишите баг поподробнее. А вдобавок с моим "школьным" английским боюсь чтобы не исказить информацию, поэтому и прошу уточнить.
Поделиться122010-11-11 21:45:28
Вот этот код компилятор добавляет без ведома программиста:
00000044: B784 in r24,$34
00000046: 2E08 mov r0,r24
00000048: 7F87 andi r24,#$F7
0000004A: BF84 out $34,r24
портит содержимое регистра номер $34 Это регистр статуса контроллера (MCUSR). Одновременно он же сохраняет статус контроллера в регистре R0. Нигде в документации я не нашел, что статус в bascome нужно получать получить из R0 а не из MCUSR. Надо либо документировать "фичу" либо убрать ее.
Поделиться132010-11-11 22:06:22
Возможно с помощью $initmicro можно выйти из этой ситуации - появится возможность вызвать подпрограмму до очистки памяти.
Поделиться142010-11-13 18:56:18
Надо либо документировать "фичу" либо убрать ее.
В CONFIG WATCHDOG написанно:
For chips that have an enhanced WD timer, the WD timer is cleared as part of the chip initialize procedure. This because otherwise the WD timer will only work once. If it is important that you know the cause of the reset, you can read the register R0 before you run other code.
The sample below demonstrates how to store the WDRF bit if you need it, and print it later.
Поделиться152010-11-15 12:36:59
Вот и на оф. форуме появилась похожая тема про WATCHDOG http://www.mcselec.com/index2.php?optio … amp;t=9182
Поделиться162010-11-16 14:02:16
Весьма путанно, особенно пример в хелпе. Если бы не знал, ничего бы не понял.
Поделиться172011-05-13 11:48:06
Не знаю баг это или фича, но столкнулся с такой вещью на $regfile = "m328pdef.dat".
Начало:
Dim Str_in As String * 16 Dim Str_low As String * 16 <-= это пришлось добавить Str_in = <...тут динамические строки...>
Если использовать "Lcase", то так кратко делать нельзя:
If Lcase(Str_in) = "teststring" Then ...код... End If
В результате почему-то обрабатывается на входе строка не больше 4 символа.
Правильно писать так:
Str_low = Lcase(str_in) If Str_low = "teststring" Then ...код... End If
Т.е. "Str_low" используем как временную переменную для преобразования (перевальный пункт).
Делал это для того, чтобы вводимые команды человеком приводились в ожидаемый вид, чтобы не плодить лишнюю базу обработки тем самым экономя и память.
Хорошо, что железо позволяло наглядно увидеть эту ситуацию, прям не знаю сколько бы времени потерял иначе...
Поделиться182011-06-12 11:24:20
задам свой вопрос сюда, как бы это и не ошибка в чистом виде, но...
вот программа на BASCOM
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 40
$framesize = 40
Config Timer2 = Timer , Prescale = 1 , Compare = Toggle , Clear Timer = 1 ' PB.3
Ocr2 = 33
Stop Timer2
End
а вот выданное компилятором... Задал этот же вопрос Марку, жду ответа
; Atmel AVR Disassembler v1.30
;
.cseg
.org 0
rjmp avr0013 ; 0000 C012
reti ; 0001 9518
reti ; 0002 9518
reti ; 0003 9518
reti ; 0004 9518
reti ; 0005 9518
reti ; 0006 9518
reti ; 0007 9518
reti ; 0008 9518
reti ; 0009 9518
reti ; 000A 9518
reti ; 000B 9518
reti ; 000C 9518
reti ; 000D 9518
reti ; 000E 9518
reti ; 000F 9518
reti ; 0010 9518
reti ; 0011 9518
reti ; 0012 9518
avr0013: ldi r24, 0x5F ; 0013 E58F
out SPL, r24 ; 0014 BF8D
ldi YL, 0x38 ; 0015 E3C8
ldi ZL, 0x00 ; 0016 E0E0
mov r4, ZL ; 0017 2E4E
ldi r24, 0x04 ; 0018 E084
out SPH, r24 ; 0019 BF8E
ldi YH, 0x04 ; 001A E0D4
ldi ZH, 0x04 ; 001B E0F4
mov r5, ZH ; 001C 2E5F
wdr ; 001D 95A8
in r24, ?0x34? ; 001E B784
mov r0, r24 ; 001F 2E08
andi r24, 0xF7 ; 0020 7F87
out ?0x34?, r24 ; 0021 BF84
ldi r24, 0x18 ; 0022 E188
clr r25 ; 0023 2799
out WDTCR, r24 ; 0024 BD81
out WDTCR, r25 ; 0025 BD91
ldi ZL, 0xFE ; 0026 EFEE
ldi ZH, 0x03 ; 0027 E0F3
ldi XL, 0x60 ; 0028 E6A0
ldi XH, 0x00 ; 0029 E0B0
clr r24 ; 002A 2788
avr002B: st X+, r24 ; 002B 938D ; What is it?
sbiw ZL, 0x01 ; 002C 9731 ?
brne avr002B ; 002D F7E9 ?
clr r6 ; 002E 2466 ?
sbi DDRB, 3 ; 002F 9ABB ; What is it?
ldi r24, 0x19 ; 0030 E189
out ICR1H, r24 ; 0031 BD85
ldi r23, 0x21 ; 0032 E271
out ?0x23?, r23 ; 0033 BD73
clr r24 ; 0034 2788
out ICR1H, r24 ; 0035 BD85
cli ; 0036 94F8
avr0037: rjmp avr0037 ; 0037 CFFF
avr0038: sbiw ZL, 0x01 ; 0038 9731 ; What is it?
brne avr0038 ; 0039 F7F1 ?
ret ; 003A 9508 ?
set ; 003B 9468 ?
bld r6, 2 ; 003C F862 ?
ret ; 003D 9508 ?
clt ; 003E 94E8 ?
bld r6, 2 ; 003F F862 ?
ret ; 0040 9508 ?
.exitПоделиться192011-06-12 22:28:28
Все нормально!
Очистка памяти.
Линия выхода таймера на выход.
П/п задержки кратной 1 мкс (столько ZX).
П/п Установка системного бита ошибки.
П/п Сброс системного бита ошибки.
Поделиться202011-06-12 22:39:19
не понял
при чем тут: sbi DDRB, 3 ; 002F 9ABB ; What is it?
это не те выводы вообще!
и зачем подпрограмма avr0038?
Поделиться212011-06-13 00:05:44
Марк также неконкретно ответил, и не пояснил, зачем в программу вставлен код, который я не "заказывал" в командах 
я не использовал задержку, а она есть
И что самое странное - она нигде не вызывается...
Поделиться222011-06-24 20:40:19
не подскажите почему при компиляции в Bascom версии 2.0.6.1 выскакивают ошибки... такое ощущение , что в этой версии не все библиотеки
этот же код спокойно компилируется в 1.11.9.8 ?
Поделиться232011-06-24 21:43:15
обновите до 6.2 и проверьте
Поделиться242011-09-02 00:05:31
Мощный косяк с обновлением PDF файлов. Вывешивается практически полностью комп и после трех- четырех загрузок полностью зависает баском
Поделиться252011-09-02 06:47:14
что и как Вы делали? распишите по шагово
Поделиться262011-09-04 14:06:19
Втыкаем Tools- PDF Update, затем Check. И при проверке обновлений, работата остальных запущеных приложений практически невозможна.
Когда закончится проверка обновлений, то все восстанавливается до нормального состояния.
Далее втыкаем Download. Все. Ни чего опять невозможно делать, пока не загрузятся обновления, даже переместить окно обновления.
Сами же обновления грузятся рывками. После закачки двух-трех обновлений, программа виснет.
Если попытаться закрыть окно обновлений в этот момент, программа вылетает.
Если после такого вылета запустить баском и попытаться открыть PDF-ку, которую качал последней, то естественно она не открывается.
Компилятор 2.0.5.0 DEMO.
Отредактировано Qwerty (2011-09-04 14:07:19)
Поделиться272011-09-04 21:21:36
просьба ко всем нашедшим проблему: всегда используйте самую свежую версию программы
А то переписываешься, а потом оказывается, что такая проблема была давно, в старых версиях, и уже исправлена...
Неприятно
Поделиться282011-09-04 22:29:19
1 Эта ошибка не критическая и ошибка ли. Скорее, она связана со способом доступа в интернет на конкретном компьютере. Это же самое явление встречал и при обновлении других программ.
2 Кстати об ошибках. В версии 2.0.5.0 (пробовал только эту из 2.х.х.) для meg128 возникает серьезный сбой кода (программа делает какие-то лишние, пока непонятные действия и неработоспособна). А с 1.9.8 без проблем. Для мег M88, M324 и M644 старые исходники скомпились и работают нормально. Собственно, поэтому этот баг обнаружил недавно. При просмотре списка исправлений версий имеются указания о проблемах некоторых функций для моделей с флэш более 64к - в библиотеках забывался регист RAMPZ. Очевидно это оно. Эту предположение также подтверждает значительно меньший размер получаемого кода в версии 2.0.5 - приблизительно на 100 байт (при длине 20 кб).
Поделиться292011-09-05 01:15:50
Сегодня скачал 2.0.7.1 DEMO.
Ошибка ушла. Все работает на ура!!
Блин!! поспешил радоваться....(((((((
Все так же, и видимо это связано с потерей пакетов при передаче данных...
Что делать? Куда бежать?
Отредактировано Qwerty (2011-09-05 01:39:50)
Поделиться302011-09-05 01:18:23
Проблема о которой писал Max осталась версии 2.0.7.1, причем проблема началась с версии 1.11.9.8. Заключается она в невозможности корректно вывести текст на дисплей LS020 при использовании с Atmega128. Картинки и цветной градиет выводит правильно, а вот текст нет. Может кто-нибудь знает в чем причина?