|
Прерывание на С, для Keil |
|
|
|
Sep 28 2005, 06:46
|
Участник

Группа: Новичок
Сообщений: 20
Регистрация: 8-09-05
Пользователь №: 8 357

|
Здраствуйте. Меня, как студента, волнует вопрос о прерываниях. А именно "как и с чем их едят ?" Иначе говоря, объясните, зачеи они нужны ? может есть где литература ? и ещё. ПОльзуюсь Keil для процессора DS80C400. когда исползую пример с прерыванием (пример не мой,а с сайта) и подгружаю файл startup.a51, то выдаётся ошибка типа "Memory spase overloop". МНе не понятно, почему происходит наложение адресов, и как от этого избавиься ?
|
|
|
|
|
Sep 28 2005, 19:54
|
Участник

Группа: Новичок
Сообщений: 20
Регистрация: 8-09-05
Пользователь №: 8 357

|
а не подскажешь где можно поситать про эти настройки ? или может сам сможешь пояснить немного ?  ))
|
|
|
|
|
Sep 29 2005, 06:21
|

Участник

Группа: Новичок
Сообщений: 48
Регистрация: 6-05-05
Пользователь №: 4 784

|
Цитата(Regbist @ Sep 28 2005, 23:54) а не подскажешь где можно поситать про эти настройки ? или может сам сможешь пояснить немного ?  )) в самом файле, в комментариях
--------------------
|
|
|
|
|
Sep 29 2005, 07:35
|

Частый гость
 
Группа: Свой
Сообщений: 97
Регистрация: 26-05-05
Из: Киев, Украина
Пользователь №: 5 426

|
Цитата(Regbist @ Sep 28 2005, 08:46) Здраствуйте. Меня, как студента, волнует вопрос о прерываниях. А именно "как и с чем их едят ?" Иначе говоря, объясните, зачеи они нужны ? может есть где литература ? и ещё. RTFM. Про прерывания у преподавателя лучше поспрашивай. Слишком долго обьяснять... Цитата ПОльзуюсь Keil для процессора DS80C400. когда исползую пример с прерыванием (пример не мой,а с сайта) и подгружаю файл startup.a51, то выдаётся ошибка типа "Memory spase overloop". МНе не понятно, почему происходит наложение адресов, и как от этого избавиься ? А чей проц ? Убедись что Кейл у тебя крэкнутый. Хотя если ты берешь пример то даже если он не крэкнутый то должно пахать. Там в триальном ограничение по размеру кода. Полезно будет посмотреть хелпы, лежат в папке С:\Keil\C51\HLP а также даташит к процу...
--------------------
Смотреть в себя, зреть муки свои, зная, что сам ты виновник мук - вот истинное страдание. Отладка / Софокл, "Аякс".
|
|
|
|
|
Oct 18 2005, 03:34
|
Частый гость
 
Группа: Участник
Сообщений: 104
Регистрация: 30-06-05
Из: С-Петербург
Пользователь №: 6 406

|
Цитата(Regbist @ Sep 28 2005, 09:46) Здраствуйте. Меня, как студента, волнует вопрос о прерываниях. А именно "как и с чем их едят ?" Иначе говоря, объясните, зачеи они нужны ? может есть где литература ? и ещё. ПОльзуюсь Keil для процессора DS80C400. когда исползую пример с прерыванием (пример не мой,а с сайта) и подгружаю файл startup.a51, то выдаётся ошибка типа "Memory spase overloop". МНе не понятно, почему происходит наложение адресов, и как от этого избавиься ? на сайте смотри примеры: ftp://ftp.dalsemi.com/pub/tini/ds80c400/c...ries/index.htmlраздел ISR Installation - это и есть работа с прерываниями оттуда же скачай файл startup.a51 для 400 проца адрес начала программы в startup.a51 должен совпадать с адресом в настройках компилятора.
--------------------
Hemos Pasado
|
|
|
|
|
Oct 18 2005, 12:01
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(Regbist @ Sep 28 2005, 10:46) ......волнует вопрос о прерываниях. А именно "как и с чем их едят ?" Иначе говоря, объясните, зачеи они нужны ? ...... если коротко... прерывания это события и всё что с ними связано. В различных OS принято выделять прерывания аппаратные и программные. Программные вызываються из того или иного куска кода OS или загруженной программы. Аппаратные - инициируються аппаратурой. Как правило в схеме с бОльшим кол-вом прерываний ставиться доп. аппаратный контроллер прерываний (например 8251 - интеловская линейка x86). Результатом прерывания с точки зрения аппаратуры - есть вход микропроцессора. В МК есть так же входа, которые можно использовать как линии прерывания (в зависимости от схемного решения). Как правило существуют основные прерывания : от последовательного порта, от внешних источников (входа), от таймера и т.п.. Как правило каждому прерыванию ставиться в соответствие определённое смещение в памяти, на адрес которого перейдёт управление МК. Чтоб упорядочить прерывания - существует иерархия прерываний и возможность их маскировать (блокировать). Подпрограммки прерываний пишуться лаконично (как выстрел  ) - хотя это не закон... пример... ставим RS232 на приём, разрешаем прерывание от последовательного порта. В обработчике пишем - считать символ из порта и записать его в буффер. нафига это нуна...буффер самого порта не безграничен. а принятые данные возможно и не имеют значения для Вашей логики... с уважением (круглый)
|
|
|
|
|
Oct 20 2005, 08:54
|
Участник

Группа: Новичок
Сообщений: 20
Регистрация: 8-09-05
Пользователь №: 8 357

|
SpiritDance -а ты vodoopeople ?
|
|
|
|
|
Oct 20 2005, 17:12
|

Знающий
   
Группа: Свой
Сообщений: 779
Регистрация: 9-10-04
Из: Россия, Пермь
Пользователь №: 828

|
Цитата(rezident @ Oct 20 2005, 16:08) Цитата(Regbist @ Sep 28 2005, 12:46) Меня, как студента, волнует вопрос о прерываниях. А именно "как и с чем их едят ?" Иначе говоря, объясните, зачеи они нужны ? Прерывания нужны для обработки каких-то внешних (по отношению к МК и исполняемой программе) событий, которые неопределены во времени. Т.е. могут возникнуть когда угодно. И в дополнение неоходима моментальная реакция на это событие, временно плюнув на все остальное
|
|
|
|
|
Oct 21 2005, 05:53
|
Участник

Группа: Новичок
Сообщений: 20
Регистрация: 23-06-04
Пользователь №: 150

|
Какое время отклика на прерывание следует ожидать у LPCxx ? По моим наблюдениям отклик на внешнее прерывание, SPI и I2C в области микросекунд. Программа на Кейл Ц во внешней RAM.
|
|
|
|
|
Oct 30 2005, 19:01
|
Участник

Группа: Новичок
Сообщений: 20
Регистрация: 8-09-05
Пользователь №: 8 357

|
Народ, я написал обработчик прерываний для com порта, используя Keil/ А как мне вызвать эти прерывание в программе? к примеру задача такая: я выполняю какие то операции в контроллере , затем мне надо всё остановить и передеть по com порту, затем опять начать считать что то в контроллере,либо котроллер что то считает , потом "Бац" и мне приходит команда по компорту,которую надо обработать и понять что это за команда,остановив при этом вычисления.
ну в итоге всё сводится к тому, как мне вызвать обработчик прерываний в программе? и как я узнаю, что мне чтото пришло по компорту ?
|
|
|
|
|
Oct 31 2005, 05:31
|
Участник

Группа: Участник
Сообщений: 67
Регистрация: 18-03-05
Пользователь №: 3 452

|
Цитата(Regbist @ Oct 30 2005, 22:01) ну в итоге всё сводится к тому, как мне вызвать обработчик прерываний в программе? и как я узнаю, что мне чтото пришло по компорту ? Прерывание само вызовется, если вы его разрешите ;-) Один из вариантов - в прерывании работать со спец-ми буферами на прием и передачу, а в основной программе узнавать о делах по состоянию переменных, в которых хранится кол-во байтов в этих буферах примеры есть, например в ISR-Driven Serial I/O V2 This example program provides you with easily configurable interrupt- driven serial I/O routines This example works with any 8051-compatible device. http://www.keil.com/download/files/intsio2.zip
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|