Сообщение от kos_ua
|
В main в самом начале вызывается функция initialize_system();В этой функции происходит настройка таймера и его прерывания....следовательно опять таки под железо надо изменять только IO.h
|
Cэнк. С этим всё понятно. Нужно было раньше мне заглянуть в файл.
Кстати. я там не увидел где настраивается направление портов?
Сообщение от kos_ua
|
I,Q,M это массивы в RAM их не надо куда-то еще переписывать.....Они уже там))).А вот в файле IO.h их надо аккуратно переложить на железячные порт.
|
Извините за назойливость, хочется таки разобраться. Я так понял основная программа периодически вызывает эти функции
загружает из порта в массив
IO_Input(); // Read Data from all modules
выгружает в порт из массива
IO_Output(); // Write Data to all modules
Если так, тогда с обновлением информации в портах всё ясно.
Кстати. Можно было бы из функции прерывания убрать вызовы требуемых функций. Вызывать оттуда функцию(которую располагать в основном файле) а в этой функции описывать что вызывать. Тогда IO.h не нужно редактировать при изменнениях. Хотя, не много там изменять.
Просто хотелось бы минимизировать грядущие изменения в файлах IO.h Это так сказать мысли по поводу того как бы сделать лучше. Может идея того и не стоит.
примерно так:
в файле Тогда IO.h
void TIMER1_INT(void) interrupt 1
{
rutin_interapt();
}
в основном файле.
void rutin_interapt(void){
MByte++;
if ((MByte & 0x01) && !(pFMByte & 0x01)) Time+=1;
if ((MByte & 0x02) && !(pFMByte & 0x02)) Int_T100ms();
if ((MByte & 0x0
![Горд собой](images/smilies/icon_dovl.gif)
&& !(pFMByte & 0x0
![Горд собой](images/smilies/icon_dovl.gif)
) Int_T1s();
pFMByte=MByte;}
Высылаю вам два файла IO.h для PIC и AVR. Пока там написал под таймер0 (он обычно 8 битный) и максимальный период при большой частоте может быть менее 50 милисек. В прерывании нужно просто организовать счётчик на 5. Или попозже напишу с таймером1, хотя я бы его ставил для работы с часовым кварцем - RTL.
Хотя я бы сделал главным файлом тот файл, в котором определяется МК. и все настройки проекта. А ваши функции вызывал бы оттуда.
Так при переходе от компилятора к компилятору по моему будет проще. По крайней мере так сложилось у меня. Главные файлы разные, а остальные файлы в проектах для разных компиляторов одинаковые. см почту.