Изучаем язык Си (Learn C language)

Русскоязычный форум SECU-3 по общим вопросам. General discussion in Russian language. English sub-forum.

Moderator: STC

teuer
DIP8 - Involved
Posts: 27
Joined: Tue Jul 26, 2011 9:01 am

Re: Изучаем язык Си (Learn C language)

Post by teuer »

Предлагаю обкатать в протеусе или на железе следующее изменение: (действительно только для 60-2)

ckps.c:833
//before starting the ignition it is left to count less than 2 teeth. It is necessary to prepare the compare module
//(до запуска зажигания осталось отсчитать меньше 2-x зубов. Необходимо подготовить модуль сравнения)
//TODO: replace heavy division by multiplication with magic number. This will reduce up to 40uS !
- OCR1A = GetICR() + ((uint32_t)diff * (ckps.period_curr)) / ANGLE_MAGNITUDE(CKPS_DEGREES_PER_COG);
+ OCR1A = GetICR() + (((((uint32_t)diff * (ckps.period_curr))>>8) * 0x15556)>>16);
User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Изучаем язык Си (Learn C language)

Post by STC »

Хм. Интересно. А 0x15556 это магическое число?
Попробую проверить когда время будет. Особенно важно проверить на предельно низких оборотах.
p.s. Я раньше пробовал, но из-за появленния 64-х битного результата после умножения тоже съедались большие ресурсы.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
lsasha7
LQFP144 - On Top Of The Game
Posts: 358
Joined: Sun Dec 12, 2010 11:55 am
Location: украина, Горловка

Re: Изучаем язык Си (Learn C language)

Post by lsasha7 »

STC
привет, насколько геморно вставить в прогу на ассемблере СИшный блок....
я думаю - очень, как ты скажешь?
nikll
LQFP144 - On Top Of The Game
Posts: 553
Joined: Sun Nov 06, 2011 9:20 pm
Location: Russia, Yekaterinburg
Contact:

Re: Изучаем язык Си (Learn C language)

Post by nikll »

Элементарно вставляется. Другое дело что ассемблерный код процессоро-зависимый, соответсвенно в дальнейшем на другом железе без полного переписыванния не перенести, поэтому без крайней необходимости не стоит делать ассемблерные вставки.
lsasha7
LQFP144 - On Top Of The Game
Posts: 358
Joined: Sun Dec 12, 2010 11:55 am
Location: украина, Горловка

Re: Изучаем язык Си (Learn C language)

Post by lsasha7 »

делать ассемблерные вставки.
прочитай внимательно вопрос, мне надо наоборот. :D
User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Изучаем язык Си (Learn C language)

Post by STC »

Негеморно. По краиней мере гемора столько же сколько в случае "ассемблерная вставка на СИ". В документации на компилятор нужно прочитать о принятых соглашениях (используемые регистры, порядок параметров в стеке и т.д.) и все. В документации на ИАР вроде опысаны оба варианта.

Я занимался такой фигней когда программировал на ассемблере под Windows. API ОС Windows выполнен на СИ, а мои программы были на ассемблере.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
nikll
LQFP144 - On Top Of The Game
Posts: 553
Joined: Sun Nov 06, 2011 9:20 pm
Location: Russia, Yekaterinburg
Contact:

Re: Изучаем язык Си (Learn C language)

Post by nikll »

Дергать винапи из асма это не си это просто библиотечные вызовы. Основной каркас на асме с сишными вставками? Хм, ну по суте тоже самое, вот только требуется следовать стандартам компилятора (порядок передачи параметров, работа со стеком, регистры, банки). Я именно так не пробовал но не думаю что это принципиально сложно. Тут скорее вопрос о целесообразности. Если какие-то ресурсоемкие куски кода еще имеет смысл писать на асме (если пишет гуру т.к. средний кодер против компилятора только хуже сделает) то вот весь скелет программы долго и нудно набивать в столбик вместо десятка строк кода как то не интересно.
lsasha7
LQFP144 - On Top Of The Game
Posts: 358
Joined: Sun Dec 12, 2010 11:55 am
Location: украина, Горловка

Re: Изучаем язык Си (Learn C language)

Post by lsasha7 »

подумаю, всем спасибо
Игорь Д
DIP8 - Involved
Posts: 23
Joined: Wed Oct 26, 2011 6:48 pm

Re: Изучаем язык Си (Learn C language)

Post by Игорь Д »

Привет всем! Есть у кого нибудь русский хелп к иару? С англитским чтото не очень!
Makar
LQFP112 - Up with the play
Posts: 203
Joined: Mon Dec 19, 2011 4:55 pm
Location: Ukraine, Kirovograd

Re: Изучаем язык Си (Learn C language)

Post by Makar »

Для тех кто только начинает изучать Си могу посоветовать компилятор microC. Огромное его достоинство это отличный хелп на русском языке с большой библиотекой и кучей примеров. На сайте можно отдельно скачать руководство по языку Си. Мне он когда то сильно помог.
Post Reply