roboforum.ru

Технический форум по робототехнике.


Внешние прерывания Atmega8

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: Внешние прерывания Atmega8

Сообщение Kip » 10 июл 2008, 17:16

blindman писал(а):Для меня новость, что sei это "фигня". Может порадовать этой новостью разработчиков контроллера? Наверно, по твоему фигня также и то, что твой код будет исполняться в 3 раза дольше? И то, что тот, кто будет потом читать твой код, должен помнить, что I это именно седьмой бит?



Фигня не по сути, а по применению. Вставка ассемблерного кода делается так: #asm("sei"), а у паренька в последнем варианте просто sei. При этом правильный варинант не компилится.
Я в своей совсем не долгой практике программирования пользовался всегда SREG |= (1 << 7). А почему он будет исполняться в три раза дольше, очень хочу узнать?
Kip
 
Сообщения: 4
Зарегистрирован: 10 июл 2008, 16:14

Re: Внешние прерывания Atmega8

Сообщение blindman » 10 июл 2008, 17:23

У паренька как раз все нормально. Смотрим, какой компилятор он использует, и осознаем, что в GCC фигней будет как раз #asm

Если очень хочешь узнать - скомпилируй свой код, потом его дизассемблируй. Если не знаешь как, помогу.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Внешние прерывания Atmega8

Сообщение Kip » 10 июл 2008, 18:07

blindman писал(а):У паренька как раз все нормально. Смотрим, какой компилятор он использует, и осознаем, что в GCC фигней будет как раз #asm

Если очень хочешь узнать - скомпилируй свой код, потом его дизассемблируй. Если не знаешь как, помогу.


Хорошо, обращусь в личку.

При програмированнии микропроцессоров мы устанавливаем кучу битов в различных регистрах в СИшном коде.
Чтож теперь всё переводить на ассемблерные вставки?
Какой смысл писать sei(), выгадавая время, если перед этим мы устанавливаем биты таким нерациональным образом :GICR|=0x40, MCUCR=0x02,GIFR=0x40?
Kip
 
Сообщения: 4
Зарегистрирован: 10 июл 2008, 16:14

Re: Внешние прерывания Atmega8

Сообщение blindman » 10 июл 2008, 18:39

В чем смысл я написал выше. И неважно, что в данном конкретном случае нам пофиг, что прерывания будут разрешены на два такта позже - нужно сразу учиться делать правильно. В данном случае использовать sei правильно во всех отношениях - короче, быстрее, читабельнее.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Пред.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17