я не волшебник ,я просто учусь
|
|
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мс заменить индикацией предидущего измерения),просто нужно мне понять раз и навсегда как это делается.Файл прикреплю.Выручайте!Помогите стать волшебником :))
|
|
| |
Петр | Дата: Вторник, 26.11.2013, 23:03 | Сообщение # 63 |
Группа: Проверенные
Сообщений: 47
Статус: Offline
| Есть у меня проект такого термометра, правда для 8 меги.
|
|
| |
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
| Привет ребята давненько не писал вопрос есть не подскажите почему зависает на первом прерывании
|
|
| |
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. При этом докладывает, что зашивает правильно и ошибок не обнаружено... Микросхема определяется верно, буфер ИС прочитывается... Может есть какие-то особенности фьюзов? Сначала предположил дефектную плату (пробой статикой)... Но сейчас пробую уже вторую плату (не вынимая из антистатического пакета)- эффекта нет...
Сообщение отредактировал Багирыч - Понедельник, 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. Всё заработало так как следует!!!
|
|
| |
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
Подскажите пожалуйста: как делать такого толка подпрограммы в отдельных файлах с сылками, чтобы они не орали ошибками?
|
|
| |