Отговори на тема  [ 9 мнения ] 
Прекъсване от Таймер на Attiny26 в Micropascal 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Ное 09, 2008 12:28 am
Мнения: 63
Мнение Прекъсване от Таймер на Attiny26 в Micropascal
Накупих си няколко процесорчета, понеже са ефтини и реших от там да стартирам с AVR платформата.
До сега съм програмирал на Паскал само ПИК-ове.
Реших да си напиша една програмка за динамична индикация и ми трябва прекъсване от таймера, ползвах примера в Help-a който е за Atmega, не разпознава "променливата" IVT_ADDR_TIMER0_OVF;

Цитат:
procedure Timer0Overflow_ISR(); org IVT_ADDR_TIMER0_OVF;
begin

.
.
.
.
end;

Какво трябва да напиша, за да се разпознае от компилатора при контролер Attiny26 ?


Сря Авг 26, 2009 12:44 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Чет Ное 20, 2008 1:49 pm
Мнения: 276
Местоположение: Бургас
Мнение 
Какво съобщение ти излиза когато се опита да компилира програмата ?

_________________
Digitally yours: Optron


Сря Авг 26, 2009 8:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
Ами то това е константа, и вероятно тоя процесор няма този вектор и за това не е дефиниран /не познавам тази платформа/. Ако ли не виж адреса на вектора в pdf и предполагам знаеш как да си го дефинираш:

Код:
const
  IVT_ADDR_TIMER0_OVF : byte(word) = $ADDR_OF_VECTOR;


....
Всъщност е началния адрес на подпрограмата за прекъсването който ще се запише във вектора на прекъсването, така че би трябвало просто да решиш на кой адрес искаш да я разположиш и да го дефинираш, примерно $200.


Сря Авг 26, 2009 9:04 pm
Профил ICQ WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Ное 09, 2008 12:28 am
Мнения: 63
Мнение 
optron написа:
Какво съобщение ти излиза когато се опита да компилира програмата ?


Цитат:
4 303 Identifier "IVT_ADDR_TIMER0_OVF" was not declared


Примерно тази програма:
Цитат:
program led_blinking;
const _THRESHOLD = 20;
var counter : byte;

procedure Timer0Overflow_ISR(); org IVT_ADDR_TIMER0_OVF;
begin

if (counter >= _THRESHOLD) then
begin
PORTA := not PORTA; // toggle PORTB
counter := 0; // reset counter
end
else
Inc(counter); // increment counter

end;

procedure wait;
begin
Delay_ms(300);
end;
begin
DDRA:=$FF;

while true do
begin
wait;
end;
end.

Ще погледна пак документацията, малко се разминават нещата с прекъсванията, за разлика от Пиковете :(


Сря Авг 26, 2009 9:27 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
Код:
program led_blinking;

const IVT_ADDR_TIMER0_OVF : word = $100;

const _THRESHOLD = 20;
var counter : byte;

procedure Timer0Overflow_ISR(); org IVT_ADDR_TIMER0_OVF;
begin

if (counter >= _THRESHOLD) then
begin
PORTA := not PORTA; // toggle PORTB
counter := 0; // reset counter
end
else
Inc(counter); // increment counter

end;

procedure wait;
begin
Delay_ms(300);
end;
begin
DDRA:=$FF;

while true do
begin
wait;
end;
end.


Така се компилира.


Чет Авг 27, 2009 9:50 am
Профил ICQ WWW
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Чет Ное 20, 2008 1:49 pm
Мнения: 276
Местоположение: Бургас
Мнение 
Това съобщение показва, че нямаш декларирана тази константа предварително никъде. Това обикновено е направено в някой от хедърите за конкретния процесор.
Идват ми две неща наум. Едното е да провериш дали зареждаш правилните хедъри за твоята програма. И дали са всички и не пропускаш някой. Разбира се, и файловете с въпросните хедъри трябва да са налице. Ако са коректно зададени като имена и като път до тях, тогава второто е да провериш в даташийта на процесора как точно е името на въпросната константа.
Това се сещам засега. Може би ще се сетя и още ...
Успех!

_________________
Digitally yours: Optron


Чет Авг 27, 2009 9:29 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Ное 09, 2008 12:28 am
Мнения: 63
Мнение 
За този процесор не са декларирани, сега видях че и ADC_Read не работи.
Много тъпо така за начинаещ в програмирането на Атмел, трябва да се обръщам често към документацията.
А документацията на Атмел е пълна боза.


Пет Авг 28, 2009 5:10 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Дек 19, 2004 6:26 pm
Мнения: 1628
Местоположение: Сливен
Мнение 
lafi написа:
А документацията на Атмел е пълна боза.


Ами свикни със сладката, че те чака възкиселичката боза :oops:


Пет Авг 28, 2009 5:26 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
lafi написа:
Много тъпо така за начинаещ в програмирането на Атмел, трябва да се обръщам често към документацията.


обикновено, за да напишеш книга, трябва преди това да си прочел доста. и в програмирането е така.
не, че не може някой да напише книга и без да е чел нищо. но надали много хора ще го четат 8)

не се отчайвай.
аз се считам за напреднал и пак се ровя непрекъснато в документации.
все пак за тинито документа е <100 стр, какво си се размрънкал?

и от къде го измисли този микропаскал?
атмел си имат чудесна среда за писане и дебъгване на С.
и много повече хора могат да ти дават акъл.


Пет Авг 28, 2009 8:17 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 9 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни