Искуственное прерывание

Hello, Alex!

Saturday Mar 24, 2007, 15:14. Alex Mogilnikov -> Dimmy Timchenko.

AM>>> int_handler(); DT>> Hе вполне корректно.

AM> Тогда напомни, пожалуйста, в чем отличие обычного call от "настоящего" AM> вызова прерывания? Кроме автоматического запрета прерываний в последнем AM> случае? Я точно помню, что в MCS51 я таким приемом пользовался, мне AM> кажется, и в avr не должно быть проблем...

DT>> Лучше так:

DT>> #pragma vector=... DT>> __interrupt void Int_Handler() DT>> { DT>> actual_handler(); DT>> } DT>> ...

DT>> actual_handler();

AM> Разные прологи/эпилоги? А чем лучше-то?

WinAVR не захотел кушать CALL :-( не пpедусмотpено в его инлайн асемблеpе.

Goodbye, Alex! AKA Taraserker. Чтобы увеличить пенсии, мы должны увеличить pождаемость. (С) Ю.Тимошенко

Reply to
Taras Rivchenko
Loading thread data ...

Привет Taras!

29 Mar 07 07:12, Taras Rivchenko писал Alex Mogilnikov:

TR> WinAVR не захотел кушать CALL :-(

Что значит "кушать CALL"? Компилятор вообще-то должен был его сгенерить, а не кушать. Это же ассемблерная инструкция!

TR> не пpедусмотpено в его инлайн асемблеpе.

Что ты понимаешь под "инлайновым ассемблером WinAVR"? Если речь об операторе asm, то он ничего не ассемблирует, а тупо помещает переданную ему строку в выходной ассемблерный текст. Разве что может выполнить подстановку имен регистров, но ничего более. Можно написать любую ерунду, типа asm("blablabla");, и это будет скушано без ошибок. "blablabla" будет переписана в ассемблерный файл "как есть".

Покажи, как и что ты пытался сделать, и что не получилось...

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Я удалю твою жажду. Без возможности восстановления.

Reply to
Alex Mogilnikov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.