[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум » форумы » Общие вопросы по Bascom-AVR » я не волшебник ,я просто учусь (Тонкости работы в Bascom -AVR или хочу все знать)
я не волшебник ,я просто учусь
niko-layДата: Пятница, 27.07.2012, 13:02 | Сообщение # 51
Группа: Проверенные
Сообщений: 19

Статус: Offline
Править существующую библиотеку не получается, чтобы для вывода картинки проц тащил данные не из массива с данными а из буфера юарта (ага, я КЭП ))) ?

 
trimДата: Пятница, 27.07.2012, 17:46 | Сообщение # 52
Группа: Проверенные
Сообщений: 105

Статус: Offline
именно так поэтому нужно как то отвязаться от библиотеки но приэтом выводить любые символы наверное так

 
trimДата: Вторник, 18.09.2012, 12:02 | Сообщение # 53
Группа: Проверенные
Сообщений: 105

Статус: Offline
привет привет давненько небыл как дела .......
вопрос такой как запустить несколько ацп на меге 16
и пару шим


 
shermanДата: Вторник, 18.09.2012, 22:06 | Сообщение # 54
Группа: Проверенные
Сообщений: 55

Статус: Offline
Привет!
С АЦП просто опрашиваешь нужные каналы по очереди командой GetADC(x) х-номер канала
с шим тоже все просто, описано тут http://avrproject.ru/publ/pwm_bascom/1-1-0-37


 
trimДата: Вторник, 18.09.2012, 23:48 | Сообщение # 55
Группа: Проверенные
Сообщений: 105

Статус: Offline
да это я изучал тут нужда встала нужно два резюка переменных и два мотора от шим сконфегурировать вот пока токо догадки как

 
trimДата: Вторник, 18.09.2012, 23:50 | Сообщение # 56
Группа: Проверенные
Сообщений: 105

Статус: Offline
все, просто летом не занимался выветрелось

 
trimДата: Вторник, 18.09.2012, 23:50 | Сообщение # 57
Группа: Проверенные
Сообщений: 105

Статус: Offline
$regfile = "m16def.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32
$baud = 19200
$prog &HFF , &HC3 , &HD9 , &H00 ' generated. Take care that the chip supports all fuse bytes. es.

Config Portb.4 = Output
Config Portd.7 = Output
Config Adc = Single , Prescaler = 8 , Reference = Avcc
Config Timer1 = Pwm , Pwm = 9 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up , Prescale = 256
Config Servos = 1 , Servo1 = Portb.4 , Reload = 11

Enable Interrupts
Dim A As Word
Dim B As Word
Dim N As Word
Servo(1) = 0
Wait 1

Start Adc
A = Getadc(1)
B = Getadc(2)
Stop Adc
N = A / 3

Servo(1) = N
Compare1b = A
Compare1a = B
Return


 
trimДата: Вторник, 19.03.2013, 18:19 | Сообщение # 58
Группа: Проверенные
Сообщений: 105

Статус: Offline
Привет народ , как Жизнь вопрос возник, статейку прочитал одну ,а нам слабо ???
http://www.getchip.net/posts/087-attiny2313-sd-card-talking-device/ 


 
mpxДата: Воскресенье, 31.03.2013, 14:24 | Сообщение # 59
Группа: Пользователи
Сообщений: 4

Статус: Offline
Здравствуйте. Хотел спросить, на семи сегментный индикатор вывожу температуру с датчика на ds18b20. Но периодически на индикаторе появляются нули...........
$regfile = "m8def.dat"
$crystal = 8000000
'*****************************************[Идикатор с общим анодом]****************************************'
'*****************************************[Определение переменных и констант]************************************

Dim Count As Byte                                           ' переменная для индикации
Dim Number(3) As Byte                                       ' значения трех разрядов

Dim W As Integer
Dim M1 As Integer
Dim M2 As Integer
Dim M3 As Integer

' *** Заводим переменные

Dim Byte0 As Byte
Dim Byte1 As Byte
Dim T As Byte
Dim T1 As Byte
Dim T2 As Byte

'***********************************************[Инициализация портов]*******************************************

Config 1wire = Portc.1                                      'определяем порт для подключения датчика

Config Portc.2 = Output                                     ' светодиод для проверки температуры "+" или "-"

Config Portc.0 = Output                                     ' светодиод для проверки подключения датчика

Config Portd = Output                                       ' порт сегментов индикатора

Config Portb.3 = Output                                     ' первый разряд индикатора
Config Portb.4 = Output                                     ' второй разряд индикатора
Config Portb.5 = Output                                     ' третий разряд индикатора

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

Config Timer0 = Timer , Prescale = 64                       ' конфигурируем таймер индикации (~500 Гц)
On Timer0 Refresh                                           ' метка на прерывание индикации

'********************************************[Присвоение уникальных имен]****************************************
Leg Alias Portc.2
Led Alias Portc.0                                           ' присваиваем имя светодиоду
Dig1 Alias Portb.3 : Dig2 Alias Portb.4 : Dig3 Alias Portb.5       ' и разрядам индикатора

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

Enable Interrupts                                           ' разрешаем все прерывания
Enable Timer0                                               ' и для индикации в частности
Start Timer0 
Do                                                          ' крутимся здесь, ожидая прерывание
1wreset
If Err = 1 Then                                             'если при опросе небыло ответа ставим флаг ошибки
Toggle Led                                                  ' мигаем светодиодом
Wait 1
Else                                                     ' иначе, если ошибки не было, продолжаем опрос датчика

1wwrite &HCC                                                ' Выдаем команду чтения ПЗУ
1wwrite &H44                                                ' Запуск измерения

Waitms 750                                                  ' Ждем окончания преобразования

1wreset
1wwrite &HCC
1wwrite &HBE                                                ' Команда чтения ОЗУ датчика

Byte0 = 1wread()                                            ' Читаем нулевой байт

Byte1 = 1wread()                                            ' Читаем первый байт

If Byte1 > 248 Then                                         ' Проверка на отрицательность температуры
Byte0 = &HFF - Byte0
Byte1 = &HFF - Byte1
Leg = 0                                                     'если "минусовая" погода то не горит светодиод

Else
Leg = 1                                                     'если "плюсовая" погода то горит светодиод
End If

T1 = Byte0 / 16                                             ' Сдвигаем нулевой байт вправо на 4 бита (2*2*2*2=16)
T2 = Byte1 * 16                                             ' Сдвигаем первый байт влево на 4 бита (2*2*2*2=16)
T = T1 + T2

M1 = T
M2 = M1
M3 = M1

M1 = M1 / 100                                               ' M1 = w/100
Number(1) = Abs(m1)                                         ' N1 = Abs (m1)
M2 = M2 Mod 100
M2 = M2 / 10
Number(2) = Abs(m2)
M3 = M3 Mod 10
Number(3) = Abs(m3)
End If
Wait 1                                                      ' ждем 1 секундy

Loop

'***********************************[Процедуры обработки подпрограмм и прерываний]*******************************

Refresh:                                                    ' прерывание таймера Т0 (индикация)

Set Dig1 : Set Dig2 : Set Dig3                            ' гасим индикатор

Incr Count : If Count > 3 Then Count = 1                    ' выбираем разряд для загрузки

Portd = Lookup(number(count) , Digits)                      ' закидываем в порт код цифры

Select Case Count                                           ' и включаем соответствующий разряд индикатора
Case 1 : Reset Dig1
Case 2 : Reset Dig2
Case 3 : Reset Dig3
End Select

Return                                                      ' выход из обработчика прерывания

Digits:                                                     ' цифры

Data &B11000000 , &B11111001 , &B10100100 , &B10110000 , &B10011001       ' 0 1 2 3 4
Data &B10010010 , &B10000010 , &B11111000 , &B10000000 , &B10010000       ' 5 6 7 8 9




Сообщение отредактировал mpx - Воскресенье, 31.03.2013, 14:52
 
kip96Дата: Вторник, 02.04.2013, 07:19 | Сообщение # 60
Группа: Свой человек
Сообщений: 170

Статус: Offline
читаем о 1wire, и на время измерения температуры останавливаем таймер, ибо он мешает.

 
mpxДата: Четверг, 04.04.2013, 22:26 | Сообщение # 61
Группа: Пользователи
Сообщений: 4

Статус: Offline
Я уже разобрался, код "причешу" и выложу........

 
АнтошинДата: Вторник, 26.11.2013, 19:47 | Сообщение # 62
Группа: Пользователи
Сообщений: 5

Статус: Offline
Здравствуйте люди!Хочу попросить Вашей помощи?Не завалялся ли у кого исходник обычного термометра с точностью до 0.1
с выводом на 7сегм.индикатор? к сожалению материал с нашего Уважаемого сайта я понял смутно.Вожусь уже неделю,свою
мегу16 уже замучил,работать то работает,но не так как бы хотелось (на период измерения 750-850мс индикатор гаснет,затем
отображает до переполнения таймера,затем цикл повторяется,ни как не получается вот эти 750мс заменить индикацией 
предидущего измерения),просто нужно мне понять раз и навсегда как это делается.Файл прикреплю.Выручайте!Помогите стать 
волшебником :))
Прикрепления: _led.2.bas (4.5 Kb)


 
ПетрДата: Вторник, 26.11.2013, 23:03 | Сообщение # 63
Группа: Проверенные
Сообщений: 47

Статус: Offline
Есть у меня проект такого термометра, правда для 8 меги.
Прикрепления: Termo_Led.rar (33.2 Kb)


 
kip96Дата: Четверг, 28.11.2013, 15:03 | Сообщение # 64
Группа: Свой человек
Сообщений: 170

Статус: Offline
Всё правильно, что бы измерять по шине 1wie нужно отключать таймер, что бы он не мешал. Но зачем держать выключенный таймер на 750-850мс?. Самое простое это  

 
stop timer1
1wreset                    ' Сброс датчика.
1wwrite &HCC                    ' Команда "Skip ROM".
1wwrite &H44                    ' Команда "Convert  T".   
 start timer1
Waitms 800   
 stop timer1
1wreset                    ' Сброс датчика.
1wwrite &HCC                    ' Команда "Skip ROM"
1wwrite &HBE
 start timer1




Сообщение отредактировал kip96 - Четверг, 28.11.2013, 15:12
 
АнтошинДата: Пятница, 29.11.2013, 19:17 | Сообщение # 65
Группа: Пользователи
Сообщений: 5

Статус: Offline
Спасибо!я тут тоже поразмыслил:задействовал Timer0/1024 на включение измерения,Timer1/256 на включение индикации
в момент ожидания датчика, не рационально конечно два таймера в таких целях,но все равно по лучше стало (хотя и чуточку
помаргивает) .В связи с чем у меня появился вопрос:как расчитать количество тиков таймера в единицу времени и время до
до его переполнения? Не могу сообразить.


 
kip96Дата: Пятница, 29.11.2013, 22:32 | Сообщение # 66
Группа: Свой человек
Сообщений: 170

Статус: Offline
Вы про это?

Цитата
Здесь Timer0 настроен на счет тактовых импульсов. Он считает тактовые импульсы с выхода делителя с настраиваемым коэффициентом 1, 8, 64, 256 или 1024. Таймер считает время, в течение которого он изменяется с 0 до 255. Пусть в нашем проекте стоит кварц 4МГц и делитель на 1024. Тогда таймер будет увеличивать значение каждые (коэффициент/тактовая частота, 1024/4.000.000)=0,256 миллисекунд. Тогда переполняться он будет каждые 255*0,256=65 миллисекунд. Time1 аналогичен Timer0, но он 16-битный, он считает до 65535 до переполнения. Таймеры начинают отсчет с момента конфигурации.
http://decada.org.ru/project/lessons/bascom_avr/10


 
АнтошинДата: Пятница, 29.11.2013, 22:43 | Сообщение # 67
Группа: Пользователи
Сообщений: 5

Статус: Offline
Да-да про это!А правда,что таймеры после переполнения начинают отсчет не с 0?

 
trimДата: Среда, 25.12.2013, 13:28 | Сообщение # 68
Группа: Проверенные
Сообщений: 105

Статус: Offline
Привет ребята давненько не писал вопрос есть не подскажите почему зависает на первом прерывании
Прикрепления: 9509064.txt (5.8 Kb)


 
trimДата: Среда, 08.01.2014, 18:56 | Сообщение # 69
Группа: Проверенные
Сообщений: 105

Статус: Offline
ВСЕМ ПРивет ,Вопрос возник как можно смоделировать 3х фазную шим со смещением ?,или по средствам ВАМа ,тока я так и не понял как он работает

 
trimДата: Суббота, 18.01.2014, 19:21 | Сообщение # 70
Группа: Проверенные
Сообщений: 105

Статус: Offline
ПРИВЕТ  РЕБЯТ ,кто в АСМЕ шарит ? есть прога интересная под схему на мега 8 там реализовано управление двигателем от сидюка кто не знает он трех фазный и его можно использовать в авиамоделях))))) http://shop.aviamodelka.ru/article_info.php?articles_id=68

 
БагирычДата: Суббота, 04.11.2017, 23:11 | Сообщение # 71
Группа: Пользователи
Сообщений: 3

Статус: Offline
Здравствуйте!
Впервые использую ARDUINO MEGA 2560, столкнулся с проблемой...
Тест прекрасно работает в эмуляторе и в железе на ARDUINO NANO 328.
Тест работает в эмуляторе на ARDUINO MEGA 2560.
Тест не работает в железе ARDUINO MEGA 2560.
На выводе D13 напряжение не имеет логического уровня. Напряжение "плавает" в пределах 1,4-2,5V. Генерирование импульсов не происходит. Светодиод D13 не горит...
Создаётся такое впечатление, что вывод D13 находится в состоянии "вход-Z".

$regfile = "m2560def.dat"
$Crystal=16000000
$hwstack=40
$swstack=16
$framesize=32
'$regfile = "m328pdef.dat"
'$crystal = 16000000
'$hwstack = 40
'$swstack = 16
'$framesize = 32
'$sim
Config Portb.7 = Output
'Config Portb.5 = Output
Do
Set Portb.7
'Set PORTB.5
Waitms 500
Reset Portb.7
'RESet PORTB.5
Waitms 500
Loop
End

По советам:
пробовал програмировать не кнопкой "автомат", а ручным поочерёдным нажатием кнопок
пробовал перед записью кристалла стирать все файлы кроме *.bas и генерировать их вновь.
Ни чего не помогает...
Подскажите, в чём ошибка?




Сообщение отредактировал Багирыч - Воскресенье, 05.11.2017, 19:47
 
exersizzeДата: Понедельник, 06.11.2017, 01:06 | Сообщение # 72
Группа: Администраторы
Сообщений: 723

Статус: Offline
Багирыч, судя по всему микроконтроллер не прошивается. Какой программатор используется и через что пытаешься шить?

 
БагирычДата: Понедельник, 06.11.2017, 10:22 | Сообщение # 73
Группа: Пользователи
Сообщений: 3

Статус: Offline
Программатор вот такой :

Определяется как USBASP.
Прошиваю непосредственно из BacomAVR.
Всё нормально срабатывает с NANO и совершено не желает работать с MЕGA.
При этом докладывает, что зашивает правильно и ошибок не обнаружено... Микросхема определяется верно, буфер ИС прочитывается...
Может есть какие-то особенности фьюзов?
Сначала предположил дефектную плату (пробой статикой)... Но сейчас пробую уже вторую плату (не вынимая из антистатического пакета)- эффекта нет...
Прикрепления: 0316394.jpg (58.3 Kb)




Сообщение отредактировал Багирыч - Понедельник, 06.11.2017, 10:28
 
bulatДата: Вторник, 07.11.2017, 19:53 | Сообщение # 74
Группа: Проверенные
Сообщений: 110

Статус: Offline
У меня такой вопрос-есть (допустим) переменные а=100 и в=200,существует ли команда чтоб поменять а и в,то есть чтоб а=200 и в=100?
меня интересует именно команда


 
bulatДата: Вторник, 07.11.2017, 19:56 | Сообщение # 75
Группа: Проверенные
Сообщений: 110

Статус: Offline
удалил



Сообщение отредактировал bulat - Вторник, 07.11.2017, 19:59
 
БагирычДата: Среда, 08.11.2017, 22:17 | Сообщение # 76
Группа: Пользователи
Сообщений: 3

Статус: Offline
Проблема с ARDUINO MEGA 2560 решена!
Оказалось, что проблема кроется во фьюзах...
Везде пишут, что (по умолчанию) ARDUINO MEGA 2560 приходит в конфигурации старт с адреса $0000. Мне достались два экземпляра зашитые иначе. 
Fusebit High M -> 0:Reset vector is bootloader
Это означает, что после прошивки, ресета, или включения питания пуск программы произойдёт с адреса определяемого загрузчиком.
А мне нужно было что-бы пуск происходил минуя загрузчик, по старинке... с нулевого адреса $0000.
Поэтому переключил этот бит в положение "1"
Fusebit High M -> 1:Reset vector is $0000.
Всё заработало так как следует!!!  biggrin
Прикрепления: 9932127.doc (320.0 Kb)


 
HedgehogДата: Вторник, 21.11.2017, 22:44 | Сообщение # 77
Группа: Пользователи
Сообщений: 1

Статус: Offline
Есть идея сделать блоки для отдельных программ. Для этого решил попробовать написать программу-мигалку.

Это код основной программы:
'**************************************** 
 
$Regfile="m328pdef.dat"$Crystal=16000000$baud = 9600$hwstack=40$swstack=16$framesize=32 
'*************** 
dim lighton as  Bit
dim lightoff as  Bit
lighton = 1
lightoff=0
config  PORTB.4 = output
blinky alias portb.4
 
$include "blinkyled.bas"
do
gosub blinkyled
wait 1 
loop

end

Это код подпрограммы (В отдельном файле):

blinkyled:
blinky = lighton
wait 1
blinky = lightoff
return

Подскажите пожалуйста: как делать такого толка подпрограммы в отдельных файлах с сылками, чтобы они не орали ошибками?


 
Форум » форумы » Общие вопросы по Bascom-AVR » я не волшебник ,я просто учусь (Тонкости работы в Bascom -AVR или хочу все знать)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: