|
__raw прерывания |
|
|
|
 |
Ответов
|
Jun 13 2007, 20:20
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Извините, что я вмешиваюсь в столь лихо закрученную тему. Но если у Вас дрожание происходит из-за другого прерывания (по ADC), то я Вам предложу несколько, на мой взгляд более простых решений. И именно в рамках IAR. Попробуйте их сделать. 1) Самое простое и возможно эффективное. Во всяком случае Вам не придётся ломать программу. Первой командой прерывания ADC введите __enable_interrupt(); 2) По скольку динамическая индикация - вещь явно периодическая, а АЦП Вы явно вызываете по таймеру или привязываете его ко времени другим способом, то выкиньте вообще прерывание по ADC. Работайте следующим образом. В начале прерывания динамической индикации - считываете предыдущее значение АЦП. В конце меняете канал и запускаете следующее измерение. Если время опроса АЦП у вас меньше времени регенерации - то вызывайте регенерацию по N-ному прерыванию от АЦП. Можно и ещё предложений много сделать. Главное, чтобы моя мысль до Вас дошла. За всю жизнь мне не разу не приходилось делать прерывание от АЦП. Сложно даже представить себе ситуацию когда это нужно. Как и прерывание от SPI передачи. Малоэффективно. Потери на обработку прерывания велики по сравнению с ожиданием результата. Рекомендую применять синхронное чтение, когда результат - гарантировано будет получен. Извиняюсь, если я не правильно оценил задачу и ответил не на Ваши вопросы.
|
|
|
|
|
Jun 13 2007, 21:04
|

Местный
  
Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606

|
Цитата(SasaVitebsk @ Jun 14 2007, 00:20)  Извините, что я вмешиваюсь в столь лихо закрученную тему. Но если у Вас дрожание происходит из-за другого прерывания (по ADC), то я Вам предложу несколько, на мой взгляд более простых решений. И именно в рамках IAR. Попробуйте их сделать. Всё что Вы говорите совершенно верно. Для меня "дрожание" индикатора это частный случай изучения тонких моментов языка С и конкретных сред разработки. К сожалению тех. документация на среды разработки оставляет желать много лудшего. Зачастую изучить систему команд нового микроконтроллера бывает значительно проще, чем написать пустую функцию main() во вновь изучаемой среде. По этому опыт людей столкнувшихся с подобными проблемами трудно переоценить. А отсутствие упоминания о действуещем модификаторе __raw наводит на мысль о наличии других недокументированных модификаторов, дающих возможность получить, желаемый в данном случае результат. Со своей точки зрения могу сказать, отсутствие таких возможностей в IAR сильно снижает его привлекательность для малых микроконтроллеров, таких как обсуждаемый нами mega88. Со своей стороны приложу все усилия для того, что бы получить разяснения по недосказанным, и поверхностно описанным моментам в описании IAR С компилятора.
|
|
|
|
Сообщений в этой теме
Т.Достоевский __raw прерывания Jun 11 2007, 22:07 rezident Вам в пустыне уже все разжевали, теперь еще и тут ... Jun 11 2007, 22:50 Т.Достоевский Это СОВСЕМ не то что мне нужно, тк он НЕ СОХРАНИЛ ... Jun 11 2007, 23:10 rezident Опс! Ну да. Вы правы. Я забыл что это прерыван... Jun 11 2007, 23:32 Т.Достоевский Но тогда придётся сохранять юзанные регистры ручка... Jun 11 2007, 23:39 Сергей Борщ Цитата(Т.Достоевский @ Jun 12 2007, 02:39... Jun 12 2007, 06:34 IgorKossak Цитата(Т.Достоевский @ Jun 12 2007, 02:39... Jun 12 2007, 07:37  Сергей Борщ Цитата(IgorKossak @ Jun 12 2007, 10:37) Э... Jun 12 2007, 10:30 singlskv Цитата(Т.Достоевский @ Jun 12 2007, 03:39... Jun 12 2007, 13:59 Т.Достоевский "Ваша ошибка в самом алгоритме, вам на нее =A... Jun 12 2007, 11:29 Сергей Борщ Цитата(Т.Достоевский @ Jun 12 2007, 14:29... Jun 12 2007, 12:46 Т.Достоевский Принцип такой tc0 это прерывание по переполнению
t... Jun 12 2007, 13:58 Сергей Борщ Цитата(Т.Достоевский @ Jun 12 2007, 16:58... Jun 12 2007, 14:57  singlskv Цитата(Сергей Борщ @ Jun 12 2007, 18:57) ... Jun 12 2007, 16:05   Т.Достоевский Цитата(singlskv @ Jun 12 2007, 20:05) Есл... Jun 12 2007, 16:14 Т.Достоевский Вы совеошенно правы прерывание мешает другое (адс)... Jun 12 2007, 15:56 singlskv Цитата(Т.Достоевский @ Jun 12 2007, 19:56... Jun 12 2007, 16:15  Т.Достоевский Цитата(singlskv @ Jun 12 2007, 20:15) jmp... Jun 12 2007, 16:19   singlskv по Вашей ссылке прерывания ADC не увидел, дальше н... Jun 12 2007, 16:36 Т.Достоевский В том то и дело, в меге нету абсолютного jmp!.... Jun 12 2007, 16:48 slog Ты и тут уже :-)
__indirect_jump_to((unsigned lon... Jun 12 2007, 17:11 Т.Достоевский Цитата(slog @ Jun 12 2007, 21:11) Ты и ту... Jun 12 2007, 17:15  singlskv Цитата(Т.Достоевский @ Jun 12 2007, 21:15... Jun 12 2007, 17:21   rezident Цитата(singlskv @ Jun 12 2007, 23:21) не.... Jun 12 2007, 19:57 Т.Достоевский Цитата(slog @ Jun 12 2007, 21:11) __indir... Jun 12 2007, 20:14  rezident Цитата(Т.Достоевский @ Jun 13 2007, 02:14... Jun 12 2007, 20:37 Т.Достоевский __indirect_jump_to((unsigned long)&Имя_функции... Jun 12 2007, 20:49 Сергей Борщ Цитата(Т.Достоевский @ Jun 12 2007, 23:49... Jun 13 2007, 07:07  Т.Достоевский Цитата(Сергей Борщ @ Jun 13 2007, 11:07) ... Jun 13 2007, 09:50   IgorKossak Цитата(Т.Достоевский @ Jun 13 2007, 12:50... Jun 13 2007, 14:19    Т.Достоевский Цитата(IgorKossak @ Jun 13 2007, 18:19) Т... Jun 13 2007, 17:02     IgorKossak Цитата(Т.Достоевский @ Jun 13 2007, 20:02... Jun 13 2007, 18:21      Т.Достоевский Цитата(IgorKossak @ Jun 13 2007, 22:21) Н... Jun 13 2007, 19:24 slog Незнаю
#pragma vector = TIMER0_OVF0_vect
__interr... Jun 13 2007, 04:03 Rst7 Делаю так обычно, ужос конечно, но что поделать:
... Jun 13 2007, 08:12 Rst7 Про недокументированные модификаторы для AVR поищи... Jun 14 2007, 05:12 SasaVitebsk В этом смысле платформы для микропроцессоров даже ... Jun 14 2007, 17:44 Dog Pawlowa Цитата(SasaVitebsk @ Jun 14 2007, 20:44) ... Jun 14 2007, 18:37 Т.Достоевский Цитата(SasaVitebsk @ Jun 14 2007, 21:44) ... Jun 14 2007, 18:42 IgorKossak Вот и славненько!
На этой мажорной ноте предла... Jun 14 2007, 21:04 Т.Достоевский Цитата(IgorKossak @ Jun 15 2007, 01:04) В... Jun 14 2007, 21:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|