Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » О программе BASCOM AVR/8051 » Обнаруженые ошибки компилятора.


Обнаруженые ошибки компилятора.

Сообщений 1 страница 30 из 82

1

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

0

2

тема хорошая
но пара "но":
лицензия - у единиц, демо-версия - устарела чуток, в 2006 году выложена. А в новых явно глючки изправлены/добавлены
кряк - тоже может глюков добавить...

пяток версий на руках у народа

вывод: дело почти бесперспективное!

0

3

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

0

4

Вопрос владельцам версий 2.Х.Х. Окна редактора по-прежнему меняют размеры самопроизвольно при загрузке новых файлов или при переключении окон? Дефект непринципиальный, но работать одновременно с несколькими файлами очень мешает. Причем никакие настройки не помогают. Напротив, при установке опции "Size of new editor window" = Maximazed и разворачивании Bascom на весь экран усугубляется. От версии ОС не зависит. Эта неприятность появилась приблизительно тогда, когда пошли версии под Vista.

0

5

Вроде нет.

0

6

Проблема осталась. Сворачиваешь одно, сворачиваются и другие, и наоборот.

0

7

Проверено в версиях 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

0

8

Mrshilov написал(а):

В версии 2.0.1.0 тоже самое. Надо бы автору сообщить.

Сообщил. Только пока ответа нет.

0

9

Автор ATtiny44.DAT исправил. В новой версии будет исправленный файл. Передаёт спасибо.

0

10

radan написал(а):

Автор ATtiny44.DAT исправил. В новой версии будет исправленный файл. Передаёт спасибо.

Отлично! Может напишете ему еще про то, что он в очистке памяти MCUSR злобно делает ANDI $F7?
Из за этого определить причину перезагрузки становится не так то просто, хорошо хоть, что в R0 сохраняеет. В документации эту фичу не нашел, полдня потратил, пока в пршивку не посмотрел.

0

11

IgorL написал(а):

Отлично! Может напишете ему еще про то, что он в очистке памяти MCUSR злобно делает ANDI $F7?
Из за этого определить причину перезагрузки становится не так то просто, хорошо хоть, что в R0 сохраняеет. В документации эту фичу не нашел, полдня потратил, пока в пршивку не посмотрел.

Я не настолько хорошо знаком с языком, опишите баг поподробнее. А вдобавок с моим "школьным" английским боюсь чтобы не исказить информацию, поэтому и прошу уточнить.

0

12

Вот этот код компилятор добавляет без ведома программиста:
  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. Надо либо документировать "фичу" либо убрать ее.

0

13

Возможно с помощью $initmicro можно выйти из этой ситуации - появится возможность вызвать подпрограмму до очистки памяти.

0

14

IgorL написал(а):

Надо либо документировать "фичу" либо убрать ее.

В 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.

+1

15

Вот и на оф. форуме появилась похожая тема про WATCHDOG http://www.mcselec.com/index2.php?optio … amp;t=9182

0

16

Весьма путанно, особенно пример в хелпе. Если бы не знал, ничего бы не понял.

0

17

Не знаю баг это или фича, но столкнулся с такой вещью на $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" используем как временную переменную для преобразования (перевальный пункт).
Делал это для того, чтобы вводимые команды человеком приводились в ожидаемый вид, чтобы не плодить лишнюю базу обработки тем самым экономя и память.

Хорошо, что железо позволяло наглядно увидеть эту ситуацию, прям не знаю сколько бы времени потерял иначе...

0

18

задам свой вопрос сюда, как бы это и не ошибка в чистом виде, но...

вот программа на 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

0

19

Все нормально!
Очистка памяти.
Линия выхода таймера на выход.
П/п задержки кратной 1 мкс (столько ZX).
П/п Установка системного бита ошибки.
П/п Сброс системного бита ошибки.

0

20

не понял
при чем тут: sbi    DDRB, 3      ; 002F 9ABB   ; What is it?
это не те выводы вообще!

и зачем подпрограмма avr0038?

0

21

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

0

22

не подскажите почему при компиляции в Bascom версии 2.0.6.1 выскакивают ошибки... такое ощущение , что в этой версии не все библиотеки
этот же код спокойно компилируется в 1.11.9.8 ?

0

23

обновите до 6.2 и проверьте

0

24

Мощный косяк с обновлением PDF файлов. Вывешивается практически полностью комп и после трех- четырех загрузок полностью зависает баском

0

25

что и как Вы делали? распишите по шагово

0

26

Втыкаем Tools- PDF Update, затем Check. И при проверке обновлений, работата остальных запущеных приложений практически невозможна.
Когда закончится проверка обновлений, то все восстанавливается до нормального состояния.
Далее втыкаем Download. Все. Ни чего опять невозможно делать, пока не загрузятся обновления, даже переместить окно обновления.
Сами же обновления грузятся рывками. После закачки двух-трех обновлений, программа виснет.
Если попытаться закрыть окно обновлений в этот момент, программа вылетает.
Если после такого вылета запустить баском и попытаться открыть PDF-ку, которую качал последней, то естественно она не открывается.
Компилятор 2.0.5.0 DEMO.

Отредактировано Qwerty (2011-09-04 14:07:19)

0

27

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

0

28

1 Эта ошибка не критическая и ошибка ли. Скорее, она связана со способом доступа в интернет на конкретном компьютере. Это же самое явление встречал и при обновлении других программ.
2 Кстати об ошибках. В версии 2.0.5.0 (пробовал только эту из  2.х.х.) для meg128 возникает серьезный сбой кода (программа делает какие-то лишние, пока непонятные действия и неработоспособна). А с 1.9.8 без проблем. Для мег M88, M324 и M644 старые исходники скомпились и работают нормально. Собственно, поэтому этот баг обнаружил недавно. При просмотре списка исправлений версий имеются указания о проблемах некоторых функций для моделей с флэш более 64к - в библиотеках забывался регист RAMPZ. Очевидно это оно. Эту предположение также подтверждает значительно меньший размер получаемого кода в версии 2.0.5 - приблизительно на 100 байт (при длине 20 кб).

0

29

Сегодня скачал 2.0.7.1 DEMO.
Ошибка ушла. Все работает на ура!!

Блин!! поспешил радоваться....(((((((

Все так же, и видимо это связано с потерей пакетов при передаче данных...
Что делать? Куда бежать?

Отредактировано Qwerty (2011-09-05 01:39:50)

0

30

Проблема о которой писал Max осталась версии 2.0.7.1, причем проблема началась с версии 1.11.9.8. Заключается она в невозможности корректно вывести текст на дисплей LS020 при использовании с Atmega128. Картинки и цветной градиет выводит правильно, а вот текст нет.  Может кто-нибудь знает в чем причина?

0


Вы здесь » Программирование ATMEL в BASCOM. » О программе BASCOM AVR/8051 » Обнаруженые ошибки компилятора.