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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
radio-kot
Собутыльник Кота
Сообщения: 2584
Зарегистрирован: Вт сен 14, 2010 10:27:19

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

Сообщение radio-kot »

PROTEUS отлично симулирует проекты BASCOM ! Это удобно.
Будете проходить мимо- проходите!
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

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

Сообщение Igor_67 »

radio-kot писал(а):PROTEUS отлично симулирует проекты BASCOM ! Это удобно.

И что это было??? :dont_know: :dont_know: Мысли вслух? Тогда добро пожаловать в "МЯУ". А здесь, пожалуйста, по-существу... Итак, кто ответит на поставленный вопрос про отрицательные температуры? Почему вместо, допустим -16, кажет -15? На обработчики INT0, INT1 внимание не обращать-это еще не дописано... :write:
Цапу крутить надо!!! Ку или не ку?
Аватара пользователя
radio-kot
Собутыльник Кота
Сообщения: 2584
Зарегистрирован: Вт сен 14, 2010 10:27:19

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

Сообщение radio-kot »

Igor_67 писал(а):Почему вместо, допустим -16, кажет -15 ?
В PROTEUS ?
Будете проходить мимо- проходите!
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

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

Сообщение Igor_67 »

Да везде!!! И в Протосе и в железе... А чтобы почём зря не спрашивать, лучше бы запустили мой проект на симуляцию (в Протеусе) - сами все и увидите. к тому же весь проект-в архиве во вложении. А то так игра в глухой телефон получается...
Последний раз редактировалось Igor_67 Сб окт 30, 2010 09:44:08, всего редактировалось 1 раз.
Цапу крутить надо!!! Ку или не ку?
Аватара пользователя
radio-kot
Собутыльник Кота
Сообщения: 2584
Зарегистрирован: Вт сен 14, 2010 10:27:19

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

Сообщение radio-kot »

Приложите пожалуйста архив с прожектом BASCOM и PROTEUS - позырю.
Будете проходить мимо- проходите!
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

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

Сообщение Igor_67 »

radio-kot писал(а):Приложите пожалуйста архив с прожектом BASCOM и PROTEUS - позырю.

Вы что, издеваетесь? Посмотрите несколькими постами выше - там все есть... :shock:
Таки вот вам ссылка: http://radiokot.ru/forum/download/file.php?id=46439
Уточнение: Признак отрицательной температуры индицируется светодиодом (вместо знака "-").
Цапу крутить надо!!! Ку или не ку?
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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


Igor_67 писал(а):И что это было???
Это AVR123 пиарит протеус!
spy-tuning
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн окт 18, 2010 17:33:15
Контактная информация:

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

Сообщение spy-tuning »

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. Заранее спасибо!
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

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 прописаны по строгим правилам и всякого рода ухищрения здесь не проканывают! Извините за жаргон... :oops:
Цапу крутить надо!!! Ку или не ку?
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

Сообщение Секретный кот »

Согласен. Else: в данном случае воспринимается как метка.
Даже остановленные часы два раза в сутки показывают правильное время.
spy-tuning
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн окт 18, 2010 17:33:15
Контактная информация:

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

Сообщение spy-tuning »

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 прописаны по строгим правилам и всякого рода ухищрения здесь не проканывают! Извините за жаргон... :oops:

Спасибо, буду пробовать.
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

Igor_67, почему

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

Shift B0 , Right , 5
Shift B1 , Left , 3
, сдвигаем в право на 5, а в лево на 3?
И ещё -в протеусе с Мегой 8, чтобы нормально работала DS18B20, пришлось частоту до 1Мгц уменьшить, а с 2313 прерывания некорректно работали.
Может глюк Протеуса?
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

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

Сообщение Igor_67 »

Я пробовал, как в классическом варианте, сделать сдвиг влево на 4 бита и вправо на 4 бита. Так вообще лабуда получалась в показаниях. А тини2313 у меня работает на частоте до 4 МГц и не врет.
И про глюки протеуса: это происходит начиная с Протеуса версии 6.5, раньше я просто не пробовал симулировать подобные схемы при помощи протеуса. И если уж глюки, то это бы происходжило вообще при симуляции данной схемы. А это происходит, только если прошивка написана в Баскоме, а если на КодВижне, то все ОК!
Цапу крутить надо!!! Ку или не ку?
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

вот кусок моего кода- работает , проверенно в протеусе 7.4, и в железе(проверял приблизительно, детским ИК термометром)
Тут постами выше тоже достучаться не мог ни до кокго :dont_know: , так-что код есть как есть.Так-что если оптимизируете или подправите, пожалуйста, отпишитесь с коментами, хоть в личку. :beer:

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

'***************************    подпрограмма термометра  *******************
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 в вопросах и ответах

Сообщение spy-tuning »

$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


Не получается никак. Не идёт на отмеченое красным и всё тут. Мозги уже закипают. Подскажите пожалуйста, где я косячу? Я понимаю что проблема кроется в чём то простом, но понять не могу.
Извините если что не так.
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

А на чём неидёт?
Я вставил перед основным циклом Speedflag = 1 и всё в симуляторе пошло.
И не проще ли просто написать

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

If Speedflag = 1 Then
Gosub Hilighton

без декларирования подпрограмм?
Все делают ошибки, только мудрецы - новые, а дураки - старые.
spy-tuning
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн окт 18, 2010 17:33:15
Контактная информация:

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

Сообщение spy-tuning »

без декларирования ругается что не декларированы.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

spy-tuning писал(а):без декларирования ругается что не декларированы.
Замени Call на Gosub как предложил kip96
spy-tuning
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн окт 18, 2010 17:33:15
Контактная информация:

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

Сообщение spy-tuning »

Заменил, на реальном железе не работает, сменил portb.3 на portb.4 думал может МК дохлый, не загорается светодиод и всё тут.
spy-tuning
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн окт 18, 2010 17:33:15
Контактная информация:

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

Сообщение spy-tuning »

Мурик писал(а):
spy-tuning писал(а):без декларирования ругается что не декларированы.
Замени Call на Gosub как предложил kip96

Заменил, Баском говорит что ошибка, не задекларированы мол...
Ответить

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