BASCOM AVR в вопросах и ответах
Re: BASCOM AVR в вопросах и ответах
У меня ругается только на отсутствие библиотеки. Надеюсь сообразили убрать из строки 123 команду "Readeeprom"?
- Реклама
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Вы не номер смотрите, а саму ошибку читайте. Оно же пишет в чем дело.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
А как записать переменную в память.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Выше пост от vem566. Свой код покажите, где ошибка.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
1. 123 U_min = U_min_e - это чтение ?
2. Ошибку уже не выдает но ничего в память не пишет , посмотрите пожалуйста что не так ?
2. Ошибку уже не выдает но ничего в память не пишет , посмотрите пожалуйста что не так ?
- Вложения
-
- форум.rar
- (314.52 КБ) 317 скачиваний
- Реклама
Re: BASCOM AVR в вопросах и ответах
В программе:
561 Writeeeprom U_min_e : X = X + 1
Должно быть:
561 U_min_e = U_min : X = X + 1
Вы решили, что чем читать тот же Help, проще пройти интерактивный курс Bascom? Непонятки ведь не от "запутывания мозгов", а от элементарного незнания. Есть хорошие учебники по Bascomу. Там все это описано.
561 Writeeeprom U_min_e : X = X + 1
Должно быть:
561 U_min_e = U_min : X = X + 1
Вы решили, что чем читать тот же Help, проще пройти интерактивный курс Bascom? Непонятки ведь не от "запутывания мозгов", а от элементарного незнания. Есть хорошие учебники по Bascomу. Там все это описано.
Re: BASCOM AVR в вопросах и ответах
Добавлено 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 в вопросах и ответах
[uquote="OLEGKARAS",url="/forum/viewtopic.php?p=3144752#p3144752"]компилятор выдал ошибку.[/uquote]
Как заводили переменные U_min_e и U_min ?
Обе переменные должны быть одинакового типа.
Как заводили переменные U_min_e и U_min ?
Обе переменные должны быть одинакового типа.
С уважением,
Алексей.
Алексей.
Re: BASCOM AVR в вопросах и ответах
OLEGKARAS, в одном месте Word, в другом Byte, в общем человек хочет, что бы ему не помогали, а за него переделали программу.vem566 писал(а):Есть хорошие учебники по Bascomу. Там все это описано
Re: BASCOM AVR в вопросах и ответах
У меня получается все переменные должны быть Eram Word ?
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 486
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
[uquote="OLEGKARAS",url="/forum/viewtopic.php?p=3144763#p3144763"]У меня получается все переменные должны быть Eram Word ?[/uquote]
Переменные могут быть разных типов. Но переменная типа Eram должна быть одинаковой по типу с обычной переменной, в которую вы эту Eram-переменную переписываете.
И наоборот.
Естественно, что в переменную типа Byte переменная типа Word не влезет, поэтому компилятор и ругается.
Знак равенства ( = ) вовсе не означает "равно". Он означает "берет значение". A_eram = A и A = A_Eram - это две большие разницы.
Вот вам учебник. Русский. Сам на нем начинал.
Переменные могут быть разных типов. Но переменная типа Eram должна быть одинаковой по типу с обычной переменной, в которую вы эту Eram-переменную переписываете.
И наоборот.
Естественно, что в переменную типа Byte переменная типа Word не влезет, поэтому компилятор и ругается.
Знак равенства ( = ) вовсе не означает "равно". Он означает "берет значение". A_eram = A и A = A_Eram - это две большие разницы.
Вот вам учебник. Русский. Сам на нем начинал.
С уважением,
Алексей.
Алексей.
Re: BASCOM AVR в вопросах и ответах
Почему нельзя записать переменную памяти типа Byte - Dim U_min_e As Eram Byte ?
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 486
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
[uquote="OLEGKARAS",url="/forum/viewtopic.php?p=3144779#p3144779"]Почему нельзя записать переменную памяти типа Byte - Dim U_min_e As Eram Byte ?[/uquote]
Можно. Только тогда переменная U_min тоже должна быть Byte.
Можно. Только тогда переменная 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
С уважением,
Алексей.
Алексей.
Re: BASCOM AVR в вопросах и ответах
Так я так и делал , но в память ни чего не пишет , а если переменная типа Word то пишет .
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 486
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
[uquote="OLEGKARAS",url="/forum/viewtopic.php?p=3144789#p3144789"]Так я так и делал , но в память ни чего не пишет , а если переменная типа Word то пишет .[/uquote]
Проверяйте код. Тут проще уже просто некуда.
Eeprom затирается когда вы заливаете в мк очередную версию программы. Поставьте фуз "Preserve Eeprom when chip erase" (в баскомовской прошивалке). И Eeprom очищаться не будет.
Проверяйте код. Тут проще уже просто некуда.
Eeprom затирается когда вы заливаете в мк очередную версию программы. Поставьте фуз "Preserve Eeprom when chip erase" (в баскомовской прошивалке). И Eeprom очищаться не будет.
С уважением,
Алексей.
Алексей.
Re: BASCOM AVR в вопросах и ответах
Я проверяю в протеусе , попробую этот кусок программы отдельно от основной.
Добавлено after 23 minutes 59 seconds:
НЕ пойму в чем дело , отдельно кусок программы работает а в основной программе нет, как в протеусе посмотреть что происходит в ячейках памяти , записывается или нет ?
Добавлено after 48 minutes 35 seconds:
Нашел где в протеусе смотреть память , и четко видно если Dim U_min_e as eram Word - то ячейки записываются а если Dim U_min_e as eram byte - нет.
Добавлено after 23 minutes 59 seconds:
НЕ пойму в чем дело , отдельно кусок программы работает а в основной программе нет, как в протеусе посмотреть что происходит в ячейках памяти , записывается или нет ?
Добавлено after 48 minutes 35 seconds:
Нашел где в протеусе смотреть память , и четко видно если Dim U_min_e as eram Word - то ячейки записываются а если Dim U_min_e as eram byte - нет.
Re: BASCOM AVR в вопросах и ответах
Проверил в железе , все работает , в протеусе нет.
Re: BASCOM AVR в вопросах и ответах
Как можно отключить /включить метку ?
-
Novice user
- Мудрый кот
- Сообщения: 1704
- Зарегистрирован: Вт янв 05, 2016 10:14:25
- Откуда: поселок Мелеуз
Re: BASCOM AVR в вопросах и ответах
все,разобрался
Re: BASCOM AVR в вопросах и ответах
Собираю станок для нарезки кабеля, станок почти доделал, осталось только доделать режущую часть. А вот с программой вышли сложности, а именно. Не работает в железе программа, в протеусе все работает чётко, в железе счётчики бегают безостановочно. Вместо энкодера использую две кнопки, но даже с подключённым энкодером толку нет, почему так? Очень нужна ваша помощь.
Проект прикрепил, в том числе и в протеусе. При запуске протеуса первоначально жмем кнопку с подписью "сначала нажать эту", далее жмём либо L meter либоPCS , все работает, а в железе нету, помогите подправить код
Проект прикрепил, в том числе и в протеусе. При запуске протеуса первоначально жмем кнопку с подписью "сначала нажать эту", далее жмём либо 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 скачивания


