Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Прекъсване от Таймер на Attiny26 в Micropascal
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=7082
Страница 1 от 1

Автор:  lafi [ Сря Авг 26, 2009 12:44 pm ]
Заглавие:  Прекъсване от Таймер на Attiny26 в Micropascal

Накупих си няколко процесорчета, понеже са ефтини и реших от там да стартирам с AVR платформата.
До сега съм програмирал на Паскал само ПИК-ове.
Реших да си напиша една програмка за динамична индикация и ми трябва прекъсване от таймера, ползвах примера в Help-a който е за Atmega, не разпознава "променливата" IVT_ADDR_TIMER0_OVF;

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

.
.
.
.
end;

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

Автор:  optron [ Сря Авг 26, 2009 8:18 pm ]
Заглавие: 

Какво съобщение ти излиза когато се опита да компилира програмата ?

Автор:  relsys [ Сря Авг 26, 2009 9:04 pm ]
Заглавие: 

Ами то това е константа, и вероятно тоя процесор няма този вектор и за това не е дефиниран /не познавам тази платформа/. Ако ли не виж адреса на вектора в pdf и предполагам знаеш как да си го дефинираш:

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


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

Автор:  lafi [ Сря Авг 26, 2009 9:27 pm ]
Заглавие: 

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.

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

Автор:  relsys [ Чет Авг 27, 2009 9:50 am ]
Заглавие: 

Код:
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.


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

Автор:  optron [ Чет Авг 27, 2009 9:29 pm ]
Заглавие: 

Това съобщение показва, че нямаш декларирана тази константа предварително никъде. Това обикновено е направено в някой от хедърите за конкретния процесор.
Идват ми две неща наум. Едното е да провериш дали зареждаш правилните хедъри за твоята програма. И дали са всички и не пропускаш някой. Разбира се, и файловете с въпросните хедъри трябва да са налице. Ако са коректно зададени като имена и като път до тях, тогава второто е да провериш в даташийта на процесора как точно е името на въпросната константа.
Това се сещам засега. Може би ще се сетя и още ...
Успех!

Автор:  lafi [ Пет Авг 28, 2009 5:10 pm ]
Заглавие: 

За този процесор не са декларирани, сега видях че и ADC_Read не работи.
Много тъпо така за начинаещ в програмирането на Атмел, трябва да се обръщам често към документацията.
А документацията на Атмел е пълна боза.

Автор:  Wise [ Пет Авг 28, 2009 5:26 pm ]
Заглавие: 

lafi написа:
А документацията на Атмел е пълна боза.


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

Автор:  ДедоБоре [ Пет Авг 28, 2009 8:17 pm ]
Заглавие: 

lafi написа:
Много тъпо така за начинаещ в програмирането на Атмел, трябва да се обръщам често към документацията.


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

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

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

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/