Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Обсуждаем контроллеры компании Atmel.
Ответить
78Rus
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Сб фев 19, 2011 14:35:08

Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение 78Rus »

Друзья, помогите понять проблему. Написал код для обработки нажатия кнопки энкодера (обвязка по даташиту с кондером и pull-down презистором).
В среде ардуино после загрузки все работает как надо, а вот если скопилировать аналогичный код в AmtelStudio7, программа глючит. Прерывание по нажатию срабатывает с 10 раза, иногда светодиод может включится, а по отжатию кнопки не погаснуть. В среде ардуино аналогичный код работает ОТЛИЧНО.

Сама atmega328p-au снята с платы ардуино и запущена от встроенного генератора.
Спойлер#define F_CPU 8000000UL

#include <avr/io.h>
#include <avr/interrupt.h>


ISR(PCINT0_vect) { //обработка нажатия кнопки
PCICR=(0<<PCIE0); //выкл прерывание

if (PINB&0b00000001) {
PORTB |= (1<<(PORTB2));
}
else
{
PORTB &= ~(1<<(PORTB2));
}

PCICR=(1<<PCIE0); //вкл прерывание

}


int main(void) {

//Установка 12 нога PB0/PCINT0/arduino pin:8
PCICR |= (1<<PCIE0);//set Разрешаить прерывания блока
PCMSK0 |= (1<<PCINT0);//set Какая нога вызовет прерывание
DDRB |= (1<<DDB0);//set to input

//PB2 нога со светодиодом
DDRB |= (1<<DDB2);//set to output
sei();

while (1) {

}
return 0;
}
78Rus
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Сб фев 19, 2011 14:35:08

Re: Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение 78Rus »

Поставил CVAVR, загрузил - все работает. В чем проблема не понял. Придется видимо в нем работать.
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение parovoZZ »

Внутри обработчика прерывания бессмысленно отключать другие прерывания - все прерывания запрещены аппаратно. Вместо int main лучше писать void main и ничего не возвращать - так сэкономится пару байт памяти.
Логичнее в обработчике менять фронт прерывания, а не заниматься лишними проверками.
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение OKF »

В0 настроен как выход, а значит сидит в 0. А вы на него 5 вольт ещё суёте. И как только работает...
78Rus
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Сб фев 19, 2011 14:35:08

Re: Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение 78Rus »

Это очепятка. Прогнал через дебаггер amtel studio, все работает. В чем же причинааааа?
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение OKF »

Опечатка через копипаст, оригинально.)))
78Rus
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Сб фев 19, 2011 14:35:08

Re: Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение 78Rus »

Ну вот, лучше что нибудь дельное подсказали ) может фьюзы или ещё что? Пробовал в cvavr code wizard, там все ставится в дефолт, там все работает, копирую в amtel studio, глючит.
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение OKF »

А вы бы делали что то, а то только помогите.
Текст выкладывайте, и оформите нормально.
78Rus
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Сб фев 19, 2011 14:35:08

Re: Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение 78Rus »

Как же не делал, написал же что делал ) И что там оформлять, там кода на четверть страницы. Какая то видимо ерундовая проблема. Тот бит что вы нашли уже в качестве экспериментов проскочил, поэтому и написал что очепятка...
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение OKF »

Это вам надо или мне? Тогда выкладывайте с чем работаете на данный момент.
И уважать надо других, а то помогите и при этом ковыряйтесь в моём говне. Или - или.
78Rus
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Сб фев 19, 2011 14:35:08

Re: Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение 78Rus »

Мне кажется вы несколько преувеличиваете, никакого неуважения нет в помине, одна сплошная уважуха ) И никакого моего "говна" в трех с половиной строчки простейшего кода я думаю нет, т.е. задача тривиальная - обработка нажатия кнопки и зажигания светодиода. Чтобы оно (мое говно) появилось хочу хотя бы решить эту проблему и настроить программное обеспечение. ) Поэтому еще раз: Программа работает в дебаггере, но не работает на плате - не срабатывает прерывание (срабатывает с 5-10 нажатия). Если тот же код загрузить через CVAVR все отлично работает. Если что, отсутствие "дребезга" кнопки проверено осциллографом. Сигнал с кнопки попадает на входную ножку МК (отсутствие дефектов монтажа). Кнопка подключена с кондером 0.1 и pull-down резистором 10К. ATMEGA 328P-AU запущена от внутреннего генератора. В настройках АМТЕЛ-а выбрана ATMEGA 328P. На всякий случай еще фьюзы МК прикладываю. Спасибо за внимание! ;-)

Спойлер#define F_CPU 8000000UL

#include <avr/io.h>
#include <avr/interrupt.h>


ISR(PCINT0_vect) { //обработка нажатия кнопки
PCICR=(0<<PCIE0); //выкл прерывание

if (PINB&0b00000001) {
PORTB |= (1<<(PORTB2));
}
else
{
PORTB &= ~(1<<(PORTB2));
}

PCICR=(1<<PCIE0); //вкл прерывание

}


int main(void) {

//Установка 12 нога PB0/PCINT0/arduino pin:8
PCICR |= (1<<PCIE0);//set Разрешаить прерывания блока
PCMSK0 |= (1<<PCINT0);//set Какая нога вызовет прерывание
DDRB |= (0<<DDB0);//1-выход, 0-вход
//PB2 нога со светодиодом
DDRB |= (1<<DDB2);//1-выход, 0-вход
sei();

while (1) {

}
return 0;
}
Вложения
avrdude.jpg
(112.7 КБ) 559 скачиваний
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение OKF »

Говно - это когда вы начинаете предложение с маленькой буквы, пишете без знаков препинания, отступов и т.п. Когда мне нужно напрягаться что бы понять о чё вы. Аналогично и в тексте программы. Я должен смотреть на это и разбираться с вашим говнокодом, пусть даже с 3-мя строчками. Проблем нет, но заради чего? Вы пальцем не можете пошевелить, что бы привести это в удобочитаемый вид, при том что это ВАМ надо, а хотите получить решение вашей проблемы. Вот это и называется неуважением. Это ж как 2х2, что тут можно разжевывать.
Удачи!
78Rus
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Сб фев 19, 2011 14:35:08

Re: Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение 78Rus »

Ппц. Удобочитаемый это как, я просто не понимаю о чем речь? Там все с комментами, если об этом, ну кроме записи в порт, но тут даже мне не требуется комментарий. :shock:
78Rus
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Сб фев 19, 2011 14:35:08

Re: Arduino->AmtelStudio7 - PCINT0_vect проблема с кнопкой

Сообщение 78Rus »

В результате выяснилось что МК работает не стабильно от внутреннего генератора на частоте 8Мгц! Включил по дефолту из даташита CKDIV8, т.е. частота /8 и все заработало… Правда тут 1Мгц будет. Не понятно не работает в принципе на 8-ми или что, мне и 1-го хватит ))). Так что кто все-таки столкнётся с подобной проблемой теперь знает шо делать. А то тут столько народу ходит, то ли лень писать то ли программистов нет, просто удивительно!!! Один товарищ тут развел оффтоп - бредоромашку про уважение/не уважение... ШОК! По фату такие горе советчики, лучше вообще ничего не пишите. Если руки чешутся а заний НУЛЬ, посмотрите хорошее кино на ххх.ком…
Ответить

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