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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » О программе BASCOM AVR » О компиляции в Bascom 2.0.7.1


О компиляции в Bascom 2.0.7.1

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

1

Здравствуйте!
Прошу помощи с Bascom 2.0.7.1
Вот программа:

Код:
$regfile = "attiny2313.dat"
$crystal = 10000000

Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Down

Config Lcd = 16 * 2

Deflcdchar 1 , 32 , 2 , 17 , 9 , 9 , 17 , 2 , 32            ' replace ? with number (0-7)  Max
Deflcdchar 2 , 32 , 32 , 8 , 4 , 4 , 8 , 32 , 32            ' replace ? with number (0-7)
Deflcdchar 3 , 32 , 32 , 10 , 10 , 10 , 10 , 32 , 32        ' replace ? with number (0-7) Bar
Deflcdchar 4 , 14 , 4 , 4 , 4 , 4 , 4 , 4 , 14              ' replace ? with number (0-7) Leght

Config Pinb.1 = Input
Config Pinb.0 = Input
Pinb.0 = 1
Pinb.1 = 1

Dim Volume As Byte
Dim Count As Byte
Count = 0

Cls
Cursor Off
Lcd "   PWM Control  "
Lowerline
Lcd "   Starting...  "
Wait 2
Cls
Lcd "-©Ÿpa³»eœže ¬¥M-"
Lowerline
Lcd "€œaÀeœže ¬¥M:0"
Do
If Pinb.1 = 0 Then Count = Count + 1
If Pinb.0 = 0 Then Count = Count - 1
If Count = 255 Then Count = 0
Locate 2 , 1
Lcd "€œaÀeœže ¬¥M:   "
Locate 2 , 1
Lcd "€œaÀeœže ¬¥M:" ; Count
Pwm0b = Count
Waitms 10
Loop
End

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

0

2

ничего не понял
как программа может работать БЕЗ компиляции?

0

3

определи в программе порты подключения индикатора в программе они могли попасть на выходные линии управления.

0

4

программа и не работает без компиляции.есть готовая прошивка hex и есть исходник программы bas так вот исходник после компиляции
отличается от готовой прошивки.Извините что непонятно описал ситуацию!
Порты проверил на индикатор они выставлены по умолчанию а на выход управления Portd.5

0

5

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

0

6

дело в том что все изменения которые я делаю в программе нормально компилируются и работают на готовом устройстве за исключением
того что двигатель начинает работать сразу на максимуме а мне нужно чтобы он был остановлен!
Сколько пересмотрел и перепробовал разные версии баскома нет изменений.
Не знаю что ещё можно предпринять?

0

7

Ну тогда запишите в инициализации программы Count не 0, а 255.
И в Pwm0b запишите тоже самое.

0

8

все заработало!изменил clear down на clear up!
большое спасибо Mrshilov!

0

9

Интересный факт
решил проверить на сколько уменьшится HEX файл при изменении кода
вот изначальный код

Код:
Dim I As Byte
Dim A(8) As Byte
Dim B As Byte

for i = 1 to 8
a(i)=0
next i

If B => 128 Then A(8) = 1
If B => 128 Then B = B - 128
If B => 64 Then A(7) = 1
If B => 64 Then B = B - 64
If B => 32 Then A(6) = 1
If B => 32 Then B = B - 32
If B => 16 Then A(5) = 1
If B => 16 Then B = B - 16
If B => 8 Then A(4) = 1
If B => 8 Then B = B - 8
If B => 4 Then A(3) = 1
If B => 4 Then B = B - 4
If B => 2 Then A(2) = 1
If B => 2 Then B = B - 2
If B => 1 Then A(1) = 1

Вес его HEX-а = 1.02 кБ

А вот измененный

Код:
Dim I As Byte
Dim A(8) As Byte
Dim B As Byte

for i = 1 to 8
a(i)=0
next i

If B > 127 Then A(8) = 1
If B > 127 Then B = B - 128
If B > 63 Then A(7) = 1
If B > 63 Then B = B - 64
If B > 31 Then A(6) = 1
If B > 31 Then B = B - 32
If B > 15 Then A(5) = 1
If B > 15 Then B = B - 16
If B > 7 Then A(4) = 1
If B > 7 Then B = B - 8
If B > 3 Then A(3) = 1
If B > 3 Then B = B - 4
If B > 1 Then A(2) = 1
If B > 1 Then B = B - 2
If B > 0 Then A(1) = 1

Как оказалось вес не уменьшился а стал больше))))
1.19 кБ

0

10

Если упрощать, то надо как-то так:

Код:
If B > 127 Then 
     A(8) = 1
     B = B - 128
End If
If B > 63 Then 
     A(7) = 1
     B = B - 64
End If
If B > 31 Then 
     A(6) = 1
     B = B - 32
End If
If B > 15 Then 
     A(5) = 1
     B = B - 16
End If
If B > 7 Then 
     A(4) = 1
     B = B - 8
End If
If B > 3 Then 
     A(3) = 1
     B = B - 4
End If
If B > 1 Then 
     A(2) = 1
     B = B - 2
End If
If B > 0 Then A(1) = 1

Отредактировано RDW (2013-03-12 18:31:16)

0

11

Спасибо за совет))

0

12

Доброе утро всем форумчанам! У меня та же проблема что и у автора темы. С целью изучения компилятора Bascom пытаюсь откомпилировать чужие исходники со своими изменениями. Как избавиться от проблемы прочитал выше но остался вопрос. Придётся все исходники "зеркалить" таким образом или всё же где то в настройках компилятора есть необходимая функция?

0


Вы здесь » Программирование ATMEL в BASCOM. » О программе BASCOM AVR » О компиляции в Bascom 2.0.7.1