BASCOM AVR в вопросах и ответах
Re: BASCOM AVR в вопросах и ответах
на таких частотах, лучше использовать измерение периода, хотя без текста программы можно много гадать
- bagira
- Потрогал лапой паяльник
- Сообщения: 362
- Зарегистрирован: Чт фев 07, 2008 23:00:46
- Откуда: Penza
Re: BASCOM AVR в вопросах и ответах
Доброго времени суток мастерам!
Впервые подключаю Arduino Mega 2560. Заливаю по ICSP китайским USB-программатором, прямо из БаскомАВР.
Пробный тест: светодиодик L не моргает (просто потушен), а вместо логических уровней 0/1, на выводах 2,4-2,5 Вольт.
Вот кусочек текста:
$regfile = "m2560def.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 16
$framesize = 32
Config Porth = Output
Config Portb = Output
Portb.7 = 1
Do
Porth = &B11110000
Wait 1
Porth = &B00001111
Wait 1
Portb.7 = 1
Wait 1
Portb.7 = 0
Wait 1
Loop
End
До этого пробовал МЕГУ 328 - всё происходило нормально (и шилось и моргало и уровни были 0/5В).
Буфер чтения и записи на первый взгляд совпадают, ошибок не выдаёт. В эмуляторе Баскома - работает правильно.
Напряжение питания не "просажено", внешних нагрузок от платы не питаю. Все порты свободные (просто тест на пустой плате).
В чём косяк? Ткните мордой...
Впервые подключаю Arduino Mega 2560. Заливаю по ICSP китайским USB-программатором, прямо из БаскомАВР.
Пробный тест: светодиодик L не моргает (просто потушен), а вместо логических уровней 0/1, на выводах 2,4-2,5 Вольт.
Вот кусочек текста:
$regfile = "m2560def.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 16
$framesize = 32
Config Porth = Output
Config Portb = Output
Portb.7 = 1
Do
Porth = &B11110000
Wait 1
Porth = &B00001111
Wait 1
Portb.7 = 1
Wait 1
Portb.7 = 0
Wait 1
Loop
End
До этого пробовал МЕГУ 328 - всё происходило нормально (и шилось и моргало и уровни были 0/5В).
Буфер чтения и записи на первый взгляд совпадают, ошибок не выдаёт. В эмуляторе Баскома - работает правильно.
Напряжение питания не "просажено", внешних нагрузок от платы не питаю. Все порты свободные (просто тест на пустой плате).
В чём косяк? Ткните мордой...
Разобрался!
Дело было в установке фьюзов...
Дело в том, что поставка кристалла осуществляется в конфигурации:
Fusebit High M -> 1: Reset vector is $ 0000 Тоесть, при подаче питания, сбросе, рестарте после прошивки, старт будет произведён с адреса лежащего в нулевой ячейке...
Производитель ардуины (как конечного устройства) снабжает свой прибор ПО, которое оговаривает загрузку кода через USB, а это подразумевает наличие внутри кристалла некой примитивной операционной системы в виде начального загрузчика. Поэтому производитель ставит этот фьюз в положение:
Fusebit High M -> 0: Reset vector is bootloader Тоесть при рестарте начальное управление получит загрузчик, и только он потом отдаст "бразды правления" самой программе.
А так как я прошиваю кристалл программой напрямую (через ICSP ), то у меня нет загрузчика, и начинаться программа должна с нулевого вектора.
То есть этот фьюз должен быть установлен в положение: Fusebit High M -> 1: Reset vector is $ 0000.
R4FAAA
Земляки: FOX_CRAFT, Паятель
Земляки: FOX_CRAFT, Паятель
- Dnepr_1186
- Потрогал лапой паяльник
- Сообщения: 398
- Зарегистрирован: Чт мар 26, 2009 20:53:27
- Откуда: Беларусь.Минская обл.
Re: BASCOM AVR в вопросах и ответах
на таких частотах, лучше использовать измерение периода, хотя без текста программы можно много гадать
Таймер в режиме захвата. На всякий случай привожу весь код. Мало ли что-то в нем может влиять на точность измерения.
- Вложения
-
- test taho168.rar
- (2.7 КБ) 265 скачиваний
Re: BASCOM AVR в вопросах и ответах
Получается, что частота тактирования выше и составляет грубо 115/112*8'000'000=8'214'285 и соответственно
По мне, гораздо быстрее сразу считать частоту
Лучше, всё равно, поставить кварц.
Код: Выделить всё
Const Tt = 0.000007791Код: Выделить всё
Period = Timcount * Tt ' определяем период
F11 = 1 / Period ' считаем частотуПо мне, гораздо быстрее сразу считать частоту
Код: Выделить всё
F11 = crystal/64/Timcount ' считаем частоту
Лучше, всё равно, поставить кварц.
- Dnepr_1186
- Потрогал лапой паяльник
- Сообщения: 398
- Зарегистрирован: Чт мар 26, 2009 20:53:27
- Откуда: Беларусь.Минская обл.
Re: BASCOM AVR в вопросах и ответах
Попробовал скорректировать Tt. Частота подгоняется но на больших значениях начинает выбегать вперед на пару герц. Я так понимаю в программе косяков нет? И дело скорее всего в тактировании генератора?
Re: BASCOM AVR в вопросах и ответах
Подскажите как записать считанный из ds18b20 серийный номер в память МК и потом считать из памяти?
- ev3658
- Слесарь-программист
- Сообщения: 341
- Зарегистрирован: Вт сен 11, 2012 23:08:28
- Откуда: город Кстово Нижегородская обл.
Re: BASCOM AVR в вопросах и ответах
Долго решался, примерно несколько лет и всё-же я это сделал:


Спойлер


Re: BASCOM AVR в вопросах и ответах
а я ещё в 2012 его купил за 89
- ev3658
- Слесарь-программист
- Сообщения: 341
- Зарегистрирован: Вт сен 11, 2012 23:08:28
- Откуда: город Кстово Нижегородская обл.
Re: BASCOM AVR в вопросах и ответах
Там комиссию взяли, через PayPal 2,69 евро, а если через банк, то банк берёт 15 евро.
Вообщем я счастлив и моя совесть чиста )))
Вообщем я счастлив и моя совесть чиста )))
- max50
- Мучитель микросхем
- Сообщения: 497
- Зарегистрирован: Ср дек 10, 2008 21:24:28
- Откуда: Алтайский край, Барнаул
Re: BASCOM AVR в вопросах и ответах
как записать считанный из ds18b20 серийный номер в память МК
На соседнем форуме есть.
Нужно войти под своим аккаунтом.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Re: BASCOM AVR в вопросах и ответах
[uquote="OLEGKARAS",url="/forum/viewtopic.php?p=3233010#p3233010"]как записать считанный из ds18b20 серийный номер в память МК
На соседнем форуме есть.
Нужно войти под своим аккаунтом.[/uquote]
Спасибо за пример .
Как правильно записать такое условие ?
If (Menu >= 21 And Menu <= 29 Or Menu >= 210 And Menu <= 290) Or Menu = 0 Then
- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
select case Menu
case 21 to 29: gosub a1
case 210 to 290: gosub a1
case 0: gosub a1
end select
case 21 to 29: gosub a1
case 210 to 290: gosub a1
case 0: gosub a1
end select
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Re: BASCOM AVR в вопросах и ответах
Спасибо.
В баском есть кнопка отменить , где можно увеличить количество отмен ?
В баском есть кнопка отменить , где можно увеличить количество отмен ?
Re: BASCOM AVR в вопросах и ответах
А у мну вот такой вопрос. Делаю часы на ds1307 & attiny2313. Как в баскомавре можно реализовать код с двумя кнопками Mode & Set. Жмешь моде - кнопкой сет устанавливаешь часы. Жмешь опять кнопку моде - устанавливаешь минуты. Ну и так далее день, месяц, год.
Обычный кусок кода у меня есть, где одной нопкой часы, а второй минуты устанавливаются.
Обычный кусок кода у меня есть, где одной нопкой часы, а второй минуты устанавливаются.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Как вариант - ТАК. Вариант очень простой, но работающий как часы. Хоть и писался очень давно. Код прокомментирован очень подробно, потому проблем возникнуть не должно. В добавок ко всему, проект протеус тоже приложен. В этих часах кнопка "MODE" в рабочем режиме переводит часы в режим отображения даты (пока удерживается), кнопка "SET" переводит в режим настроек, где уже "MODE" меняет по очереди параметры. 

"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Re: BASCOM AVR в вопросах и ответах
Как вариант - ТАК. Вариант очень простой, но работающий как часы. Хоть и писался очень давно. Код прокомментирован очень подробно, потому проблем возникнуть не должно. В добавок ко всему, проект протеус тоже приложен. В этих часах кнопка "MODE" в рабочем режиме переводит часы в режим отображения даты (пока удерживается), кнопка "SET" переводит в режим настроек, где уже "MODE" меняет по очереди параметры. 

Респект и уважуха! Я вас всех тут люблю! То, что надо, тоько адаптирую под газоразряд.
Всю ночь кодил. Вот докодился..
А как покороче сделать проверку на количество дней месяца при вводе? Те примеры, что видел, больше килобайта жрут. Пока останоовился на тупом варианте на кнопке.
Код: Выделить всё
If _month = 1 AND _day > 31 Then _day = 1
If _month = 2 AND _day > 29 Then _day = 1
If _month = 3 AND _day > 30 Then _day = 1
If _month = 4 AND _day > 30 Then _day = 1
If _month = 5 AND _day > 31 Then _day = 1
И так на каждый месяц всего 12 строк
Можно это как-нибудь оптимизировать? А то не влезает уже чуть.
- max50
- Мучитель микросхем
- Сообщения: 497
- Зарегистрирован: Ср дек 10, 2008 21:24:28
- Откуда: Алтайский край, Барнаул
Re: BASCOM AVR в вопросах и ответах
Тут посмотрите.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
-
Novice user
- Мудрый кот
- Сообщения: 1704
- Зарегистрирован: Вт янв 05, 2016 10:14:25
- Откуда: поселок Мелеуз
Re: BASCOM AVR в вопросах и ответах
так не проще?
if _day > 28 and _month = 2 then _day = 1
if _day > 30 then
if _month = 4 or _month = 6 or _month = 9 or _month = 11 then _day = 1
end if
if _day > 31 then _day = 1
if _day > 28 and _month = 2 then _day = 1
if _day > 30 then
if _month = 4 or _month = 6 or _month = 9 or _month = 11 then _day = 1
end if
if _day > 31 then _day = 1