Предлагаю здесь писать об обнаруженых глюках компилятора и возможных способах их обойти.
Обнаруженые ошибки компилятора.
Сообщений 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. Картинки и цветной градиет выводит правильно, а вот текст нет. Может кто-нибудь знает в чем причина?