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

Обсуждаем контроллеры компании Atmel.
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

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

Сообщение aleksandr-zh »

radio-kot писал(а):Похоже BASCOM AVR очень популярная программа если судить по результатам поиска который гугл выдает

да вы чо? ммм.. не знали...

УРА! зато у нас нет от вас очередного мега-курса bacom123 типа avr123 и stm32 123 :)

если загрузите лицензионку, то там русский есть - я переводил и Марку отправлял. И часть справки перевёл на русский. http://narod.ru/disk/39944303001.17a4c66db6e814a65357d11dd1d07749/BASCAVR.chm.html

Но всё времени нет завершить, да и Марк не верит, что русские (CCCP) покупать будет, и не особо порится по поводу продвижения продукта у нас
lordswars
Открыл глаза
Сообщения: 47
Зарегистрирован: Пн мар 19, 2012 09:22:04

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

Сообщение lordswars »

Доброго времени суток!
сидел колупал AT90USB162 на предмет HARDWARE USB на Bascom. нашел сайтик http://www.weigu.lu с него качнул проект Kleine USB-Bibliothek mit dem Teensy 2.0 и начал разбирать... при небольшой модификации вроде заработало....

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

Usb_init_device:
    Usbcon.usbe = 1                                         'включаем УСБ
    Usbcon.frzclk = 0                                       'FRZCLK=0 внутренняя синхро выкл

    Usbcon.frzclk = 1                                       'FRZCLK=1 внутренняя синхро вкл

    Pllcsr.pllp0 = 0                                        '0- давайс, 1- хост
    Pllcsr.plle = 1                                         'установка внутреннего умножителя частоты PLL (Enable-Bit = 1)
    Do
    Loop Until Pllcsr.plock = 1                             'ждём активации PLL (около 100ms)
    Usbcon.frzclk = 0                                       'FRZCLK=0 внутренняя синхро выкл 

    Udcon = &H00                                            'Attach: verbinde Device
    Udien = &H08                                            'erlaube End of Reset Interrupt (EORSTE=1)
    Enable Interrupts
Return


Usb_init_device: заменить на приведённый выше код
Usb_ep2_readadc: полностью заремить :) ибо нет в этом проце ADC

определяется как девайс и мигает правда пока не тем что нужно но я грешу не только на программу для контроллера а скорее на ПО которое обслуживает данный девайс под виндой. штатная прога для винды на VB5 написана пока не разбирался ...
в наличии плата MAT90USB162 на ней и пробовал.....вот как то так.....
krasser
Родился
Сообщения: 6
Зарегистрирован: Пт янв 20, 2012 08:30:20

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

Сообщение krasser »

С новым годом господа!
Подскажите как соединить этот код с семисегментником.
Заранее благодарен.

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

Sub Tahometer
Config Timer1 = Timer , Prescale = 64 , Capture Edge = Rising

Dim Wtime As Byte
Dim Rpm As Single
Dim Rpm2 As Integer

On Capture1 Captmr
Enable Interrupts
Enable Capture1

Wtime = 100

Do
  Waitms Wtime
  Locate 1 , 1
  Rpm = Capture1 * 0.008
  Rpm = Rpm / 0.008
  Rpm = 60 / Rpm
  Rpm2 = Rpm / 0.000008
 Lcd "RPM: " ; Rpm2 ; "     "
Loop

Captmr:
  Timer1 = 0
Return
End Sub


А вот то что я пытался сделать

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

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

Config Portd = Output
Config Portb = Output
'Config Portc = Output
'Config Portb.7 = Input

A Alias Portd.5
B Alias Portd.0
C Alias Portd.3
D Alias Portb.1
E Alias Portd.7
F Alias Portd.6
G Alias Portd.4
Dp Alias Portd.2                                            'Тут вписываем порты к которым подключены сегменты индикатора
Dig1 Alias Portb.2
Dig2 Alias Portd.1


Dim W As Byte , Z As Byte , Y As Byte , I As Byte , Chislo(8) As Long , Viv_peremennaya As Long , Temp_print As Long       ' задаем переменные
Config Timer0 = Timer , Prescale = 8 : On Timer0 Pulse :    ' конфигурируем таймер 0 и назначаем подпрограмму которая выполняется при переполнении таймера
Enable Interrupts : Enable Timer0                           ' разрешаем прерывания и таймер 0

'Sub Tahometer
Config Timer1 = Timer , Prescale = 64 , Capture Edge = Rising       'Stop Timer1       'задание начальных усло
'Stop Timer1
Timer1 = 0
Compare1a = 2

Dim Wtime As Byte
Dim Rpm As Single
Dim Rpm2 As Integer

On Capture1 Captmr                                          'Captmr
Enable Interrupts
Enable Capture1

Wtime = 100

Do
  Waitms Wtime
  'Locate 1 , 1
  'If Pinb.7 = 1 Then
  'Rpm = Locate 7
  Rpm = Capture1 * 0.008
  Rpm = Rpm / 0.008
  Rpm = 60 / Rpm
  Rpm2 = Rpm / 0.000008
  Incr Temp_print                                           ' переменная, которая будет отображатся на семисегментнике.
  'Waitms 100
  'End If
Loop

Captmr:
'Stop Timer1
  Timer1 = 0
Return
End                                                         'Sub

Pulse:
Stop Timer0
Temp_print = Rpm2
For I = 1 To 4                                              ' цикл в котором разбивается переменная на отдельные числа от 0 до 9
Chislo(i) = Temp_print Mod 10                               ' заносим в масив последнюю цифру от числа Temp_print(12345678 mod 10 = 8)
Temp_print = Temp_print / 10                                ' отсекаем последнюю цифру от числа Temp_print (12345678/10=1234567)
Next                                                        ' останавливаем таймер 0
Set Dig1 : Set Dig2
Incr W : If W > 4 Then W = 1                                ' выбираем какую цифру сейчас включать
Y = 0
Gosub Look : A = Z                                          ' переходим к подпрограмме Look, которая определяет нужно ли сейчас загорется сегменту А
Gosub Look : B = Z
Gosub Look : C = Z
Gosub Look : D = Z
Gosub Look : E = Z
Gosub Look : F = Z
Gosub Look : G = Z

Select Case W                                               ' включаем цифру которую выбрали (w). Подаем минус на общий провод конкретной цифры
 Case 1 : Reset Dig1
 Case 2 : Reset Dig2
End Select
Start Timer0                                                ' запускаем таймер0
Return                                                      ' возвращаемся к выполнению основной программы


Look:                                                       ' подпрограмма которая определяет нужно ли сейчас гореть сегменту, который вызвал эту подпрограмму
Z = Chislo(w) * 7 : Z = Y + Z                               ' определяем порядковый номер числа из таблици DATA. W - это цифра которую будем выводить 0..1..2..3.......9, Y это номер сегмента (A=0 B=1 C=2...G=7)
Z = Lookup(z , Cifri)                                       ' выбираем из таблици включить или выключить нужный сегмент
Incr Y                                                      'Y это номер сегмента (A=0 B=1 C=2...)
Return                                                      'возвращаемся на место откуда сюда прислали

Cifri:
Data 1 , 1 , 1 , 1 , 1 , 1 , 0                              '0
Data 0 , 1 , 1 , 0 , 0 , 0 , 0                              '1
Data 1 , 1 , 0 , 1 , 1 , 0 , 1                              '2
Data 1 , 1 , 1 , 1 , 0 , 0 , 1                              '3
Data 0 , 1 , 1 , 0 , 0 , 1 , 1                              '4
Data 1 , 0 , 1 , 1 , 0 , 1 , 1                              '5
Data 1 , 0 , 1 , 1 , 1 , 1 , 1                              '6
Data 1 , 1 , 1 , 0 , 0 , 0 , 0                              '7
Data 1 , 1 , 1 , 1 , 1 , 1 , 1                              '8
Data 1 , 1 , 1 , 1 , 0 , 1 , 1                              '9
vanyap1
Электрический кот
Сообщения: 1048
Зарегистрирован: Пт июл 30, 2010 11:49:03
Откуда: Украина
Контактная информация:

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

Сообщение vanyap1 »

Подскажите пожалуйста - как сложить три переменные типа байт в одно 24-битное число.
Знаю что два байта можно сложить так - C = Makeint(A, B).
Marchello
Встал на лапы
Сообщения: 114
Зарегистрирован: Чт ноя 24, 2011 12:39:13

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

Сообщение Marchello »

Уважаемые Форумчане, очень прошу помощи! Мне нужно реализовать одну задумку, но как то не выходит каменный цветок в силу нехватки знаний и опыта программирования! Обращаюсь к вам так как Bascom мне вроде бы боле менее близок и понятен (в универе изучал Basic). Задумка у меня следующая:
Значит что мы имеем!
1. Все комплектующие для сборки схемы уже закуплены.
Вот страничка с сайта где была подчеркнута идея - http://www.aquaforum.ua/showthread.php?t=121870&page=10
2. Четыре потребителя. На схеме они указанны как pump (1-4). здесь автор схемы использовал микронасосы Ulka (используются в кофемашинках для дозирования кофе - 220в) и программа соответственно была написана под работу этих насосов! Я же планирую заменить потребителей!
Вместо pump1 будет подключаться шаговый двигатель 12в от принтера с необходимым режимом работы 20 оборотов по часовой, реверс - 20 оборотов в против, до исходного положения. Время включения шагового двигателя один раз в день в 8.00 в течении всей недели (желательно чтобы время включения можно было корректировать: летом в 7.00 зимой в 8.00).
Вместо pump2 будет подключено освещение аквариума - две МГ лампы по 150 Вт (вкл. 11.00 - выкл. 14.00; вкл. 16.00 - выкл. 21.00) ежедневно на протяжении всей недели. (на сегодняшний день у меня с этим справляется электронный недельный таймер). желательно чтобы время включения и отключения освещения тоже можно было регулировать.
Вместо pump3-4 будут раздельно подключаться потребители на 220в (фильтр воды, электроклапан). Фильтр воды вкл. 7.00 выкл. 23.00, электроклапан вкл. за час до включения освещения и за час до выключения.

Как я уже успел разобраться управление настройками времени включения и отключения потребителей можно будет задавать кнопками предусмотренными в схемке, а вот LCD я бы заменил на 16х4, так как в перспективе планируется к схемке добавить функционал термометра и PH контроллера, показания которых должны будут отображаться на LCD! Вот такая у меня не легкая задача! Надеюсь здесь найдутся энтузиасты которые расскажут с чего мне начать писать программу!
Вложения
дозатор_схема.jpg
(254.9 КБ) 615 скачиваний
vik_211
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт ноя 01, 2012 20:51:23
Откуда: Украина, Черкассы

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

Сообщение vik_211 »

Рабол ли кто нибудь с дисплеем RDX0154, драйвер - UC1601s ?
Аватара пользователя
selco
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пн июл 25, 2011 14:24:34

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

Сообщение selco »

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

'**********[Псевдокоманды управления]**************

$regfile = "m8def.dat"   ' тип МК
$crystal = 1000000       ' выбор кристала

'**********[Инициализация прерываний]**************

Config Timer1 = Timer , Prescale = 64 , Compare A = Toggle , Clear Timer = 1
COMPARE1A = &H3D09

'**********[Начало основной программы]**************

Do      ' пустой цикл

Loop



Подскажите пожалуйста,как сделать чтоб на выходах были два противофазных сигнала?
Спасибо.
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

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

Сообщение amv2000 »

selco писал(а):как сделать чтоб на выходах были два противофазных сигнала?

Это Вы случайно не динамик хотите прикрутить?
Аватара пользователя
selco
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пн июл 25, 2011 14:24:34

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

Сообщение selco »

amv2000 писал(а):
selco писал(а):как сделать чтоб на выходах были два противофазных сигнала?

Это Вы случайно не динамик хотите прикрутить?

Нет, нужно чтоб на двух выводах был противофазный сигнал. он будет раскачивать 2-х тактный усилок.
Аватара пользователя
selco
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пн июл 25, 2011 14:24:34

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

Сообщение selco »

Неужели незнает никто?
Аватара пользователя
dimon-790
Мучитель микросхем
Сообщения: 442
Зарегистрирован: Пт авг 29, 2008 09:22:37
Контактная информация:

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

Сообщение dimon-790 »

сформулируй нормально вопрос и возможно ктонить поможет ...
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Аватара пользователя
selco
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пн июл 25, 2011 14:24:34

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

Сообщение selco »

Этот код выдаёт частоту на PORTB.1 а мне надо чтобы и на PORTB.2 выдавал ,но в противофазе. Тоесть PORTB.1=1 а PORTB.2=0.
Аватара пользователя
Adagumer
Поставщик валерьянки для Кота
Сообщения: 2283
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

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

Сообщение Adagumer »

Может ещё нужно добавить задержку между активациями фаз, дабы избежать сквозных токов?
Аватара пользователя
dimon-790
Мучитель микросхем
Сообщения: 442
Зарегистрирован: Пт авг 29, 2008 09:22:37
Контактная информация:

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

Сообщение dimon-790 »

Знал-бы ты , через что мне пришлось пройти :facepalm: , чтоб эти пару строк кода тебе написать...ну да ладно , добрый я сегодня чёто...

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

$regfile = "m8def.dat"   ' тип МК
$crystal = 1000000       ' выбор кристала

'**********[Инициализация прерываний]**************

Config Timer1 = Timer , Prescale = 1 , Clear Timer = 0 , Compare A = Toggle , Compare B = Toggle
Compare1a = Not Compare1b
'**********[Начало основной программы]**************

Do      ' пустой цикл

Loop


калибровки делителя пришлось изменить , потому как такие длинные тайминги , осликом тяжко было отслеживать.
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Аватара пользователя
selco
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пн июл 25, 2011 14:24:34

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

Сообщение selco »

dimon-790 писал(а):Знал-бы ты , через что мне пришлось пройти :facepalm: , чтоб эти пару строк кода тебе написать...ну да ладно , добрый я сегодня чёто...

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

$regfile = "m8def.dat"   ' тип МК
$crystal = 1000000       ' выбор кристала

'**********[Инициализация прерываний]**************

Config Timer1 = Timer , Prescale = 1 , Clear Timer = 0 , Compare A = Toggle , Compare B = Toggle
Compare1a = Not Compare1b
'**********[Начало основной программы]**************

Do      ' пустой цикл

Loop


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

СПАСИБО! Всех с наступающим новым годом!
vanyap1
Электрический кот
Сообщения: 1048
Зарегистрирован: Пт июл 30, 2010 11:49:03
Откуда: Украина
Контактная информация:

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

Сообщение vanyap1 »

Столкнулся вот с проблемой, при компиляции вылетает ошибка, причем даже при повторной компиляции старых проектов, которые давно работают и имеют ЖК дисплей.
Переустановка баскома ничего не исправила.

Изображение
Аватара пользователя
Moto_v3x
Потрогал лапой паяльник
Сообщения: 307
Зарегистрирован: Ср мар 31, 2010 11:45:58
Откуда: Славянск

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

Сообщение Moto_v3x »

vanyap1
У меня тоже были проблемы с новым баскомом только компилировалось без проблем, но на дисплей выводило все кроме текста и курсор управлялся. Поскольку проекты были простые переделал в кодевижене, на него с баскома легко переходить.
vanyap1
Электрический кот
Сообщения: 1048
Зарегистрирован: Пт июл 30, 2010 11:49:03
Откуда: Украина
Контактная информация:

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

Сообщение vanyap1 »

Поставил баском 2.0.7 (был - 2.0.5), теперь все компилируется без проблем, но экран не работает. МК зависает.
Проверил с этим кодом (светодиод с этим кодом не мигает, если убрать все что касается ЖКИ то мигает)-

Спойлер$regfile = "m64def.dat"
$crystal = 11059200
$hwstack = 64
$swstack = 64
$framesize = 32

Config Portd.7 = Output
Led1 Alias Portd.7
Toggle Led1
Waitms 500
Toggle Led1
Waitms 500
Toggle Led1
Waitms 500
Toggle Led1
waitms 500



Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.6 , Db5 = Porta.5 , Db6 = Porta.4 , Db7 = Porta.3 , Rs = Porta.2 , E = Porta.0 ' , E2 = Porta.1


Cursor Off
Cls
Locate 1 , 2
Lcd "qwerty123"
vanyap1
Электрический кот
Сообщения: 1048
Зарегистрирован: Пт июл 30, 2010 11:49:03
Откуда: Украина
Контактная информация:

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

Сообщение vanyap1 »

Поставил снова баском 2.0.5 и все скомпилировалось.
А мк не желал работать из за запрограмированого фуза совместимости - m103c.
Аватара пользователя
htscooter
Вымогатель припоя
Сообщения: 566
Зарегистрирован: Вт ноя 18, 2008 20:33:17
Откуда: г.Луганск

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

Сообщение htscooter »

А мк не желал работать из за запрограмированого фуза совместимости - m103c

То есть с 2.0.7 версией тоже все работает?

Я у себя тоже нашел причину некорректной работы прошивки (загоралась лишняя точка на семисегментниках, код на предыдущей странице)
Было:

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

If Segment > 8 Then Segment = 1

Исправил на:

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

If Segment > 7 Then Segment = 0
Хорошо и надежно работающая система безусловно красива
Ответить

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