Например TDA7294

Форум РадиоКот • Просмотр темы - Помогите новичку с внешними прирываниями ATMEGA48
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 16:58:40

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 33 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Помогите новичку с внешними прирываниями ATMEGA48
СообщениеДобавлено: Вс янв 30, 2011 20:26:20 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 21
Рейтинг сообщений: 143
Зарегистрирован: Сб фев 21, 2009 13:11:40
Сообщений: 1900
Откуда: Москва
Рейтинг сообщения: 0
вместо sts пишите out. остальной код логически верный. единственное не проверял настройку таймера, у вас там число сразу вводится, а чтобы узнать какие биты вы выставляется не хочется в даташит лезть. если нужно выставить несколько битов удобнее(читабельнее код получается) использовать следующую конструкцию:
Код:
ldi temp, (1<<CS00)|(1<<WGM00)

при этом в регистре temp выставляются биты под номерами, соответствующими номерам битов WGM00 и CS00, а остальные биты сбрасываются.

_________________
Ставим плюсы: )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите новичку с внешними прирываниями ATMEGA48
СообщениеДобавлено: Вт фев 01, 2011 13:40:22 
Потрогал лапой паяльник

Карма: -1
Рейтинг сообщений: -5
Зарегистрирован: Сб янв 08, 2011 13:48:41
Сообщений: 303
Рейтинг сообщения: 0
и еще раз спасибо. Надеюсь больше небуду спрашивать такие простые ошибки - самому стыдно,прогу раз 20 проверил,думал что косяк в прерываниях ,а сдесь проще.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите новичку с внешними прирываниями ATMEGA48
СообщениеДобавлено: Вт фев 01, 2011 13:48:05 
Потрогал лапой паяльник

Карма: -1
Рейтинг сообщений: -5
Зарегистрирован: Сб янв 08, 2011 13:48:41
Сообщений: 303
Рейтинг сообщения: 0
ну уж и последний вопрос ) вдруг ктонибудь делал: прерывания по PINKT0 (1-7 вывод) сделать отдельно кнопки,или отдно прерывание и допустим через SBIC вывода 2 и т.д ?


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Помогите новичку с внешними прирываниями ATMEGA48
СообщениеДобавлено: Вт фев 01, 2011 14:23:44 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Ср янв 05, 2011 16:25:15
Сообщений: 1163
Рейтинг сообщения: 0
спящий писал(а):
вдруг ктонибудь делал: прерывания по PINKT0 (1-7 вывод) сделать отдельно кнопки,или отдно прерывание и допустим через SBIC вывода 2 и т.д ?
... еще бы "расшифровать"....


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите новичку с внешними прирываниями ATMEGA48
СообщениеДобавлено: Вт фев 01, 2011 16:00:22 
Потрогал лапой паяльник

Карма: -1
Рейтинг сообщений: -5
Зарегистрирован: Сб янв 08, 2011 13:48:41
Сообщений: 303
Рейтинг сообщения: 0
расшифрование(извините неправильно написал):
прерывание по PCINT - на 7 входов одно прерывание,можноли какнибудь сделать так чтобы можно было использовать все входы,например:

прерывание PCINT :
проверка порта В1;

действие.....;

иначе ;
проверка порта В2;
дейтвие;
иначе возврат прерывание PCINT ;


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите новичку с внешними прирываниями ATMEGA48
СообщениеДобавлено: Вт фев 01, 2011 16:13:01 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 234
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3851
Откуда: Москва
Рейтинг сообщения: 0
Т.е. чтобы прерывание сработало по любому из пинов PCINT0...PCINT7, а у же в обработчике определять что делать в зависимости от их состояния? А по другому и не получится если нужно более одного пина из номеров 0...7 опрашивать...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите новичку с внешними прирываниями ATMEGA48
СообщениеДобавлено: Вт фев 01, 2011 18:11:23 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб май 30, 2009 00:51:42
Сообщений: 39
Откуда: Россия, г. Курск
Рейтинг сообщения: 0
спящий писал(а):
и еще раз спасибо. Надеюсь больше небуду спрашивать такие простые ошибки - самому стыдно,прогу раз 20 проверил,думал что косяк в прерываниях ,а сдесь проще.


Лучше всего отлаживать код в AVRStudio - там можно посмотреть регистры и сэмулировать некоторую периферию. Таких ошибок было бы гораздо меньше

_________________
"Никогда не опускайся чего б тебе ни стоило, как бы ни было плохо.
А если отступил и сдал немного, то, считай, душа продалась и сдохла!
Честь и кровь - сохрани свою совесть, свобода и любовь - вот она русская гордость"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите новичку с внешними прирываниями ATMEGA48
СообщениеДобавлено: Чт апр 21, 2011 17:28:10 
Потрогал лапой паяльник

Карма: -1
Рейтинг сообщений: -5
Зарегистрирован: Сб янв 08, 2011 13:48:41
Сообщений: 303
Рейтинг сообщения: 0
подскажите почему непроисходит прерывания?(простая программа по "захвату" на ножке icp1)мега48



;
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m48def.inc"
.list
.nolist
.list



;

.def temp = r16;
.def counter = r17;
.def delay = r27;
.def delay1 = r18;
.def delay2 = r19;
.def temp1 = r22;
.def temp2 = r23;
.def temp3 = r24;
.def temp4 = r25;

.org 0x000
rjmp unit;


.org 0x00A
rjmp preriv1;

unit:
ldi temp,0b11111110;
out DDRB,temp;
ldi temp,0b00111111;
out DDRD,temp;
ser temp;
out DDRc,temp;

ldi r16,high(RAMEND) ;
out SPH,r16 ;
ldi r16,low(RAMEND) ;
out SPL,r16 ;


ldi temp, (icie1<<1) ;
sts timsk1,temp;
ldi temp, (cs11<<1) | (ices1<<1);
sts tccr1b,temp;


sei;

start:



rjmp start;

preriv1:

lds r26,icr1l;
lds r27,icr1h;


reti


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите новичку с внешними прирываниями ATMEGA48
СообщениеДобавлено: Пт апр 22, 2011 16:20:26 
Потрогал лапой паяльник

Карма: -1
Рейтинг сообщений: -5
Зарегистрирован: Сб янв 08, 2011 13:48:41
Сообщений: 303
Рейтинг сообщения: 0
как я понял у меня неработает маска :
ldi temp, (icie1<<1);
sts timsk1,temp;
ldi temp,(ices1<<1)+ (cs11<<1) ;
sts tccr1b,temp;

почему???
заменил на
ldi temp,0b00100000;
sts timsk1,temp;
ldi temp,0b11000101;
sts tccr1b,temp;

заработало((((мож я не правильно маску написал?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите новичку с внешними прирываниями ATMEGA48
СообщениеДобавлено: Сб апр 23, 2011 02:46:02 
Потрогал лапой паяльник

Карма: -1
Рейтинг сообщений: -5
Зарегистрирован: Сб янв 08, 2011 13:48:41
Сообщений: 303
Рейтинг сообщения: 0
и почему у меня в регистрах которые я сохраняю время длительности сигнала постоянно меняются значения? постоянно увеличиваются?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите новичку с внешними прирываниями ATMEGA48
СообщениеДобавлено: Сб апр 23, 2011 14:50:05 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вс фев 27, 2011 01:01:11
Сообщений: 86
Откуда: Республика Крым
Рейтинг сообщения: 0
спящий писал(а):
как я понял у меня неработает маска :
ldi temp, (icie1<<1);
sts timsk1,temp;
ldi temp,(ices1<<1)+ (cs11<<1) ;
sts tccr1b,temp;

почему???
заменил на
ldi temp,0b00100000;
sts timsk1,temp;
ldi temp,0b11000101;
sts tccr1b,temp;

заработало((((мож я не правильно маску написал?


Дело в том, что в нижнем участке в TCCR1B пишется 4 единичных значения, а в верхнем - два. :). Если вверху написать:
ldi temp, (icie1<<1);
sts timsk1,temp;
ldi temp,(1<< ICNC1)|(ICES1<<1)|(CS12<<1)|(CS10<<1) ;
sts tccr1b,temp;
то должно работать...

_________________
Опыт и мудрость приходят с годами... К некоторым годы приходят одни...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите новичку с внешними прирываниями ATMEGA48
СообщениеДобавлено: Сб апр 30, 2011 16:25:54 
Потрогал лапой паяльник

Карма: -1
Рейтинг сообщений: -5
Зарегистрирован: Сб янв 08, 2011 13:48:41
Сообщений: 303
Рейтинг сообщения: 0
VirZh я и так тоже писал непомогло(( сделал как всегда 0b00000000 ))


вот помогите разобраться уже давно мучаюсь немогу понять:

Прерывание по ЗАХВАТУ(определяет промежуток времени по спадающему фронту)
почему R26 и R27 постоянно увеличиваются если частота остается преждней..
основные положения выделил чтобы было понятно:

Программа что-то типо частотомера(подгоняю):





;
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m48def.inc"
.list
.nolist
.list



;

.def temp = r16;
.def counter = r17;
.def delay = r27;
.def delay1 = r18;
.def delay2 = r19;
.def temp1 = r22;
.def temp2 = r23;
.def temp3 = r24;
.def temp4 = r25;

.org 0x000
rjmp unit;


.org 0x00A
rjmp preriv1; настраиваем счетчик таймера




unit:
ldi temp,0b11111110;
out DDRB,temp;
ldi temp,0b00111111;
out DDRD,temp;
ser temp;
out DDRc,temp;

ldi r16,high(RAMEND) ; устанавливаем область стека
out SPH,r16 ;
ldi r16,low(RAMEND) ;
out SPL,r16 ;

ldi temp,0b00000010; выводим сразу 0
mov r0,temp;
out portB,temp;
ldi temp,0b0011110;
out portD,temp;


ldi temp,0b10011110;заполняем 1
mov r1,temp;
ldi temp,0b00100100;заполняем 2
mov r2,temp;
ldi temp,0b00001100;3
mov r3,temp;
ldi temp,0b10011000;4
mov r4,temp;
ldi temp,0b01001000;5
mov r5,temp;
ldi temp,0b01000000;6
mov r6,temp;
ldi temp,0b00011110;7
mov r7,temp;
ldi temp,0b00000000;8
mov r8,temp
ldi temp,0b00001000;9
mov r9,temp;


ldi temp,0b00100000; (icie1<<1) настраиваем прерывания по Захвату
sts timsk1,temp;
ldi temp,0b11000101;(icnc1<<1)+(ices1<<1)+(cs11<<1)
sts tccr1b,temp;


sei;

start:

mov r22,r11; зеленое просто выводим значение на табло!!!!!
mov r23,r12;
mov r24,r13;

mov r24,r13;
ldi ZL,0;
add zl,r24;
ld r24,z;
ldi temp,0b00000001;
out portd,temp;
out portB,r24;
ldi r16,0x00;
ldi r17,0x10;
loop:
subi r16,1;
sbci r17,0;
brcc loop;


mov r23,r12;
ldi ZL,0;
add zl,r23;
ld r23,z;
ldi temp,0b00000010;
out portd,temp;
out portB,r23;
ldi r16,0x00;
ldi r17,0x10;
loop1:
subi r16,1;
sbci r17,0;
brcc loop1;


mov r22,r11;
ldi ZL,0;
add zl,r22;
ld r22,z;
ldi temp,0b00000100;
out portd,temp;
out portB,r22;
ldi r16,0x00;
ldi r17,0x10;
loop2:
subi r16,1;
sbci r17,0;
brcc loop2;


mov r21,r10;
ldi ZL,0;
add ZL,r21;
ld r21,z;
ldi temp,0b00001000;
out portd,temp;
out portB,r21;
ldi r16,0x00;
ldi r17,0x10;

loop3:
subi r16,1;
sbci r17,0;
brcc loop3;


rjmp start;

preriv1:

clr r26;
clr r27;
lds r26,icr1l; вот тут постоянно увеличивается значение((( хотя поидее должно оставаться постонным
lds r27,icr1h;

clr r21;тысячи
clr r22;сотни
clr r23;десятки
clr r24;единицы

ldi r18,1;
div:
subi r26,5;делитель
sbci r27,0;
brcs vixod;единицы
adc r24,r18;
cpi r24,10

brne div; десятки
clr r24;
adc r23,r18;
cpi r23,10

brne div;сотни
clr r23;
adc r22,r18;
cpi r22,10

brne div;тысячи
clr r22;
adc r21,r18;
cpi r21,10
brne div;

vixod:


mov r10,r21;
mov r11,r22;
mov r12,r23;
mov r13,r24;
clr r16;
clr r18;
clr r26;
clr r27;

clr r16;
sts tcnt1l,r16;
sts tcnt1h,r16
sts icr1h,r16;
sts icr1l,r16;


reti


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите новичку с внешними прирываниями ATMEGA48
СообщениеДобавлено: Сб май 21, 2011 12:34:54 
Потрогал лапой паяльник

Карма: -1
Рейтинг сообщений: -5
Зарегистрирован: Сб янв 08, 2011 13:48:41
Сообщений: 303
Рейтинг сообщения: 0
подскажите почему АЦП ,когда перекидываеш регистр,значение меняеться сначало очень быстро,потом очень медленно - хотя сигнал входящий меняется плавно(синусоида)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 33 ]    , 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y