|
Не хочет работать прерывание компаратора в GCC+Eclipce. |
|
|
|
Mar 14 2012, 10:46
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(_Pasha @ Mar 14 2012, 04:37)  Зогадко просто решается. В приведенном коде инициализации пинов напорото столько чуши, что. В чём чушь? Ноги в Z переводятся. Цитата(_Pasha @ Mar 14 2012, 04:37)  Вы определитесь хотя бы, на каких ногах этот компаратор висит. На PD6-PD7. Цитата(_Pasha @ Mar 14 2012, 04:37)  Зогадко просто решается. А какая разгадка? Цитата(AHTOXA @ Mar 13 2012, 20:11)  Как нам только что объяснил уважаемый ReAl, в avr-gcc, оказывается, не может. И что мешает в АРМ также сделать? Цитата(AHTOXA @ Mar 13 2012, 20:11)  А, например, в случае arm-gcc и cortex - запросто. (Например, вот, вот, вот и ещё кучу раз  ) Почитал - вспомнил: сом недавно по этим граблям походил.
|
|
|
|
|
Mar 14 2012, 11:04
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(_Артём_ @ Mar 14 2012, 13:46)  В чём чушь? Ноги в Z переводятся. На PD6-PD7. А какая разгадка? Вот она Код SFIOR |= (1<<ACME); ADMUX = 6; // настройка компаратора на 6 вход АЦП Уберите ACME, ибо у Вас компаратор чисто электрически не работает зы. Ой, не у Вас, а у ТС, конечно.
Сообщение отредактировал _Pasha - Mar 14 2012, 11:05
|
|
|
|
|
Mar 14 2012, 11:13
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(_Pasha @ Mar 14 2012, 13:04)  Вот она Код SFIOR |= (1<<ACME); ADMUX = 6; // настройка компаратора на 6 вход АЦП Уберите ACME, ибо у Вас компаратор чисто электрически не работает Как не работает? ACME=1 - It is possible to select any of the ADC7..0(1) pins to replace the negative input to the Analog Comparator. Работает, но сигнал берётся с ADC6. Или нет?
|
|
|
|
|
Mar 14 2012, 12:33
|

Местный
  
Группа: Участник
Сообщений: 253
Регистрация: 4-03-09
Из: Богота, Колумбия
Пользователь №: 45 676

|
Паша, прежде чем ржать глянули бы в ДШ. Сигнал берётся с 6 канала АЦП, который не имеет функции пина, только АЦП, и инициализировать его как-то не нужно. Входы же компаратора переводятся в Z для пущей лучшести, т.к. имеют свойство гадить его работе в таком режиме. Т.к. они у меня пока не задействованы, перевёл в Z от греха. Ну и наконец, для бронебригад. Повторю в третий раз. Без прерывания компаратор РАБОТАЕТ. Биты и флаги встают как надо при изменении сигнала на входе. Этому посвящено 2/3 моего первого поста, с кусками кода и лирическими отступлениями. Не работает ТЕЛО ПРЕРЫВАНИЯ.
Всем. Проблему решил. Оказалось, тело прерывания таймера настолько перегружено, что не успевает выполнится до следующего переполнения. А когда выполняется, выбирает флаг с бОльшим приотритетом - то есть снова таймер. А компаратор лишь удивлённо смотрит в след... Первый раз такое вижу...
Сообщение отредактировал Dikoy - Mar 14 2012, 12:34
|
|
|
|
|
Mar 14 2012, 13:22
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(Dikoy @ Mar 14 2012, 15:04)  Завязывать надо с С++ и писюковыми методами на МК... Назад к ассемблеру Си? Я думаю наоборот: С++ и PC-методам на МК всё большее применение находится. Хотя каждому своё.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|