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

Обсуждаем контроллеры компании Atmel.
Ответить
akl
Друг Кота
Сообщения: 4450
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Попробуйте записать и запустить нижеследующую программу

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

; Turn off global interrupt
	cli
; Reset Watchdog Timer
	wdr

	CLR	R16
	OUT	MCUSR,R16

	LDI	R16,1<<WDCE|1<<WDE
	OUT   WDTCR, r16

	CBR	R16,1<<WDE
	OUT	WDTCR,R16

	RJMP	PC
;*************************
.EXIT
Или просто внедрить её в Ваш код.
Реклама
Встал на лапы
Сообщения: 127
Зарегистрирован: Вс мар 27, 2011 07:48:48
Откуда: г. Екатеринбург

Сообщение rojnov »

Похоже, дело в МК. Попробовал делать выход на порты PB.0 b PB.1 - вообще нет реакции светодиода. А т.к. другого МК под рукой не оказалось, то придется подождать 2-3- дня, пока съезжу в магазин. Главное, что, как все говорят, в коде ошибок нет, значит должен работать.
Реклама
Родился
Сообщения: 6
Зарегистрирован: Сб июн 01, 2013 18:51:03

Сообщение 4epemyxa »

В свете открывшихся с выходом версии 2.0.8.1 перспектив(последний пост страницы 285), а так же в связи с приближающимися новогодними праздниками, предлагаю перевод справки по использованию RAINBOW. Может кому и поможет.
Вложения
Rainbow_2081.pdf
(124.69 КБ) 804 скачивания
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2052
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Откуда: Москва

Сообщение Microtech »

[uquote="rojnov",url="/forum/viewtopic.php?p=3512310#p3512310"]Прошу помочь победить маленький кусочек[/uquote]
Похоже, среда игнорирует баг с End If

Config Pinb.3 = Input
Config Pinb.4 = Input
Config Portb.2 = Output

Gerkon Alias Pinb.3
Pusk Alias Pinb.4
Rele Alias Portb.2

Do
If Pusk = 0 Then : Set Rele : End If
If Pusk = 1 Then
If Gerkon = 0 Then : Reset Rele : End If
End If
Loop


--------------------------------------------------------------------------------------------------------------------------------------
Почему то не хочет по некоторым именам к битам регистров обращаться.
$regfile = "m32def.dat"
$crystal = 8000000
$hwstack = 80
$swstack = 95
$framesize = 100

Tccr1a.com1a1 = 1
Tccr1a.com1b1 = 1
Tccr1a.com1a0 = 1
Tccr1a.com1b0 = 1
Tccr1b.ctc1 = 1
Tccr1a.pwm11 = 0
Tccr1a.pwm10 = 1
Tccr1b.wgm13=0 'не жрёт
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 4743
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Сообщение vem566 »

Это не баг. Допускается как

If a > b then c = 0

так и

if a > b then
c = 0
end if

То есть одиночный оператор после if может не заканчиваться end if, если написан в одну строку.
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2052
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Откуда: Москва

Сообщение Microtech »

Спасибо. Работает такая запись. Но у меня однажды была ошибка, при которой несанкционированно выполнялся кусок кода до ближайшего end if, а если его заремарить, то устройство буквально сходило с ума, выполнялись совершенно произвольные куски кода, при этом работали прерывания и динамическая индикация. Компилятор никаких ошибок не выдавал. :(
По поводу timer1. Если посмотреть файл m32def.dat, то там четвертый бит регистра TCCR1B назван не WGM13, а CTC11. Запись Tccr1b.CTC11 = 0 - корректна.
Контактная информация:
Реклама
Встал на лапы
Сообщения: 127
Зарегистрирован: Вс мар 27, 2011 07:48:48
Откуда: г. Екатеринбург

Сообщение rojnov »

Итоги моих опытов. Купил новый МК, взял другой программатор, вместо монтажной платы собрал схему на картонке с помощью пайки. Результат - ноль. Проверил в Протеусе - все работает, как и замышлялось. В железе пока не хочет. Последний подход к инструменту - спаял схему на печ.плате с использованием МК в корпусе SO-8. Схема вроде подала признаки жизни, но ведет себя непонятно как. Но разбираться с ней уже нет времени, т.к. убываю на месяц в командировку. Так что придется пока отложить её до лучших времен.Но эта схемка мне нужна, так что потом буду её добивать.
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 28
Зарегистрирован: Вс май 15, 2016 19:02:01
Откуда: Украина

Сообщение andrusha152 »

Может у Вас просто контакт в тумблере пропадает? Тогда условие
If Pusk = 0 Then Set Rele
не выполняется, и светодиод тухнет.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

rojnov, я лично пробовал Ваш код в железе. Все работает как положено, могу видео записать. :) Попробуйте сменить версию ПО. Я давно не кодю в Баскоме, потому компилировал в старенькой 1.11.9.8. :solder:
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Родился
Сообщения: 19
Зарегистрирован: Чт дек 13, 2018 13:32:29

Сообщение torneb »

Привет всем)
Есть контроллер atmega8
В баскоме прописываю тактовую частоту 4000000
Во фьюзах выставлена тактовая частота 4 мГц с задержкой 64

Пишу команду wait 1
Но задержка больше чем секунда - это видно даже по банальному включению светодиода.
В чем может быть проблема?
Спасибо
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

Доброго времени.

Внутренний генератор конечно штука не точная, а задержки типа wait еще хуже, но больше - это сколько? В два раза? В десять? Можно скрин фьюзов? И код.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Встал на лапы
Сообщения: 132
Зарегистрирован: Пт окт 19, 2012 05:54:55

Сообщение koms48 »

$regfile = "m8def.dat"
$crystal = 4000000
$framesize = 128
$hwstack = 40
$swstack = 40
Config Portb.1 = Output

Portb.1 = 0
Do
wait 1
Portb.1 = 1
Wait 1
Portb.1 = 0
Loop
End

Где жуткие уходы от 1 секунды?
Без кода и фузов сюдой не лезь.
Друг Кота
Аватара пользователя
Сообщения: 4743
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

Сообщение vem566 »

А фузы только выставлены, или еще и записаны в МК? Или может там вместо 4 стоит 2 или вовсе 1 МГц.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2052
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Откуда: Москва

Сообщение Microtech »

CKDIV8. При включенном бите , тактовая частота делится на 8.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

Microtech, Конкретно в 8-й Меге этого фьюза нет.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2052
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Откуда: Москва

Сообщение Microtech »

Да, ошибся. :oops:
Там CKSEL2 похожий бит. В любом случае, надо проверить правильность установки локфьюзов.
Контактная информация:
Встал на лапы
Сообщения: 127
Зарегистрирован: Вс мар 27, 2011 07:48:48
Откуда: г. Екатеринбург

Сообщение rojnov »

Приветствую всех и с наступающим Н.Г.
Маленький вопрос. Подключаю ЖК-индикатор 2*16, стандартный. Делаю конфигурацию по образцу:
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
Config Lcd = 16 * 2
Вопрос: надо ли отдельно конфигурировать эти же порты на выход, типа "Config Portd.3 = Output" или

достаточно сконфигурировать только ЖКИ?
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2317
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

Сообщение Adagumer »

rojnov писал(а):достаточно сконфигурировать только ЖКИ?
Вполне достаточно!
Встал на лапы
Сообщения: 127
Зарегистрирован: Вс мар 27, 2011 07:48:48
Откуда: г. Екатеринбург

Сообщение rojnov »

Спасибо!
Вымогатель припоя
Аватара пользователя
Сообщения: 546
Зарегистрирован: Ср дек 09, 2015 17:02:31
Откуда: Мухосранск

Сообщение RadioHAM-433 »

Всех с 2019! Тут собственно возник вопрос как работает рандом в AVR и bascom? Что он он совсем не рандомный это я знаю но вот на сколько он не рандомный относительно других мк?
Мне нужен рандом для составления списка устройств автоматической/прозрачной адресации. Разные устройства находятся на разных системах на 2.4ГГ, на 430, и даже ИК. Что бы всем не пытаться связаться с устройством которого нет сам трансивер составляет список и услышав ИД из списка связывается и устройством. Трансивер запрашивает идентификатор и устройства его передают, но вот тут в дело вступает рандом, передача идет через случайной промежуток времени рассчитывая на то что пакет от какого то устройства пройдёт этим устройствам скажет молчать и снова запросит ИД и так пока все не замолчат если все будут рандомить по одинаковому то не чего не пройдёт. То есть в одно время получат запрос и можно сделать при таком глупом рандоме что бы все девайсы генерили разное время передачи?
Вообще это фундаментальная проблема составления списка как запросить ИД у устройств и что бы они не мешали друг другу. То есть трансивер сам сам составляет список устройств и сервер не говорит трансиверу какие адреса работают через него и не обращается к устройству через какой то трнансивер, это и есть автоматический режим.
Контактная информация:
Ответить

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