вместо sts пишите out. остальной код логически верный. единственное не проверял настройку таймера, у вас там число сразу вводится, а чтобы узнать какие биты вы выставляется не хочется в даташит лезть. если нужно выставить несколько битов удобнее(читабельнее код получается) использовать следующую конструкцию:
и еще раз спасибо. Надеюсь больше небуду спрашивать такие простые ошибки - самому стыдно,прогу раз 20 проверил,думал что косяк в прерываниях ,а сдесь проще.
ну уж и последний вопрос ) вдруг ктонибудь делал: прерывания по PINKT0 (1-7 вывод) сделать отдельно кнопки,или отдно прерывание и допустим через SBIC вывода 2 и т.д ?
спящий писал(а):вдруг ктонибудь делал: прерывания по PINKT0 (1-7 вывод) сделать отдельно кнопки,или отдно прерывание и допустим через SBIC вывода 2 и т.д ?
расшифрование(извините неправильно написал): прерывание по PCINT - на 7 входов одно прерывание,можноли какнибудь сделать так чтобы можно было использовать все входы,например:
прерывание PCINT : проверка порта В1;
действие.....;
иначе ; проверка порта В2; дейтвие; иначе возврат прерывание PCINT ;
Т.е. чтобы прерывание сработало по любому из пинов PCINT0...PCINT7, а у же в обработчике определять что делать в зависимости от их состояния? А по другому и не получится если нужно более одного пина из номеров 0...7 опрашивать...
спящий писал(а):и еще раз спасибо. Надеюсь больше небуду спрашивать такие простые ошибки - самому стыдно,прогу раз 20 проверил,думал что косяк в прерываниях ,а сдесь проще.
Лучше всего отлаживать код в AVRStudio - там можно посмотреть регистры и сэмулировать некоторую периферию. Таких ошибок было бы гораздо меньше
"Никогда не опускайся чего б тебе ни стоило, как бы ни было плохо.
А если отступил и сдал немного, то, считай, душа продалась и сдохла!
Честь и кровь - сохрани свою совесть, свобода и любовь - вот она русская гордость"
Дело в том, что в нижнем участке в TCCR1B пишется 4 единичных значения, а в верхнем - два. . Если вверху написать: ldi temp, (icie1<<1); sts timsk1,temp; ldi temp,(1<< ICNC1)|(ICES1<<1)|(CS12<<1)|(CS10<<1) ; sts tccr1b,temp; то должно работать...
Опыт и мудрость приходят с годами... К некоторым годы приходят одни...
VirZh я и так тоже писал непомогло(( сделал как всегда 0b00000000 ))
вот помогите разобраться уже давно мучаюсь немогу понять:
Прерывание по ЗАХВАТУ(определяет промежуток времени по спадающему фронту) почему R26 и R27 постоянно увеличиваются если частота остается преждней.. основные положения выделил чтобы было понятно:
подскажите почему АЦП ,когда перекидываеш регистр,значение меняеться сначало очень быстро,потом очень медленно - хотя сигнал входящий меняется плавно(синусоида)