BASCOM AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
vem566
Друг Кота
Сообщения: 4733
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: BASCOM AVR в вопросах и ответах

Сообщение vem566 »

У меня ругается только на отсутствие библиотеки. Надеюсь сообразили убрать из строки 123 команду "Readeeprom"?
Реклама
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Вы не номер смотрите, а саму ошибку читайте. Оно же пишет в чем дело.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Реклама
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

Re: BASCOM AVR в вопросах и ответах

Сообщение OLEGKARAS »

А как записать переменную в память.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Выше пост от vem566. Свой код покажите, где ошибка.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Реклама
Эиком - электронные компоненты и радиодетали
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

Re: BASCOM AVR в вопросах и ответах

Сообщение OLEGKARAS »

1. 123 U_min = U_min_e - это чтение ?
2. Ошибку уже не выдает но ничего в память не пишет , посмотрите пожалуйста что не так ?
Вложения
форум.rar
(314.52 КБ) 317 скачиваний
Реклама
Аватара пользователя
vem566
Друг Кота
Сообщения: 4733
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: BASCOM AVR в вопросах и ответах

Сообщение vem566 »

В программе:

561 Writeeeprom U_min_e : X = X + 1

Должно быть:

561 U_min_e = U_min : X = X + 1

Вы решили, что чем читать тот же Help, проще пройти интерактивный курс Bascom? Непонятки ведь не от "запутывания мозгов", а от элементарного незнания. Есть хорошие учебники по Bascomу. Там все это описано.
Реклама
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

Re: BASCOM AVR в вопросах и ответах

Сообщение OLEGKARAS »

ИзображениеВсе сделал как вы написали , компилятор выдал ошибку.

Добавлено after 8 minutes 54 seconds:
Получается не работает с этим типом переменной U_min As Byte , а скаким типом будет работать ?
Вложения
242.rar
(55.31 КБ) 340 скачиваний
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 486
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

[uquote="OLEGKARAS",url="/forum/viewtopic.php?p=3144752#p3144752"]компилятор выдал ошибку.[/uquote]

Как заводили переменные U_min_e и U_min ?
Обе переменные должны быть одинакового типа.
С уважением,
Алексей.
Аватара пользователя
vem566
Друг Кота
Сообщения: 4733
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Re: BASCOM AVR в вопросах и ответах

Сообщение vem566 »

vem566 писал(а):Есть хорошие учебники по Bascomу. Там все это описано
OLEGKARAS, в одном месте Word, в другом Byte, в общем человек хочет, что бы ему не помогали, а за него переделали программу.
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

Re: BASCOM AVR в вопросах и ответах

Сообщение OLEGKARAS »

У меня получается все переменные должны быть Eram Word ?
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 486
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

[uquote="OLEGKARAS",url="/forum/viewtopic.php?p=3144763#p3144763"]У меня получается все переменные должны быть Eram Word ?[/uquote]

Переменные могут быть разных типов. Но переменная типа Eram должна быть одинаковой по типу с обычной переменной, в которую вы эту Eram-переменную переписываете.
И наоборот.
Естественно, что в переменную типа Byte переменная типа Word не влезет, поэтому компилятор и ругается.

Знак равенства ( = ) вовсе не означает "равно". Он означает "берет значение". A_eram = A и A = A_Eram - это две большие разницы.

Вот вам учебник. Русский. Сам на нем начинал.
С уважением,
Алексей.
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

Re: BASCOM AVR в вопросах и ответах

Сообщение OLEGKARAS »

Почему нельзя записать переменную памяти типа Byte - Dim U_min_e As Eram Byte ?
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 486
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

[uquote="OLEGKARAS",url="/forum/viewtopic.php?p=3144779#p3144779"]Почему нельзя записать переменную памяти типа Byte - Dim U_min_e As Eram Byte ?[/uquote]

Можно. Только тогда переменная U_min тоже должна быть Byte.

Код: Выделить всё

Dim U_min as byte
Dim U_min_e as eram byte

U_min  = U_min_e 'читаем из Eeprom
U_min_e = U_min 'пишем в Eeprom
С уважением,
Алексей.
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

Re: BASCOM AVR в вопросах и ответах

Сообщение OLEGKARAS »

Так я так и делал , но в память ни чего не пишет , а если переменная типа Word то пишет .
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 486
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение Gordon Shumway »

[uquote="OLEGKARAS",url="/forum/viewtopic.php?p=3144789#p3144789"]Так я так и делал , но в память ни чего не пишет , а если переменная типа Word то пишет .[/uquote]

Проверяйте код. Тут проще уже просто некуда.
Eeprom затирается когда вы заливаете в мк очередную версию программы. Поставьте фуз "Preserve Eeprom when chip erase" (в баскомовской прошивалке). И Eeprom очищаться не будет.
С уважением,
Алексей.
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

Re: BASCOM AVR в вопросах и ответах

Сообщение OLEGKARAS »

Я проверяю в протеусе , попробую этот кусок программы отдельно от основной.

Добавлено after 23 minutes 59 seconds:
НЕ пойму в чем дело , отдельно кусок программы работает а в основной программе нет, как в протеусе посмотреть что происходит в ячейках памяти , записывается или нет ?

Добавлено after 48 minutes 35 seconds:
Нашел где в протеусе смотреть память , и четко видно если Dim U_min_e as eram Word - то ячейки записываются а если Dim U_min_e as eram byte - нет.
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

Re: BASCOM AVR в вопросах и ответах

Сообщение OLEGKARAS »

Проверил в железе , все работает , в протеусе нет.
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

Re: BASCOM AVR в вопросах и ответах

Сообщение OLEGKARAS »

Как можно отключить /включить метку ?
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Re: BASCOM AVR в вопросах и ответах

Сообщение Novice user »

все,разобрался
Аватара пользователя
Адвансед
Встал на лапы
Сообщения: 98
Зарегистрирован: Вс мар 11, 2012 23:06:08
Откуда: Казань

Re: BASCOM AVR в вопросах и ответах

Сообщение Адвансед »

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

Проект прикрепил, в том числе и в протеусе. При запуске протеуса первоначально жмем кнопку с подписью "сначала нажать эту", далее жмём либо L meter либоPCS , все работает, а в железе нету, помогите подправить код

Код: Выделить всё

$regfile = "m8def.dat"
$crystal = 8000000

Config Lcdpin = Pin , Rs = Portc.0 , E = Portb.5 , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.2 , Db7 = Portb.0
Config Lcd = 16 * 4

Dim W As Word
Dim P As Word

Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Portd.6 = Input                                      ' кнопка старт
Config Portb.6 = Output                                     ' нож
Config Portb.7 = Output                                     ' двигатель


Config Int0 = Falling                                      
Config Int1 = Falling
On Int0 Encod
On Int1 Encod2

Gifr = 64
Gifr = 128

Enable Interrupts
Enable Int0
Enable Int1


Cls
Cursor Off Noblink

Start Adc
Do

Locate 2 , 1
Lcd "L=" ; Getadc(1) ; "cm"                                 'длина
If Getadc(1) < 10 Then
Locate 2 , 6
Lcd " "
End If

If Pind.6 = 1 Then
Portb.7 = 1                                                 ' начинаем крутить двигатель
Else
End If



If Pind.6 = 1 Then                                          'если нажали кнопку старта
If W = Getadc(1) Then
Locate 2 , 8
Lcd "-"
Waitms 200
Portb.7 = 0                                                 ' останавиваем двигатель пока работает нож
Waitms 50
Portb.6 = 1                                                 'отрезаем
Waitms 300
Portb.6 = 0
Waitms 100
W = 0
Locate 2 , 8
Lcd " "
End If
End If


Locate 1 , 1
Lcd W

Locate 1 , 8
Lcd P



Locate 2 , 11
Lcd "pcs:" ; Getadc(2)                                      ' количество
If Getadc(2) < 10 Then
Locate 2 , 16
Lcd " "
End If

Locate 1 , 11
Lcd "     "

If P = Getadc(2) Then                                       ' проверяем счетчик
Goto Ready
Else
End If

If P = Getadc(2) Then                                       ' проверяем счетчик
'Locate 1 , 11
'Lcd "READY"
Waitms 500
End If




Loop
End
Return


Encod:                                                      ' тут узнаем в каком направлении вращают ручку энкодера
  If W >= 100 Then                                          'добавляем условие сброса переменной
   W = 0                                                    'сбрасываем переменную
   End If

  Waitms 2                                                  ' ждем пока утихнет дребезг контактов

  If Pind.5 = 1 Then                                        ' если на ноге единица (импульс не пришел) тогда
  Incr W                                                    ' инкременируем переменную (увеличиваем на 1)
  Else                                                      ' в обратном случае
  Decr W                                                    ' декрементируем переменную (уменьшаем на 1)
  End If

  Gifr = 64                                                 ' сбрасываем регистр хранения прерывания INT0

Return




Encod2:                                                     ' тут узнаем в каком направлении вращают ручку энкодера
  If P >= 100 Then                                          'добавляем условие сброса переменной
   P = 0                                                    'сбрасываем переменную
   End If

  Waitms 2                                                  ' ждем пока утихнет дребезг контактов

  If Pind.5 = 1 Then                                        ' если на ноге единица (импульс не пришел) тогда
  Incr P                                                    ' инкременируем переменную (увеличиваем на 1)
  Else                                                      ' в обратном случае
  Decr P                                                    ' декрементируем переменную (уменьшаем на 1)
  End If

  Gifr = 128                                                ' сбрасываем регистр хранения прерывания INT0


Return


Ready:
Locate 1 , 11
Lcd "READY"
Waitms 500
Portb.7 = 0                                                 ' останавливаем двигатель
End
Вложения
Новая папка (2).rar
(55.7 КБ) 322 скачивания
Ответить

Вернуться в «AVR»