BASCOM AVR в вопросах и ответах
- Moto_v3x
- Потрогал лапой паяльник
- Сообщения: 307
- Зарегистрирован: Ср мар 31, 2010 11:45:58
- Откуда: Славянск
Re: BASCOM AVR в вопросах и ответах
svic
а так не пробовали
Config Portd.3 = Input
а так не пробовали
Config Portd.3 = Input
- svic
- Друг Кота
- Сообщения: 5837
- Зарегистрирован: Ср ноя 17, 2010 23:10:55
- Откуда: Ижевск LO66NU
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
В смысле - использовать INT1? Нет, не пробовал. Собственно вопрос возник из-за того, что в "обучалке" в примере приведено, что при работе с этим прерыванием порт конфигурируется, как "Config PIND.2 = input", однако смутило то, что при этом в симуляторе баскома ID2 никак не реагирует и прерывание всё-равно остается на PD2. Пробовал и через DDRD.....
В начале жизнь мучает вопросами, в конце - ответами...
- Moto_v3x
- Потрогал лапой паяльник
- Сообщения: 307
- Зарегистрирован: Ср мар 31, 2010 11:45:58
- Откуда: Славянск
Re: BASCOM AVR в вопросах и ответах
немного опечатался Portd.2
- svic
- Друг Кота
- Сообщения: 5837
- Зарегистрирован: Ср ноя 17, 2010 23:10:55
- Откуда: Ижевск LO66NU
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Спасибо, попробую!
В начале жизнь мучает вопросами, в конце - ответами...
- Kill17
- Открыл глаза
- Сообщения: 63
- Зарегистрирован: Вс май 30, 2010 20:27:33
- Откуда: Санкт-Петербург
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
День добрый!
Подскажите как реализовать прием по софтовому Уарту, а передачу по железному нескольких байт ?
Подскажите как реализовать прием по софтовому Уарту, а передачу по железному нескольких байт ?
- Moto_v3x
- Потрогал лапой паяльник
- Сообщения: 307
- Зарегистрирован: Ср мар 31, 2010 11:45:58
- Откуда: Славянск
Re: BASCOM AVR в вопросах и ответах
svic
А что вы хотите добится от INT0, если кнопку передача и педаль пропустить, то обработчик по более команд будет
А что вы хотите добится от INT0, если кнопку передача и педаль пропустить, то обработчик по более команд будет
- svic
- Друг Кота
- Сообщения: 5837
- Зарегистрирован: Ср ноя 17, 2010 23:10:55
- Откуда: Ижевск LO66NU
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Хм... Попробую поменять тактику...
----------
Действительно, прерывание только отнимало ресурсы - цикл DO и без него справляется.
Хорошая мысля всегда приходит опосля!
Спасибо!
И напоследок еще один маленький вопросик - транслятор напрочь игнорирует неопределенность 0/0 и просто деление на нуль. А как на это дело смотрит контроллер?
----------
Действительно, прерывание только отнимало ресурсы - цикл DO и без него справляется.
Хорошая мысля всегда приходит опосля!
И напоследок еще один маленький вопросик - транслятор напрочь игнорирует неопределенность 0/0 и просто деление на нуль. А как на это дело смотрит контроллер?
Последний раз редактировалось svic Чт ноя 22, 2012 19:04:19, всего редактировалось 3 раза.
В начале жизнь мучает вопросами, в конце - ответами...
- Kill17
- Открыл глаза
- Сообщения: 63
- Зарегистрирован: Вс май 30, 2010 20:27:33
- Откуда: Санкт-Петербург
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
поправлюсь, для приема посылки из 1-20 байт. Прием нужно сделать именно по софтовому УАРТу.
Сколько не пытаюсь, не выходит, с аппаратного в софтовый без проблем, а на оборот, что-то не получается.
Сколько не пытаюсь, не выходит, с аппаратного в софтовый без проблем, а на оборот, что-то не получается.
Re: BASCOM AVR в вопросах и ответах
Всем привет)
Помогите разобраться с динамической индикацией)
Вот код
Если пишу в порт одно число во все индикаторы- показывает правильно - в данном случае 7.Если пишу скажем 071
То показывает какую-то хрень..Могут быть вообще не цифры(
Укажите на косяк, плз..
Вот схема
там на схеме не правильно выводы нарисованы..я вначале рисовал, потом на макете коммутировал как удобно..но в двоичном коде они правильно выдаются
Помогите разобраться с динамической индикацией)
Вот код
Код: Выделить всё
$regfile = "attiny2313.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32
$prog &HFF , &HF4 , &HDB , &HFF ' generated. Take care that the chip supports all fuse bytes.
Dim Count As Byte
Dim Number1 As Byte
Dim Number2 As Byte
Dim Number3 As Byte
Config Portb = Output
Config Pind.3 = Output
Config Pind.4 = Output
Config Pind.5 = Output
Dig1 Alias Portd.3
Dig2 Alias Portd.4
Dig3 Alias Portd.5
Config Timer0 = Timer , Prescale = 64
On Timer0 Int_timer0
Enable Interrupts
Enable Timer0
Do
Loop
End
Int_timer0:
Reset Dig1 : Reset Dig2 : Reset Dig3
Incr Count : If Count > 3 Then Count = 1
If Count = 1 Then
Portb = &B11010101
Set Dig1
End If
If Count = 2 Then
Portb = &B11010101
Set Dig2
End If
If Count = 3 Then
Portb = &B11010101
Set Dig3
End If
Return
Digits:
Data &B00010001 , &B11010111 , &B00100101 , &B10000101 , &B11000011 ' 0 1 2 3 4
Data &B10001001 , &B00001001 , &B11010101 , &B00000001 , &B10000001 ' 5 6 7 8 9
Если пишу в порт одно число во все индикаторы- показывает правильно - в данном случае 7.Если пишу скажем 071
Код: Выделить всё
If Count = 1 Then
Portb = &B00010001
Set Dig1
End If
If Count = 2 Then
Portb = &B11010101
Set Dig2
End If
If Count = 3 Then
Portb = &B11010111
Set Dig3
End If
То показывает какую-то хрень..Могут быть вообще не цифры(
Укажите на косяк, плз..
Вот схема
там на схеме не правильно выводы нарисованы..я вначале рисовал, потом на макете коммутировал как удобно..но в двоичном коде они правильно выдаются
- Вложения
-
- Индикация.GIF
- (14.99 КБ) 463 скачивания
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
SAU писал(а):Помогите разобраться с динамической индикацией)
Код: Выделить всё
If Count = 1 Then
Portb = &B11010101
Set Dig1
Waitms 2
End IfА задержки ставить не надо, чего они (данные) сплошным потоком льются.
И есть код намного удачнее от edm2007
Код: Выделить всё
$regfile = "attiny2313.dat" ' тип МК
$crystal = 8000000 ' выбор кристала для расчета задержек
'******************************[Определение переменных и констант]************************************
Dim Count As Byte ' переменная для индикации
Dim Number(3) As Byte ' значения трех разрядов
'***************************************[Инициализация портов]**********************************************
Config PORTA.1 = Output ' светодиод
Config PORTB = Output ' порт сегментов индикатора
Config PORTD.4 = Output ' первый разряд индикатора
Config PORTD.5 = Output ' второй разряд индикатора
Config PORTD.6 = Output ' третий разряд индикатора
'************************************[Инициализация прерываний]*****************************************
Config Timer0 = Timer , Prescale = 64 ' конфигурируем таймер индикации
On Ovf0 Refresh ' метка на прерывание индикации
'***********************************[Присвоение уникальных имен]*****************************************
Led Alias PORTA.1 ' присваиваем имя светодиоду
Dig1 Alias PORTD.4 : Dig2 Alias PORTD.5 : Dig3 Alias PORTD.6 ' и разрядам
'***********************************[Начало основной программы]******************************************
Enable Interrupts ' разрешаем все прерывания
Enable Ovf0 ' и для индикации в частности
'----------
Number(1) = 4 ' выведем на индикатор 456
Number(2) = 5
Number(3) = 6
'----------
Do ' крутимся здесь, ожидая прерывание
Toggle Led ' мигаем светодиодом
Wait 1
Loop
'************************[Процедуры обработки подпрограмм и прерываний]************************
Refresh: ' прерывание таймера Т0 (индикация)
Reset Dig1 : Reset Dig2 : Reset Dig3 ' гасим индикатор
Incr Count : If Count > 3 Then Count = 1 ' выбираем разряд для загрузки
PORTB = Lookup(number(count) , Digits) ' закидываем в порт код цифры
Select Case Count ' и включаем соответствующий разряд индикатора
Case 1 : Set Dig1
Case 2 : Set Dig2
Case 3 : Set Dig3
End Select
Return ' выход из обработчика прерывания
'********************************************************[DATA]****************************************************
Digits: ' цифры
Data &B11111100 , &B01100000 , &B11011010 , &B11110010 , &B01100110 ' 0 1 2 3 4
Data &B10110110 , &B10111110 , &B11100000 , &B11111110 , &B11110110 ' 5 6 7 8 9
'*********************************************************************************************************************Re: BASCOM AVR в вопросах и ответах
ну у него в обработке прерывания таймера я тоже задержки не увидел..) Но вечером попробую его код..
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
SAU писал(а):вечером попробую его код..
Потом отпишитесь, а то уже интересно почему такая загагулина.
PS: Сейчас просмотрел снова код, действительно задержка Waitms нужна когда в главном цикле, а в прерывании нет.
Re: BASCOM AVR в вопросах и ответах
В,общем, и с кодом edm2007 то же самое..Причем я пробовал ставить задержки и в обработке прерывания таймера, и в теле цикла do...loop - безрезультатно.
пробовал и в тело цикла вынести, как на его странице написано http://www.edm2007.narod.ru/startavr6.html
Фьзы выставлены правильно, с помощью калькулятора http://avr.roboforum.ru/calc.html?part=ATtiny2313 без делителя и с внутренним на 4 мгц
Пробовал перешивать другим программатором- все то же..Для управления анодами использованы кт361 с резисторами в базе по 1К
Кстати в протеусе выдает если цифры одинаковые- такие же как и в железе, если разные - то в протеусе одни (восьмерки), а на индикаторе другие..
В архиве исходник, прошивка и модель протеуса..даже и не знаю что думать
пробовал и в тело цикла вынести, как на его странице написано http://www.edm2007.narod.ru/startavr6.html
Код: Выделить всё
Do ' основной цикл
PORTB = Lookup(number(1) , Digits) ' в первый разряд выводим 4
Set Dig1 ' зажигаем первый разряд
Waitms 2 ' задержка
Reset Dig1 ' гасим первый разряд
PORTB = Lookup(number(2) , Digits) ' во второй разряд выводим 5
Set Dig2 ' зажигаем второй разряд
Waitms 2 ' задержка
Reset Dig2 ' гасим второй разряд
PORTB = Lookup(number(3) , Digits) ' в третий разряд выводим 6
Set Dig3 ' зажигаем третий разряд
Waitms 2 ' задержка
Reset Dig3 ' гасим третий разряд
Loop ' начинаем сначала
Фьзы выставлены правильно, с помощью калькулятора http://avr.roboforum.ru/calc.html?part=ATtiny2313 без делителя и с внутренним на 4 мгц
Пробовал перешивать другим программатором- все то же..Для управления анодами использованы кт361 с резисторами в базе по 1К
Кстати в протеусе выдает если цифры одинаковые- такие же как и в железе, если разные - то в протеусе одни (восьмерки), а на индикаторе другие..
В архиве исходник, прошивка и модель протеуса..даже и не знаю что думать
- Вложения
-
- Динамическая.rar
- (16.21 КБ) 165 скачиваний
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
Подключаете не правильно, эмиттеры на землю и всё у Вас получится
- Вложения
-
- Динамическая.7z
- (21.38 КБ) 178 скачиваний
Re: BASCOM AVR в вопросах и ответах
amv2000 писал(а):Подключаете не правильно, эмиттеры на землю и всё у Вас получится
Вы будете смеяться, но в протеусе, да, все работает.а подключил свои кт361 эммитер на землю, коллектор на анод- даже не светятся..К тому же схему подключения брал отсюда..http://radiokot.ru/articles/30/
Индикатор у меня с общим анодом REC-S5361ASR-G вот даташит..http://www.google.by/url?sa=t&rct=j&q=& ... S5361ASR(C).pdf&ei=CtOvULXwF8n2sgbr0IGoDg&usg=AFQjCNESFzXcJ_oB6lWl53mDmEroBoZ31A&sig2=tixI7Uk4Ze1_wiP_DXfxjA
Последний раз редактировалось SAU Пт ноя 23, 2012 22:48:06, всего редактировалось 1 раз.
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
SAU писал(а):Вы будете смеяться, но в протеусе, да, все работает.
Ржу не могу
Re: BASCOM AVR в вопросах и ответах
COMMON ANODE это общий анод?
В общем нашел свою ошибку..Забыл, что общий анод управляется нулем- по привычке 1 управлял..
В общем нашел свою ошибку..Забыл, что общий анод управляется нулем- по привычке 1 управлял..
- Вложения
-
- Инд.png
- (37.13 КБ) 482 скачивания
Последний раз редактировалось SAU Пт ноя 23, 2012 23:06:41, всего редактировалось 1 раз.
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
Так оно и бывает.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
SAU писал(а):ну у него в обработке прерывания таймера я тоже задержки не увидел..)
amv2000 писал(а):Сейчас просмотрел снова код, действительно задержка Waitms нужна когда в главном цикле, а в прерывании нет
SAU писал(а):Причем я пробовал ставить задержки и в обработке прерывания таймера...
Вот именно по этой причине я никогда и не выкладываю исходные коды своих законченных творений. Потому как даже не попытавшись разобраться, начинают втыкать задержки, костыли и подпорки, а потом меня же упрекают в том, что мой код не работает.
При всем этом стоит учесть, что в статье расписано все настолько подробно, что даже ребенок в состоянии понять. О какой задержке вообще может идти речь, если таймер настроен на срабатывание каждые 4 мс? Именно он и разряды зажигает, независимо от основной программы, и нужное время свечения каждого разряда определяет. В этом-то вся суть. Пока таймер независимо молотит и разряд горит, программа может выполнять другие действия, не мешая индикации. Это не тупое сидение в основном цикле, когда микроконтроллер бездарно топчется на одном месте, и ничего сделать не может. Я уж не говорю о том, что фраза "пробовал ставить задержки и в обработке прерывания" говорит о многом. И явно не в пользу автора. "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон