BASCOM AVR в вопросах и ответах
Re: BASCOM AVR в вопросах и ответах
PROTEUS отлично симулирует проекты BASCOM ! Это удобно.
Будете проходить мимо- проходите!
Re: BASCOM AVR в вопросах и ответах
radio-kot писал(а):PROTEUS отлично симулирует проекты BASCOM ! Это удобно.
И что это было???
Мысли вслух? Тогда добро пожаловать в "МЯУ". А здесь, пожалуйста, по-существу... Итак, кто ответит на поставленный вопрос про отрицательные температуры? Почему вместо, допустим -16, кажет -15? На обработчики INT0, INT1 внимание не обращать-это еще не дописано... 
Цапу крутить надо!!! Ку или не ку?
Re: BASCOM AVR в вопросах и ответах
В PROTEUS ?Igor_67 писал(а):Почему вместо, допустим -16, кажет -15 ?
Будете проходить мимо- проходите!
Re: BASCOM AVR в вопросах и ответах
Да везде!!! И в Протосе и в железе... А чтобы почём зря не спрашивать, лучше бы запустили мой проект на симуляцию (в Протеусе) - сами все и увидите. к тому же весь проект-в архиве во вложении. А то так игра в глухой телефон получается...
Последний раз редактировалось Igor_67 Сб окт 30, 2010 09:44:08, всего редактировалось 1 раз.
Цапу крутить надо!!! Ку или не ку?
Re: BASCOM AVR в вопросах и ответах
Приложите пожалуйста архив с прожектом BASCOM и PROTEUS - позырю.
Будете проходить мимо- проходите!
Re: BASCOM AVR в вопросах и ответах
radio-kot писал(а):Приложите пожалуйста архив с прожектом BASCOM и PROTEUS - позырю.
Вы что, издеваетесь? Посмотрите несколькими постами выше - там все есть...
Таки вот вам ссылка: http://radiokot.ru/forum/download/file.php?id=46439
Уточнение: Признак отрицательной температуры индицируется светодиодом (вместо знака "-").
Цапу крутить надо!!! Ку или не ку?
Re: BASCOM AVR в вопросах и ответах
У меня такой под нормально отображает отрицательные температуры
Код: Выделить всё
$regfile = "m8def.dat"
$crystal = 12000000
Declare Sub Convallt ' !!!!!! Convert T on ALL sensors
Declare Function Decigrades(byval Sc(9) As Byte) As Integer
Config Lcd = 16 * 2 ' дисплей 2 строки по 16 символов
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 ' конфигурируем дисплей
Config 1wire = Portd.0 ' на эту ножку подключим DS18B20 и подтягивающий резистор на 4,7 ком к + питания
'Temp variables
Dim B As Byte
Dim W As Word
Dim Dg As Integer 'DECIgrades, I call it, cause I have no space for commas on the display....
Dim Dsid1(8) As Byte 'Dallas ID 64 bits incl CRC
Dim Sc(9) As Byte 'Scratchpad 0-8 72 bits incl CRC, explanations for DS18b20
Cls
W = 1wirecount()
Dsid1(1) = 1wsearchfirst()
' First sensor identified and stored in variable
If Dsid1(8) = Crc8(dsid1(1) , 7) Then ' Control that the received CRC match the calculated
Locate 1 , 1
Lcd "CRC OK Sensor 1 ID"
Wait 1
Locate 2 , 1
For B = 1 To 8
Lcd Hex(dsid1(b))
Next
End If
Wait 1
Cls
' Main loop
Do
Convallt ' "Convert ALL T on the 1w-bus"
Waitms 750
1wverify Dsid1(1) 'Issues the "Match ROM "
Locate 1 , 1
1wwrite &HBE
Sc(1) = 1wread(9) 'read bytes into array
If Sc(9) = Crc8(sc(1) , 8) Then
Dg = Decigrades(sc(9))
Locate 1 , 1
Lcd Dg
End If
Loop
End 'end program
Sub Convallt
1wreset ' reset the bus
1wwrite &HCC ' skip rom
1wwrite &H44 ' Convert T
End Sub
'Makes a integer value of the first two bytes in scratchpad'''''''''''''
'Works on DS18 B 20 , observe "B". The R0 and R1 in Sc(5) tells you how many bits are accurate
Function Decigrades(byval Sc(9) As Byte)
Decigrades = 0
Decigrades = Makeint(sc(1) , Sc(2))
Decigrades = Decigrades * 10
Decigrades = Decigrades / 16
End FunctionЭто AVR123 пиарит протеус!Igor_67 писал(а):И что это было???
-
spy-tuning
- Первый раз сказал Мяу!
- Сообщения: 23
- Зарегистрирован: Пн окт 18, 2010 17:33:15
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Do
While Pind.3 = 1
Call Lighton
If Speedflag = 1 Then : Call Hilighton
Else : Call Hilightoff
End If
Wend
Call Alloff
Loop
End
Здравствуйте, гуру! Подскажите пожалуйста, почему у меня IF/THEN не переходит на Call Hilighton? Speedflag выставляется, проверял командой set/reset portb.4 светодиодик говорит мол флаг выставляется. Голова третий день кипит, понять не могу где косяк? МК Аттини2313. Заранее спасибо!
While Pind.3 = 1
Call Lighton
If Speedflag = 1 Then : Call Hilighton
Else : Call Hilightoff
End If
Wend
Call Alloff
Loop
End
Здравствуйте, гуру! Подскажите пожалуйста, почему у меня IF/THEN не переходит на Call Hilighton? Speedflag выставляется, проверял командой set/reset portb.4 светодиодик говорит мол флаг выставляется. Голова третий день кипит, понять не могу где косяк? МК Аттини2313. Заранее спасибо!
Re: BASCOM AVR в вопросах и ответах
А что если написать по-человечески?:
If Speedflag = 1 Then
Call Hilighton
Else
Call Hilightoff
End If
или так:
If Speedflag = 1 Then Call Hilighton Else Call Hilightoff
End If
В Баскоме конструкции IF-THEN-ELSE прописаны по строгим правилам и всякого рода ухищрения здесь не проканывают! Извините за жаргон...
If Speedflag = 1 Then
Call Hilighton
Else
Call Hilightoff
End If
или так:
If Speedflag = 1 Then Call Hilighton Else Call Hilightoff
End If
В Баскоме конструкции IF-THEN-ELSE прописаны по строгим правилам и всякого рода ухищрения здесь не проканывают! Извините за жаргон...
Цапу крутить надо!!! Ку или не ку?
- Секретный кот
- Поставщик валерьянки для Кота
- Сообщения: 2106
- Зарегистрирован: Ср сен 17, 2008 14:32:15
- Откуда: Старые Васюки
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Согласен. Else: в данном случае воспринимается как метка.
Даже остановленные часы два раза в сутки показывают правильное время.
-
spy-tuning
- Первый раз сказал Мяу!
- Сообщения: 23
- Зарегистрирован: Пн окт 18, 2010 17:33:15
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Igor_67 писал(а):А что если написать по-человечески?:
If Speedflag = 1 Then
Call Hilighton
Else
Call Hilightoff
End If
или так:
If Speedflag = 1 Then Call Hilighton Else Call Hilightoff
End If
В Баскоме конструкции IF-THEN-ELSE прописаны по строгим правилам и всякого рода ухищрения здесь не проканывают! Извините за жаргон...
Спасибо, буду пробовать.
- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
Igor_67, почему, сдвигаем в право на 5, а в лево на 3?
И ещё -в протеусе с Мегой 8, чтобы нормально работала DS18B20, пришлось частоту до 1Мгц уменьшить, а с 2313 прерывания некорректно работали.
Может глюк Протеуса?
Код: Выделить всё
Shift B0 , Right , 5
Shift B1 , Left , 3И ещё -в протеусе с Мегой 8, чтобы нормально работала DS18B20, пришлось частоту до 1Мгц уменьшить, а с 2313 прерывания некорректно работали.
Может глюк Протеуса?
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Re: BASCOM AVR в вопросах и ответах
Я пробовал, как в классическом варианте, сделать сдвиг влево на 4 бита и вправо на 4 бита. Так вообще лабуда получалась в показаниях. А тини2313 у меня работает на частоте до 4 МГц и не врет.
И про глюки протеуса: это происходит начиная с Протеуса версии 6.5, раньше я просто не пробовал симулировать подобные схемы при помощи протеуса. И если уж глюки, то это бы происходжило вообще при симуляции данной схемы. А это происходит, только если прошивка написана в Баскоме, а если на КодВижне, то все ОК!
И про глюки протеуса: это происходит начиная с Протеуса версии 6.5, раньше я просто не пробовал симулировать подобные схемы при помощи протеуса. И если уж глюки, то это бы происходжило вообще при симуляции данной схемы. А это происходит, только если прошивка написана в Баскоме, а если на КодВижне, то все ОК!
Цапу крутить надо!!! Ку или не ку?
- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
вот кусок моего кода- работает , проверенно в протеусе 7.4, и в железе(проверял приблизительно, детским ИК термометром)
Тут постами выше тоже достучаться не мог ни до кокго
, так-что код есть как есть.Так-что если оптимизируете или подправите, пожалуйста, отпишитесь с коментами, хоть в личку.
Термометр в составе часов, так-что всяки-разны там Cifri(4) = 13 -необращайте внимания.
Тут постами выше тоже достучаться не мог ни до кокго
, так-что код есть как есть.Так-что если оптимизируете или подправите, пожалуйста, отпишитесь с коментами, хоть в личку.
Код: Выделить всё
'*************************** подпрограмма термометра *******************
Termo:
1wreset
Stop Timer0 ' : Portd = 255
1wwrite &HCC ' Выдаем команду чтения ПЗУ
1wwrite &H44 ' Запуск измерения
Start Timer0
Waitms 750 ' Ждем окончания преобразования
1wreset
Stop Timer0 '
1wwrite &HCC
1wwrite &HBE ' Команда чтения ОЗУ датчика
BYTE0 = 1wread() ' Читаем нулевой байт
BYTE1 = 1wread() ' Читаем первый байт
Start Timer0
Tochka = 0
If BYTE1 > 247 Then '
A = BYTE0 Mod 16 'берём мадшие 4 бита
A = A * 10 'переводим их из дробной в целую
A = A / 16
T2 = 10 - A 'вычисление дробной части в диапазоне отрицательных температур
BYTE0 = &HFF - BYTE0 ' переводим из отрицательной в положительную
BYTE1 = &HFF - BYTE1
Cifri(1) = 12
GoSub Ter
If T2 = 10 Then ' тут как раз ошибка была
T2 = 0
T1 = T1 + 1
End If ' коррекция при преходе через -Х,0
If T1 > 9 Then
Tochka = 2
Cifri(2) = T1 / 10
Cifri(3) = T1 Mod 10
Cifri(4) = T2
Else
Tochka = 0
Cifri(2) = T1 Mod 10
Cifri(3) = T2
Cifri(4) = 13
End If
Else
T2 = BYTE0 * 10
T2 = T2 / 16
GoSub Ter
Cifri(1) = T1 / 10
Cifri(2) = T1 Mod 10 '
Cifri(3) = T2 Mod 10
Cifri(4) = 13
End If
Waitms 300
ReturnТермометр в составе часов, так-что всяки-разны там Cifri(4) = 13 -необращайте внимания.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
-
spy-tuning
- Первый раз сказал Мяу!
- Сообщения: 23
- Зарегистрирован: Пн окт 18, 2010 17:33:15
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
$regfile = "2313def.dat"
$crystal = 1000000
Dim Speedflag As Bit
Dim Speedcount As Byte
Dim T1 As Word
Dim T2 As Word
'******Settings**********************
Config Portd = Input
Config Portb = Output
Config Timer1 = Timer , Prescale = 64
Config Int0 = Rising
'Const Debouncetime = 5
Const Timer1pre = 55895
Declare Sub Lighton
Declare Sub Hilighton
Declare Sub Hilightoff
Declare Sub Alloff
'******Enable Interrupts, timer1*****
Enable Interrupts
Enable Ovf1
Enable Int0
'******Interrupt routline setting****
On Timer1 Spd:
On Int0 Speedset:
'*********Main program***************
Stop Timer1
Timer1 = Timer1pre
Start Timer1
Reset Portb.2
Reset Portb.3
Do
While Pind.3 = 1
Call Lighton
If Speedflag = 1 Then
Call Hilighton
Else
Call Hilightoff
End If
Wend
Call Alloff
Loop
End
'******Мерием скорость автомобиля***
Speedset:
'Waitms Debouncetime
'Disable Ovf1
Incr Speedcount
'Enable Ovf1
Return
'**********Признак движения*********
Spd:
'Disable Int0
If Speedcount > 3 Then
Speedflag = 1
Else
Speedflag = 0
End If
Speedcount = 0
Stop Timer1
Timer1 = Timer1pre
Start Timer1
'Enable Int0
Return
'*******включаем габариты***********
Sub Lighton
T1 = 0
While T1 < 20
Incr T1
If Pind.3 = 0 Then : Return
End If
Waitms 100
Wend
Set Portb.2
End Sub
'*******включаем фары***************
Sub Hilighton
T2 = 0
While T2 < 10
Incr T1
If Pind.3 = 0 Then : Return
End If
Waitms 100
Wend
Set Portb.3
End Sub
'*******выключаем фары**************
Sub Hilightoff
T1 = 0
While T1 < 1200
Incr T1
If Pind.3 = 0 Then : Return
End If
Waitms 100
Wend
Reset Portb.3
End Sub
'********всё выключаем**************
Sub Alloff
Reset Portb.3
T1 = 0
While T1 < 100
Incr T1
If Pind.3 = 1 Then : Return
End If
Waitms 100
Wend
Reset Portb.2
End Sub
Не получается никак. Не идёт на отмеченое красным и всё тут. Мозги уже закипают. Подскажите пожалуйста, где я косячу? Я понимаю что проблема кроется в чём то простом, но понять не могу.
Извините если что не так.
$crystal = 1000000
Dim Speedflag As Bit
Dim Speedcount As Byte
Dim T1 As Word
Dim T2 As Word
'******Settings**********************
Config Portd = Input
Config Portb = Output
Config Timer1 = Timer , Prescale = 64
Config Int0 = Rising
'Const Debouncetime = 5
Const Timer1pre = 55895
Declare Sub Lighton
Declare Sub Hilighton
Declare Sub Hilightoff
Declare Sub Alloff
'******Enable Interrupts, timer1*****
Enable Interrupts
Enable Ovf1
Enable Int0
'******Interrupt routline setting****
On Timer1 Spd:
On Int0 Speedset:
'*********Main program***************
Stop Timer1
Timer1 = Timer1pre
Start Timer1
Reset Portb.2
Reset Portb.3
Do
While Pind.3 = 1
Call Lighton
If Speedflag = 1 Then
Call Hilighton
Else
Call Hilightoff
End If
Wend
Call Alloff
Loop
End
'******Мерием скорость автомобиля***
Speedset:
'Waitms Debouncetime
'Disable Ovf1
Incr Speedcount
'Enable Ovf1
Return
'**********Признак движения*********
Spd:
'Disable Int0
If Speedcount > 3 Then
Speedflag = 1
Else
Speedflag = 0
End If
Speedcount = 0
Stop Timer1
Timer1 = Timer1pre
Start Timer1
'Enable Int0
Return
'*******включаем габариты***********
Sub Lighton
T1 = 0
While T1 < 20
Incr T1
If Pind.3 = 0 Then : Return
End If
Waitms 100
Wend
Set Portb.2
End Sub
'*******включаем фары***************
Sub Hilighton
T2 = 0
While T2 < 10
Incr T1
If Pind.3 = 0 Then : Return
End If
Waitms 100
Wend
Set Portb.3
End Sub
'*******выключаем фары**************
Sub Hilightoff
T1 = 0
While T1 < 1200
Incr T1
If Pind.3 = 0 Then : Return
End If
Waitms 100
Wend
Reset Portb.3
End Sub
'********всё выключаем**************
Sub Alloff
Reset Portb.3
T1 = 0
While T1 < 100
Incr T1
If Pind.3 = 1 Then : Return
End If
Waitms 100
Wend
Reset Portb.2
End Sub
Не получается никак. Не идёт на отмеченое красным и всё тут. Мозги уже закипают. Подскажите пожалуйста, где я косячу? Я понимаю что проблема кроется в чём то простом, но понять не могу.
Извините если что не так.
- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
А на чём неидёт?
Я вставил перед основным циклом Speedflag = 1 и всё в симуляторе пошло.
И не проще ли просто написать
без декларирования подпрограмм?
Я вставил перед основным циклом Speedflag = 1 и всё в симуляторе пошло.
И не проще ли просто написать
Код: Выделить всё
If Speedflag = 1 Then
Gosub Hilightonбез декларирования подпрограмм?
Все делают ошибки, только мудрецы - новые, а дураки - старые.
-
spy-tuning
- Первый раз сказал Мяу!
- Сообщения: 23
- Зарегистрирован: Пн окт 18, 2010 17:33:15
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
без декларирования ругается что не декларированы.
Re: BASCOM AVR в вопросах и ответах
Замени Call на Gosub как предложил kip96spy-tuning писал(а):без декларирования ругается что не декларированы.
-
spy-tuning
- Первый раз сказал Мяу!
- Сообщения: 23
- Зарегистрирован: Пн окт 18, 2010 17:33:15
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Заменил, на реальном железе не работает, сменил portb.3 на portb.4 думал может МК дохлый, не загорается светодиод и всё тут.
-
spy-tuning
- Первый раз сказал Мяу!
- Сообщения: 23
- Зарегистрирован: Пн окт 18, 2010 17:33:15
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Мурик писал(а):Замени Call на Gosub как предложил kip96spy-tuning писал(а):без декларирования ругается что не декларированы.
Заменил, Баском говорит что ошибка, не задекларированы мол...