WINAVR

Sep 05, 2005 Last reply: 20 years ago 816 Replies

Hello, Ruslan Mohniuc! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 24 Oct 2005 06:25:52

+0400:

DO>> Это еще с каких дел? Компилируется-то развернутый DO>> макропроцессором код. Проблема макросов, особенно сложных DO>> (впрочем сишный макропроцессор особо сложные не умеет) в том, DO>> что обычно отсутствует механизм отладки самих макросов. DO>> Приходится писать, прогонять макропроцессор, смотреть его DO>> выход, и так далее. Пройти по шагам, посмотреть промежуточные DO>> результаты и значения переменных макропроцессора как правило DO>> нельзя.

RM> Я оформлял как функцию, ручками прописывая то, что должен был RM> макрос подставить. После отладки обратно превращал это в RM> макрос. Превращение макроса в функцию и обратно под любым RM> редактором дело недолгое. :)

Да, конечно.

RM> Hу а далее уже применял этот макрос для размножения. RM> Hо и макрос в принципе можно отлаживать- по ассемблерным RM> командам проходить...

Ну ходить можно даже по развернутому макропроцессором сишному исходнику, но имена переменных при этом потеряются.

RM> :) Hо это уже совсем на любителя.

Но я немного о другом, о механизме отладки программы для макропроцессора, коей является наш исходник. Для сишного препроцессора в виду его примитивности это не особо актуально, а вот у ассемблеров уже встречаются весьма навороченные.

dima

formatting link

Hello, Andrey Solomatov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 24 Oct 2005 08:43:50

+0000 (UTC):

DO>> Нет, просто более простой и менее выразительный. В DO>> продуманный язык не суют ввод-вывод, как языковое средство.

AS> Последние лет десять - пятнадцать, пожадуй.

DO>> В продуманный язык не суют два механизма работы с DO>> динамической памятью.

AS> malloc / free и new / delete ? ;))

malloc/free - это библиотечные функции, а new/delete в С нет :) и это совсем другое.

AS> Кстати, а какие два механизма динамической памяти в паскале? AS> [кусь]

mark/release доставшиеся от папаши Вирта, и getmem/freemem - от С...

dima

formatting link

Hello, Andrey Solomatov! You wrote in conference fido7.ru.embedded to Kirill Frolov on Mon, 24 Oct 2005 08:59:08

+0000 (UTC):

AS> После первой же ошибки файл всё равно будет перекомпилироваться. AS> Причём абсолютное большинство "компиляций после ошибки" AS> генерит такой бред, что только время отнимают.

Многие сишные компиляторы имеют опцию останавливаться после указанного числа ошибок.

dima

formatting link

Hello, Andrey Solomatov! You wrote in conference fido7.ru.embedded to Kirill Frolov on Mon, 24 Oct 2005 09:13:58

+0000 (UTC):

KF>> Это отдельный тип данных с определёнными над ним KF>> операциями. KF>> И неудобно, и громоздко. Hеудобно потому, что практически KF>> такую строку использовать нельзя -- ограничение в 255 байт. А KF>> громоздко потому как жирный рунтиме за собой таскает.

AS> Классическое "Hello, vasja!" на Туурбопаскале занимало у меня AS> (без особых усилий с моей стороны) этак килобайта 3. AS> Аналогичное, но сделанное на Си - при всех усилиях не AS> помещалось в 9к.

Это ты С пользоваться не умеешь. Я его тебе в несколько десятков байт скомпилирую. А вот на паскале - фиг, там нельзя никак переписать стартап и изменить состав system

dima

formatting link

Hello, Alex Mogilnikov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 24 Oct 2005 13:44:30

+0400:

AM>>> Потому что вход в обработчик прерывания выполняется не AM>>> так, как в обычную функцию.

DO>> Hу да, как и в большинстве С компиляторов есть соответсвующее DO>> расширение языка. Какие проблемы-то?

AM> Да просто я никогда не встречал такого. Всегда, как

Странно. Ты для мелких встраиваемых систем без поддержки ОС вообще писал что-нибудь?

AM> минимум, таблица векторов прерываний у меня была сделана на AM> ассемблере.

Нет в этом никакой необходимости. Я не встречал компилятора, который бы не поддерживал подобную возможность.

AM> Да и прерывания - не единственный вид исключений, и вход и выход из AM> обработчиков разных исключений может выполняться по-разному.

Значит есть соотвестсвующие модификаторы у функций.

AM> Hо, наверное, AM> ничто не мешает предусмотреть все это в компиляторе. Только как-то негибко это AM> получается, и очень уж привязано к конкретному процессору.

А куда деваться? При переносе на другой прийдется эти места переделать.

AM>>> С какой стати он сругается? В файле B никаких ошибок AM>>> нет.

DO>> Ругнется на стадии линковки, там нет отдельного линкера.

AM> Так я об этом и сказал - не слинкуется.

Там (в турбопаскале) все одним махом делается. Хотя он и пишет когда компилирует когда линкует.

dima

formatting link

Hello, Andrey Solomatov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 24 Oct 2005 09:50:13

+0000 (UTC):

DT>>> Hу и чего на паскале нельзя выразить, что можно на C? :) По

DO>> Многое на самом деле. Те же операторы ++, += - они яснее DO>> выражают что я хочу сделать, чем паскалевские эквиваленты.

AS> Яснее, только если ты в курсе, что означают эти закорючки. AS> Ибо это не общепринятые операции (в математическом смысле).

Операция плюс в языке программирования и в математике - существенно разные вещи. В математике 127+1 - всегда 128, а в языках программирования может быть и -1 и много чего еще.

DO>> Стандартная адресная арифметика, которая на паскале DO>> заменяется форменным хакерством, причем реально используется.

AS> Стандартная адресная арифметика всегда является хакерством.

В паскале - в большей степени. В С учитывается автоматически размер того, на что указывает адрес, а в паскале это надо вручную указывать.

DO>> Та же невозможность описать на паскале функцию с переменным DO>> числом параметров, DO>> что опять же обходится, но опять же некрасиво и полухакерски.

AS> С учётом того, что в Си эллипсис - это тоже полухак...

Вовсе нет, почему? Не более хакерская, чем передавать в функцию указатель, а уж это в паскале на право и на лево делается.

DO>> А его и нет в языке - это библиотека, которой ты можешь пользоваться, а AS> можешь и свою написать, в отличие от жестко привязанного к stdout Write,

AS> Вывод в произвольный файл на паскале обеспечивал, насколько AS> мне помнится, почти такой-же Write (только первый параметр - файл).

Да и stdout можно было переназнчить, что в частности стартап модуля CRT и делал, только все равно не гибко все это очень.

AS> Если требовался выод чего-то специфического - городим свою AS> функцию с выводом результата в виде строки.

И сгородили, звалась drivers.formatstr. Посмотри на сколько коряво в сравнении с sprintf все это выглядит.

DO>> который ты никак изменить не в силах и если у тебя формат DO>> вывода должен задаваться динамически, DO>> возможно извне, прийдется ручками писать аналог printf, потому что write - это не DO>> процедура, это макрос, раскручиваемый компилятором во время DO>> компилирования. Причем управление форматом вывода куда более уродское и менее DO>> гибкое, чем в [s]printf.

AS> Ну, собственно, за пределы вывода строк/символов/числе AS> способности printf не распространяются -

Это уже не мало. В паскале и для этого городить приходится.

AS> так что "городить" придётся и там - и там. AS> А поскольку паскаль - язык со строгой типизацией, то подсунуть

Это виртовский паскаль, а турбо-паскаль - нет. Не более строгий, чем ANSI-C, пожалуй даже менее.

AS> ему "неизвестный тип данных"

Хочешь удивлю? Попробуй найти где-нибудь турбо-паскаль и скормить ему такой текст:

{$A+,B+,D+,E+,F-,G-,I+,L+,N+,O-,P-,Q-,R-,S+,T-,V-,X+,Y+} {$M 16384,0,655360}

type Digits = '0'..'9'; DigSet = set of Digits;

var ds: DigSet; i: integer; d: double;

function t(var v): byte; begin t := byte(v); end;

begin ds := ['0']; ds := ds+['d']; d:=i; t(ds); i := t(ds); d := t(i); end.

и скомпилировать. Сожрет за милую душу. И после этого мне кто-то будет втирать, что паскаль (в его борланодовской инкарнации) строгий язык? Подозреваю, что вы его просто плохо знаете...

AS> действительно слегка затруднительно - именно в силу построения AS> языка.

Ась? Какого типа "v" в вышеприведенном примере?

AS> В отстальном - не вижу особой разницы.

Посмотри на то как "изящно" вызывается drivers.formatstr по сравнению с sprintf и может быть увидишь разницу.

dima

formatting link

Hello, Alex Mogilnikov! You wrote in conference fido7.ru.embedded to Dimmy Timchenko on Mon, 24 Oct 2005 14:12:30

+0400:

AM>>> Потому что вход в обработчик прерывания выполняется не так, AM>>> как в обычную функцию.

DT>> Hу так есть модификатор interrupt. Тебе ж Орлов рассказал DT>> уже.

AM> Я понял, понял. Согласен, можно.

AM>>> Хотя, если использовать нестандартный функции, это, AM>>> наверное, можно обойти.

DT>> А в C это делается как-то совсем иначе?

AM> В виденных мной компиляторах атрибут interrupt изменял AM> только продлг и эпилог функции в плане сохранения рабочих AM> регистров и выхода через reti вместо ret (зависит от

Тоже самое и в паскале. Нет никакой разницы.

AM> используемого процессора). Hо вызывалалсь эта функция все AM> равно из ассемблерного модуля, например командой jmp AM> int_handler в таблице векторов прерываний.

Ну да, так и происходит, это от языка не зависит. Единственное, так как турбопаскаль предполагает написание _только_ досовских программ, там надо getvector/setvector сделать, чтобы установить вектор обработчика на свою функцию.

DT>> Прерывания обрабатывают стандартными функциями? :)

AM> У меня, как правило, одни и те же функции вызываются как AM> из обработчика прерывания, так и из foreground процессов. Вот

Какие проблемы? Единственное, надо следить, чтобы функции реентерабельными были.

DT>> Это ты о чём вообще?

AM> О том что из непаскалевской функкции нельзя вызвать AM> паскалевскую. Скажем, если бы работа с семафорами была

Можно, почему нет? Нельзя в рамках турбопаскаля сделать проект на С, а часть его на Паскале, потому что rtl паскалевский так сделан, что распотрошить его нельзя и компилирует паскаль не в объектник стандартный, а свой несовместимый ни с чем формат. Другие реализации того же (почти) языка от этих недостатков свободны. Хотя конечно всунутые в _язык_ ввод-вывод и работа с динамической памятью жизнь не облегчают.

AM> реализована на Паскале, я бы не смог из ассемблерного AM> обработчика установить семафор. Так я понял из сказанного AM> ранее.

Ты не правильно понял. Из прилинкованного к паскалевскому модулю объектника вполне можно вызывать паскалевские функции (придерживаясь разумеется соглашений о вызовах).

dima

formatting link

Hello, Olga Nonova! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 24 Oct 2005 10:50:35

+0000 (UTC):

MB>>> Зpя ты так. PL/M подходит, точнее, подходил, и неплохо, MB>>> для i8080. Пpавда, тот PL/M-80, котоpый был y меня (а MB>>> pаботал он

DO>> 8080 - процессор, а не контроллер. И для построения DO>> работающей системы требовал кучи обвязки. В те времена (конец DO>> восьмидесятых) я для него писал вообще в кодах. DO>> Ассемблера и того, на чем его можно запустить по началу не DO>> было.

ON> Это у Вас "не было". А в приличных местах приличные люди ON> вполне успешно работали на системах Intelec под ISIS-II, где ON> все уже было: и макроассемблеры, и компилятор PLM80, и линкеры ON> с библиотекарями. Это уже в начале 80-х в СССР.

Да, где-то в СССР уже успели все это украсть, а где-то еще нет.

ON> А в конце 80-х уже вовсю операционку ISIS и весь софт от Intel ON> эмулировали на IBM-персоналках для 51-го семейства уже практически

В конце восьмидесятых IBM персоналки в СССР еще не были столь распространены.

ON> повсеместно, чуть ли не в Домах пионеров.

Особенно в домах пионеров.

ON> Я не знаю, где Вы были в то время, но вести легкомысленные разговоры про ON> ущербность PLM Вам явно не следует.

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

dima

formatting link

Mon Oct 24 2005 20:37, Alex Mogilnikov wrote to Dmitry Orlov:

AM>>> ÍÉÎÉÍÕÍ, ÔÁÂÌÉÃÁ ×ÅËÔÏÒÏ× ÐÒÅÒÙ×ÁÎÉÊ Õ ÍÅÎÑ ÂÙÌÁ ÓÄÅÌÁÎÁ ÎÁ AM>>> ÁÓÓÅÍÂÌÅÒÅ.

AM>>> É ÏÞÅÎØ ÕÖ ÐÒÉ×ÑÚÁÎÏ Ë ËÏÎËÒÅÔÎÏÍÕ ÐÒÏÃÅÓÓÏÒÕ.

DO>> á ËÕÄÁ ÄÅ×ÁÔØÓÑ? ðÒÉ ÐÅÒÅÎÏÓÅ ÎÁ ÄÒÕÇÏÊ ÐÒÉÊÄÅÔÓÑ ÜÔÉ ÍÅÓÔÁ ÐÅÒÅÄÅÌÁÔØ.

AM> üÔÏ ÆÉÇÎÑ, ÐÒÉ ÐÏÑ×ÌÅÎÉÉ ÎÏ×ÏÊ ÍÏÄÉÆÉËÁÃÉÉ ÐÒÏÃÅÓÓÏÒÁ × ÔÏÍ ÖÅ AM> ÓÅÍÅÊÓÔ×Å ÐÒÉÄÅÔÓÑ ÍÏÄÉÆÉÃÉÒÏ×ÁÔØ ËÏÍÐÉÌÑÔÏÒ ÞÔÏÂÙ ÎÁÐÒÉÍÅÒ ÄÏÂÁ×ÉÔØ AM> ÐÏÄÄÅÒÖËÕ ÎÏ×ÏÇÏ ×ÅËÔÏÒÁ ÉÌÉ ÉÓËÌÀÞÅÎÉÑ.

úÁÞÅÍ? 8-0. åÓÌÉ ÍÅÈÁÎÉÚÍ ÏÂÒÁÂÏÔËÉ ÎÅ ÐÏÍÅÎÑÌÓÑ, ÔÏ ÄÏÂÁ×ÌÑÅÔÓÑ ÏÐÒÅÄÅÌÅÎÉÅ ÎÏ×ÏÇÏ ×ÅËÔÏÒÁ × ÈÉÄÅÒÅ É ×ÓÅ.

IAR EW6812:

// <i9s12x64.h>

//----------------------------------------------------- #pragma language=extended

#ifndef INTVEC_START #define INTVEC_START 0 /* Baseoffset from start of interrupt */ #endif /* vector block. */ ... /* Timer Channel 6 */ interrupt [INTVEC_START + 0x62] void TC6_interrupt(void); //-----------------------------------------------------

0x62 - ×ÅËÔÏÒ × ÔÁÂÌÉÃÅ ÐÒÅÒÙ×ÁÎÉÊ.

// "ect.c" //----------------------------------------------------- interrupt void TC6_interrupt(void) { TFLG1 = (1<<6); // Clear CxF flag TC6W += T_1MS; // Set new compare point () } //-----------------------------------------------------

WBR, Yuriy.

ðpÉ×ÅÔ, Dimmy. ÷ÏÔ ÞÔÏ Dimmy Timchenko wrote to Kirill Frolov:

AM>>> consists of a sequence of decimal digits. An octal AM>>> constant AM>>> consists of the prefix 0 optionally followed by a AM>>> sequence AM>>> of the digits 0 through 7 only. A hexadecimal AM>>> constant

KF>> ïÓÔÁÌÏÓØ ÐÏÎÑÔØ, ÞÅÍ ×ÏÓÍÅpÉÞÎÙÊ ÎÏÌØ ÏÔÌÉÞÁÅÔÓÙÁ ÏÔ ÄÅÓÑÔÉÞÎÏÇÏ.

DT> ÷ÏÏÂÝÅ ÇÌyÐÁÑ ÉÄÅÑ. ó ËÁËÏÊ ÓÔÁÔÉ ÞÉÓÌÏ, ÎÁÞÉÎÁÀÝÅÅÓÑ Ó ÎyÌÑ, DT> ÁÓÓÏÃÉÉpyÅÔÓÑ Ó ×ÏÓØÍÅpÉÞÎÏÓÔØÀ? HÁÄÏ ÂÙÌÏ ÄÅÌÁÔØ, ÎÁÐpÉÍÅp, 0q. éÌÉ DT> ËÁË × ÁÓÓÅÍÂÌÅpÅ, Ó ÐÏÍÏÝØÀ ÓyÆÆÉËÓÏ×.

ôpÁÄÉÃÉÑ, ÏÄÎÁËÏ. ðÏ×ÅÌÁÓØ, ÐÏ-×ÉÄÉÍÏÍy, ÏÔ ÂyË×Ù O - OCTAL.

Michael G. Belousoff mickbell(dog)r66(dot)ru

formatting link
... ==== ðpÏÂÌÅÍy ÎÁÄÏ pÅÛÁÔØ ÄÏ ÔÏÇÏ, ËÁË ÏÎÁ ÐÏÑ×ÉÔÓÑ. ====

ðpÉ×ÅÔ, Sergey. ÷ÏÔ ÞÔÏ Sergey Brylew wrote to Dimmy Timchenko:

DT>> K1-10 - ÜÔÏ, ÅÓÌÉ Ñ ÎÅ ÐyÔÁÀ, ÔÁËÁÑ ÆÉÔÀÌØËÁ Ó HEX-ËÌÁ×ÉÁÔypÏÊ, DT>> ÇÄÅ DT>> ÐpÏÇpÁÍÍÁ ÎÁÂÉ×ÁÌÁÓØ × ËÏÄÁÈ. á ë1-30 - ÜÔÏ yÖÅ ÂÙÌÁ ÷åýø. :) DT>> HÁ ÌÉÃÅ×ÏÊ DT>> ÐÁÎÅÌÉ ÍÏÖÎÏ ÂÙÌÏ ÎÁÂpÁÔØ, ÎÁÐpÉÍÅp, ÁÄpÅÓ ÏÓÔÁÎÏ×Á, ËÁËÉÅ-ÔÏ DT>> ÄÁÎÎÙÅ, yÖÅ DT>> ÎÅ ÐÏÍÎÀ... Hy É ÔÅpÍÉÎÁÌ É ÄÉÓËÏ×ÏÄ.

SB> ðyÔÁÅÛØ, ÚÁÂÙÌ :)) üÔÏ ÔÙ ÓyÐÅpËÏÎÔpÏÌÌÅp K1-20 ÏÐÉÓáÌ. á ë1-10 SB> ×ÎÅÛÎÅ ÏÔ K1-30 ÎÉËÁË ÎÅ ÏÔÌÉÞÁÌÁÓØ. á × ë1-20 ÔÏÖÅ ÐÏÌØÚÁ ÂÙÌÁ. ôyÄÁ SB> ÄÏÓÔÁÔÏÞÎÏ ÍÎÏÇÏ ðúõ ÍÏÖÎÏ ÂÙÌÏ ×ÓÔÁ×ÉÔØ.

ïÔ 5-×ÏÌØÔÏ×ÏÇÏ ÉÓÔÏÞÎÉËÁ ÏÎ ÖpÁÌ 5 ÁÍÐÅp. ðyÌØÔ ÂÙÌ ÓÔpÁÛÎÏ ÎÅÎÁģÖÅÎ. á pÁÚߣÍ ÏÄÎÁÖÄÙ yÄÁÌÏÓØ ×ÓÔÁ×ÉÔØ ××ÅpÈ ÎÏÇÁÍÉ, ÐÏ ËÏÔÏpÏÍy ÐÉÔÁÎÉÅ ÐÏÄÁ×ÁÌÏÓØ. õpÏÄÙ! ôÁËyÀ ÇÏףÎÎyÀ ÐÌÁÓÔÍÁÓÓy ÎÁ ÜÔÏ ÄÅÌÏ... ëÏpÏÞÅ, ÓÄÏÈ ÂÏÂÉË, ÃÁpÓÔ×Ï ÅÍy ÎÅÂÅÓÎÏÅ. é ×ÅÄØ ÚÁ ÜÔÉÍÉ ypÏÄÃÁÍÉ Ñ ÌÉÞÎÏ × þÅpÎÉÇÏ×ÓËyÀ ÏÂÌÁÓÔØ ÇÏÎÑÌ, ËÁË ÝÁÓ ÐÏÍÎÀ: ÇÏpÏÄ âÏpÚÎÁ. óÁÍÏ×Ù×ÏÚÏÍ ÎÁ ÓÅÂÅ Уp. äÌÑ ðúõ ÔÁÍ, ÍÅÖÄy ÐpÏÞÉÍ, ×ÓÅÇÏ Ä×Á ÓÏËÅÔÁ ÂÙÌÏ. ÷ ÏÄÎÏÍ, ÅÓÌÉ ÓËÌÅpÏÚ ÎÅ ×p£Ô, ÂÙÌÁ ðúõ Ó ËÁËÉÍÉ-ÔÏ ÆyÎËÃÉÑÍÉ pÁÂÏÔÙ Ó ÐyÌØÔÏÍ. ðpÁ×ÄÁ, ÍÙ ţ ÉÚ×ÌÅËÁÌÉ, Á ÆyÎËÃÉÉ ÄÌÑ pÁÂÏÔÙ Ó ÐyÌØÔÏÍ ÄÅÌÁÌÉ Ó×ÏÉ. é Åݣ, ÄÁÂÙ ×ÏÓÓÔÁÎÏ×ÉÔØ ÉÓÔÏpÉÞÅÓËyÀ ÓÐpÁ×ÅÄÌÉ×ÏÓÔØ. ë1-20 ÐÏÔÏÍ ÐÅpÅÉÍÅÎÏ×ÁÌÉ × "üÌÅËÔpÏÎÉËy íó2702".

Michael G. Belousoff mickbell(dog)r66(dot)ru

formatting link
... ==== ðpÏÂÌÅÍy ÎÁÄÏ pÅÛÁÔØ ÄÏ ÔÏÇÏ, ËÁË ÏÎÁ ÐÏÑ×ÉÔÓÑ. ====

ðÒÉ×ÅÔ Dmitry!

24 Oct 05 15:24, Dmitry Orlov ÐÉÓÁÌ Alex Mogilnikov:

AM>> äÁ ÐÒÏÓÔÏ Ñ ÎÉËÏÇÄÁ ÎÅ ×ÓÔÒÅÞÁÌ ÔÁËÏÇÏ. ÷ÓÅÇÄÁ, ËÁË

DO> óÔÒÁÎÎÏ. ôÙ ÄÌÑ ÍÅÌËÉÈ ×ÓÔÒÁÉ×ÁÅÍÙÈ ÓÉÓÔÅÍ ÂÅÚ ÐÏÄÄÅÒÖËÉ ïó ×ÏÏÂÝÅ DO> ÐÉÓÁÌ ÞÔÏ-ÎÉÂÕÄØ?

÷-ÏÓÎÏ×ÎÏÍ ÄÌÑ ÔÁËÉÈ É ÐÉÓÁÌ. :)

AM>> ÍÉÎÉÍÕÍ, ÔÁÂÌÉÃÁ ×ÅËÔÏÒÏ× ÐÒÅÒÙ×ÁÎÉÊ Õ ÍÅÎÑ ÂÙÌÁ ÓÄÅÌÁÎÁ ÎÁ AM>> ÁÓÓÅÍÂÌÅÒÅ.

DO> HÅÔ × ÜÔÏÍ ÎÉËÁËÏÊ ÎÅÏÂÈÏÄÉÍÏÓÔÉ. ñ ÎÅ ×ÓÔÒÅÞÁÌ ËÏÍÐÉÌÑÔÏÒÁ, ËÏÔÏÒÙÊ DO> ÂÙ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÌ ÐÏÄÏÂÎÕÀ ×ÏÚÍÏÖÎÏÓÔØ.

÷ÏÔ ÓÅÊÞÁÓ ÓÍÕÔÎÏ ÐÒÉÐÏÍÉÎÁÀ, ÞÔÏ × ÄÒÅ×ÎÅÍ IAR ÄÌÑ C51 ÂÙÌÁ ËÁËÁÑ-ÔÏ ËÏÎÓÔÒÕËÃÉÑ ÔÉÐÁ interrupt 0x10 voif func() {} ÎÏ ÎÅ ÐÏÍÎÀ, ÞÔÏÂÙ Ñ ÜÔÏ ÉÓÐÏÌØÚÏ×ÁÌ, É ÞÔÏ ÐÏÌÕÞÁÅÔÓÑ ÐÏÓÌÅ ËÏÍÐÉÌÑÃÉÉ. ÷ÏÔ ÓÅÊÞÁÓ ÐÅÒÅÓÍÏÔÒÅÌ ÄÏËÕ ÐÏ gcc, ËÏÔÏÒÙÍ Ñ ×-ÏÓÎÏ×ÎÏÍ ÐÏÌØÚÕÀÓØ, × ÎÅÍ ÁÔÒÉÂÕÔÙ ÔÉÐÁ interrupt, signal É Ô.Ð. ÍÅÎÑÀÔ Õ ÆÕÎËÃÉÉ entry/exit ËÏÄ, ÎÏ ÅÊ ×ÓÅ ÒÁ×ÎÏ ËÁË-ÔÏ ÎÁÄÏ ÐÅÒÅÄÁÔØ ÕÐÒÁ×ÌÅÎÉÅ, ÈÏÔÑ ÂÙ ÏÄÎÏÊ ËÏÍÁÎÄÏÊ jmp.

AM>> HÏ, ÎÁ×ÅÒÎÏÅ, AM>> ÎÉÞÔÏ ÎÅ ÍÅÛÁÅÔ ÐÒÅÄÕÓÍÏÔÒÅÔØ ×ÓÅ ÜÔÏ × ËÏÍÐÉÌÑÔÏÒÅ. ôÏÌØËÏ AM>> ËÁË-ÔÏ ÎÅÇÉÂËÏ ÜÔÏ ÐÏÌÕÞÁÅÔÓÑ, É ÏÞÅÎØ ÕÖ ÐÒÉ×ÑÚÁÎÏ Ë ËÏÎËÒÅÔÎÏÍÕ AM>> ÐÒÏÃÅÓÓÏÒÕ.

DO> á ËÕÄÁ ÄÅ×ÁÔØÓÑ? ðÒÉ ÐÅÒÅÎÏÓÅ ÎÁ ÄÒÕÇÏÊ ÐÒÉÊÄÅÔÓÑ ÜÔÉ ÍÅÓÔÁ DO> ÐÅÒÅÄÅÌÁÔØ.

üÔÏ ÆÉÇÎÑ, ÐÒÉ ÐÏÑ×ÌÅÎÉÉ ÎÏ×ÏÊ ÍÏÄÉÆÉËÁÃÉÉ ÐÒÏÃÅÓÓÏÒÁ × ÔÏÍ ÖÅ ÓÅÍÅÊÓÔ×Å ÐÒÉÄÅÔÓÑ ÍÏÄÉÆÉÃÉÒÏ×ÁÔØ ËÏÍÐÉÌÑÔÏÒ ÞÔÏÂÙ ÎÁÐÒÉÍÅÒ ÄÏÂÁ×ÉÔØ ÐÏÄÄÅÒÖËÕ ÎÏ×ÏÇÏ ×ÅËÔÏÒÁ ÉÌÉ ÉÓËÌÀÞÅÎÉÑ. ÷ÓÅÇÏ ÎÁÉÌÕÞÛÅÇÏ, [Team PCAD 2000] áÌÅËÓÅÊ í. ... G8: ÉÎÏÇÄÁ ÌÕÞÛÅ ÄÉÒÉÖÉÒÏ×ÁÔØ, ÞÅÍ ÇÏ×ÏÒÉÔØ.

Hello Vladimir.

24 Oct 05 21:45, Vladimir Vassilevsky wrote to Dmitry Orlov:

DO>> inline - ÎÅ ÇÁÒÁÎÔÉÒÕÅÔ ÔÏÇÏ, ÞÔÏ ËÏÄ ÂÕÄÅÔ ÉÍÅÎÎÏ inline. DO>> íÁËÒÏÓ - ÇÁÒÁÎÔÉÒÕÅÔ.

VV> ÷×ÉÄÕ ÔÏÇÏ, ÞÔÏ ÏÐÅÒÁÃÉÑ copy-paste Ñ×ÌÑÅÔÓÑ ÏÓÎÏ×ÎÙÍ ÓÏ×ÒÅÍÅÎÎÙÍ VV> ÍÅÔÏÄÏÍ ÄÌÑ code reuse, ÐÒÏÄ×ÉÎÕÔÙÅ ËÏÍÐÉÌÅÒÙ ÕÍÅÀÔ ÓÁÍÉ ÓËÌÁÄÙ×ÁÔØ VV> ÏÄÉÎÁËÏ×ÙÊ ËÏÄ × ÆÕÎËÃÉÉ. ôÁË ÄÅÌÁÅÔ, ÎÁÐÒÉÍÅÒ, IAR. óÏÏÔ×ÅÔÓÔ×ÅÎÎÏ VV> ÍÁËÒÏÓÙ ÎÅ ÇÁÒÁÎÔÉÒÕÀÔ ÉÎÌÁÊÎÏ×ÏÓÔÉ.

ëÒÕÔÏ! HÁÛÌÏÓØ ÓÒÅÄÓÔ×Ï ÐÒÏÔÉ× ÉÎÄÀËÏ× :) èÏÔÑ ÄÕÓÔ, ËÏÎÅÞÎÏ ÖÅ, ÌÕÞÛÅ :)

Dmitry

ðpÉ×ÅÔ, Olga. ÷ÏÔ ÞÔÏ Olga Nonova wrote to Dmitry Orlov:

MB>>> úpÑ ÔÙ ÔÁË. PL/M ÐÏÄÈÏÄÉÔ, ÔÏÞÎÅÅ, ÐÏÄÈÏÄÉÌ, É ÎÅÐÌÏÈÏ, ÄÌÑ MB>>> i8080. ðpÁ×ÄÁ, ÔÏÔ PL/M-80, ËÏÔÏpÙÊ ÂÙÌ y ÍÅÎÑ (Á pÁÂÏÔÁÌ ÏÎ

DO>> 8080 - ÐpÏÃÅÓÓÏp, Á ÎÅ ËÏÎÔpÏÌÌÅp. é ÄÌÑ ÐÏÓÔpÏÅÎÉÑ pÁÂÏÔÁÀÝÅÊ DO>> ÓÉÓÔÅÍÙ ÔpÅÂÏ×ÁÌ ËyÞÉ ÏÂ×ÑÚËÉ. ÷ ÔÅ ×pÅÍÅÎÁ (ËÏÎÅà ×ÏÓØÍÉÄÅÓÑÔÙÈ) Ñ DO>> ÄÌÑ ÎÅÇÏ ÐÉÓÁÌ ×ÏÏÂÝÅ × ËÏÄÁÈ. áÓÓÅÍÂÌÅpÁ É ÔÏÇÏ, ÎÁ ÞÅÍ ÅÇÏ ÍÏÖÎÏ DO>> ÚÁÐyÓÔÉÔØ ÐÏ ÎÁÞÁÌy ÎÅ ÂÙÌÏ.

ON> üÔÏ y ÷ÁÓ "ÎÅ ÂÙÌÏ". á × ÐpÉÌÉÞÎÙÈ ÍÅÓÔÁÈ ÐpÉÌÉÞÎÙÅ ÌÀÄÉ ×ÐÏÌÎÅ ON> yÓÐÅÛÎÏ pÁÂÏÔÁÌÉ ÎÁ ÓÉÓÔÅÍÁÈ Intelec ÐÏÄ ISIS-II, ÇÄÅ ×ÓÅ yÖÅ ÂÙÌÏ: É ON> ÍÁËpÏÁÓÓÅÍÂÌÅpÙ, É ËÏÍÐÉÌÑÔÏp PLM80, É ÌÉÎËÅpÙ Ó ÂÉÂÌÉÏÔÅËÁpÑÍÉ. üÔÏ ON> yÖÅ × ÎÁÞÁÌÅ 80-È × óóóò. á × ËÏÎÃÅ 80-È yÖÅ ×Ï×ÓÀ ÏÐÅpÁÃÉÏÎËy ISIS É ON> ×ÅÓØ ÓÏÆÔ ÏÔ Intel ÜÍyÌÉpÏ×ÁÌÉ ÎÁ IBM-ÐÅpÓÏÎÁÌËÁÈ ÄÌÑ 51-ÇÏ ÓÅÍÅÊÓÔ×Á ON> yÖÅ ÐpÁËÔÉÞÅÓËÉ ÐÏ×ÓÅÍÅÓÔÎÏ, ÞyÔØ ÌÉ ÎÅ × äÏÍÁÈ ÐÉÏÎÅpÏ×. ñ ÎÅ ÚÎÁÀ, ON> ÇÄÅ ÷Ù ÂÙÌÉ × ÔÏ ×pÅÍÑ, ÎÏ ×ÅÓÔÉ ÌÅÇËÏÍÙÓÌÅÎÎÙÅ pÁÚÇÏ×ÏpÙ ÐpÏ ON> yÝÅpÂÎÏÓÔØ PLM ÷ÁÍ Ñ×ÎÏ ÎÅ ÓÌÅÄyÅÔ.

ïÌÅÎØËÁ, ÷Ù ÐÏÞÅÍy ÔÁËÁÑ ÚÌÁÑ? äÁÍÅ, ÄÁÖÅ ×ÉpÔyÁÌËÅ, ÚÌÏÓÔØ ÎÅ Ë ÌÉÃy, ÍÏpÝÉÎÙ ÐÏÑ×ÑÔÓÑ. íÏÖÎÏ, Ñ ÷ÁÍ Ã×ÅÔÏÞÅË ÐÏÄÁpÀ? ÷ÏÔ, ÐpÉÍÉÔÅ:

@->-->---

÷ ËÏÎÃÅ 80-È ÇÏÄÏ× × óóóò × pÁÚÎÙÈ ÍÅÓÔÁÈ ÂÙÌÏ ÐÏ-pÁÚÎÏÍy. HÏ ÎÉËÁËÏÇÏ "ÐpÁËÔÉÞÅÓËÉ ÐÏ×ÓÅÍÅÓÔÎÏ ISIS É i51" ÎÅ ÂÙÌÏ.

Michael G. Belousoff mickbell(dog)r66(dot)ru

formatting link
... ==== ðpÏÂÌÅÍy ÎÁÄÏ pÅÛÁÔØ ÄÏ ÔÏÇÏ, ËÁË ÏÎÁ ÐÏÑ×ÉÔÓÑ. ====

ðÒÉ×ÅÔ Dmitry!

24 Oct 05 16:00, Dmitry Orlov ÐÉÓÁÌ Alex Mogilnikov:

AM>> ÉÓÐÏÌØÚÕÅÍÏÇÏ ÐÒÏÃÅÓÓÏÒÁ). HÏ ×ÙÚÙ×ÁÌÁÌÓØ ÜÔÁ ÆÕÎËÃÉÑ ×ÓÅ AM>> ÒÁ×ÎÏ ÉÚ ÁÓÓÅÍÂÌÅÒÎÏÇÏ ÍÏÄÕÌÑ, ÎÁÐÒÉÍÅÒ ËÏÍÁÎÄÏÊ jmp AM>> int_handler × ÔÁÂÌÉÃÅ ×ÅËÔÏÒÏ× ÐÒÅÒÙ×ÁÎÉÊ.

DO> HÕ ÄÁ, ÔÁË É ÐÒÏÉÓÈÏÄÉÔ, ÜÔÏ ÏÔ ÑÚÙËÁ ÎÅ ÚÁ×ÉÓÉÔ.

âÌÉÎ, Á ÍÎÅ ÔÕÔ ÔÏÌØËÏ ÎÅÄÁ×ÎÏ DT ÇÏ×ÏÒÉÌ, ÞÔÏ ×ÙÚÙ×ÁÔØ ÐÁÓËÁÌÅ×ÓËÕÀ ÐÒÏÃÅÄÕÒÕ ÉÚ ÁÓÓÍÂÌÒÅÒÁ - ÉÚ×ÒÁÝÅÎÉÅ! :)

DO> åÄÉÎÓÔ×ÅÎÎÏÅ, ÔÁË DO> ËÁË ÔÕÒÂÏÐÁÓËÁÌØ ÐÒÅÄÐÏÌÁÇÁÅÔ ÎÁÐÉÓÁÎÉÅ _ÔÏÌØËÏ_ ÄÏÓÏ×ÓËÉÈ ÐÒÏÇÒÁÍÍ, DO> ÔÁÍ ÎÁÄÏ getvector/setvector ÓÄÅÌÁÔØ, ÞÔÏÂÙ ÕÓÔÁÎÏ×ÉÔØ ×ÅËÔÏÒ DO> ÏÂÒÁÂÏÔÞÉËÁ ÎÁ Ó×ÏÀ ÆÕÎËÃÉÀ.

ôÙ ÔÁËÉÅ ÎÁÚ×ÁÎÉÑ ÇÏ×ÏÒÉÛØ... ñ ÐÏÍÎÀ, ÞÔÏ ÌÅÔ ÔÁË ÍÎÏÇÏ ÎÁÚÁÄ Ñ ÉÈ ÚÎÁÌ, ÎÏ ÓÅÊÞÁÓ, ÈÏÔØ ÕÂÅÊ, ÎÅ ÐÏÍÎÀ, ÞÔÏ ÜÔÏ ÔÁËÏÅ. :) üÔÏ ÔÁËÉÅ ÆÕÎËÃÉÉ int 21?

DT>>> üÔÏ ÔÙ Ï ޣÍ ×ÏÏÂÝÅ?

AM>> ï ÔÏÍ ÞÔÏ ÉÚ ÎÅÐÁÓËÁÌÅ×ÓËÏÊ ÆÕÎËËÃÉÉ ÎÅÌØÚÑ ×ÙÚ×ÁÔØ AM>> ÐÁÓËÁÌÅ×ÓËÕÀ. óËÁÖÅÍ, ÅÓÌÉ ÂÙ ÒÁÂÏÔÁ Ó ÓÅÍÁÆÏÒÁÍÉ ÂÙÌÁ

DO> íÏÖÎÏ, ÐÏÞÅÍÕ ÎÅÔ?

äÙË, Ñ ÔÁË ÐÏÎÑÌ ÓÏ ÓÌÏ× DT ÞÔÏ ÎÅÌØÚÑ. ÷ÅÒÏÑÔÎÏ, ÐÏÎÑÌ ÎÅÐÒÁ×ÉÌØÎÏ.

DO> HÅÌØÚÑ × ÒÁÍËÁÈ ÔÕÒÂÏÐÁÓËÁÌÑ ÓÄÅÌÁÔØ ÐÒÏÅËÔ ÎÁ ó, Á DO> ÞÁÓÔØ ÅÇÏ ÎÁ ðÁÓËÁÌÅ, ÐÏÔÏÍÕ ÞÔÏ rtl ÐÁÓËÁÌÅ×ÓËÉÊ ÔÁË ÓÄÅÌÁÎ, ÞÔÏ DO> ÒÁÓÐÏÔÒÏÛÉÔØ ÅÇÏ ÎÅÌØÚÑ É ËÏÍÐÉÌÉÒÕÅÔ ÐÁÓËÁÌØ ÎÅ × ÏÂßÅËÔÎÉË DO> ÓÔÁÎÄÁÒÔÎÙÊ, Á Ó×ÏÊ ÎÅÓÏ×ÍÅÓÔÉÍÙÊ ÎÉ Ó ÞÅÍ ÆÏÒÍÁÔ.

þÔÏ-ÔÏ ×Ù Ó DT ÎÁ ÐÁÒÕ ÍÅÎÑ ÓÏ×ÓÅÍ ÚÁÐÕÔÁÌÉ. :) á ËÁË ÔÏÇÄÁ ÏÎ ÌÉÎËÕÅÔÓÑ Ó ÁÓÓÅÍÂÌÅÒÎÙÍ ÍÏÄÕÌÅÍ? C ÏÔ ÁÓÓÅÍÂÌÅÒÁ × ÄÁÎÎÏÍ ËÏÎÔÅËÓÔÅ ÎÉÞÅÍ ÎÅ ÏÔÌÉÞÁÅÔÓÑ - ÐÏÓÌÅ ËÏÍÐÉÌÑÃÉÉ C × ÁÓÓÅÍÂÌÅÒ É ÐÒÅ×ÒÁÝÁÅÔÓÑ. ñ ÎÅ ×ÉÖÕ ÒÁÚÎÉÃÙ ÍÅÖÄÕ "ÐÒÏÅËÔ ÎÁ C, Á ÞÁÓÔØ ÎÁ ðÁÓËÁÌÅ" É "ÐÒÏÅËÔ ÎÁ ðÁÓËÁÌÅ, Á ÞÁÓÔØ ÎÁ C". åÓÔØ ÐÒÏÅËÔ, ÞÁÓÔØ ÎÁ C, Á ÞÁÓÔØ - ÎÁ ðÁÓËÁÌÅ. ëÔÏ ÞØÑ ÞÁÓÔØ - éíèï ×ÏÐÒÏÓ ÔÅÒÍÉÎÏÇÏÌÉÉ. ïÊ, ÔÏ ÅÓÔØ ÔÅÒÍÉÎÏÌÏÇÉÉ. :))) ÷ÓÅÇÏ ÎÁÉÌÕÞÛÅÇÏ, [Team PCAD 2000] áÌÅËÓÅÊ í. ... ï ÓËÏÌØËÏ ÎÁÍ ÏÔËÒÙÔÉÊ ÞÕÄÎÙÈ ÇÏÔÏ×ÉÔ ÏÔËÒÙ×ÁÛËÉ ËÒÀË!

Hello, Alex Mogilnikov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 24 Oct 2005 19:37:45

+0400:

AM>>> Да просто я никогда не встречал такого. Всегда, как

DO>> Странно. Ты для мелких встраиваемых систем без поддержки ОС DO>> вообще писал что-нибудь?

AM> В-основном для таких и писал. :)

На С? И не знаешь как на нем обработчики прерываний пишутся?

AM>>> минимум, таблица векторов прерываний у меня была сделана на AM>>> ассемблере.

DO>> Hет в этом никакой необходимости. Я не встречал компилятора, DO>> который бы не поддерживал подобную возможность.

AM> Вот сейчас смутно припоминаю, что в древнем IAR для C51 AM> была какая-то конструкция типа interrupt 0x10 voif func() {}

В любом виденном мною С для однокристаллок была та или иная форма для определения обработчика прерывания. Иногда их сразу несколько разных было (вероятно для поддержки предыдущей версии).

AM> но не помню, чтобы я это использовал, и что получается после AM> компиляции. Вот сейчас пересмотрел доку по gcc, которым я AM> в-основном пользуюсь, в нем атрибуты типа interrupt, signal и AM> т.п. меняют у функции entry/exit код, но ей все равно как-то AM> надо передать управление, хотя бы одной командой jmp.

И какие с этим проблемы?

AM>>> Hо, наверное, ничто не мешает предусмотреть все это в AM>>> компиляторе. Только как-то негибко это получается, и очень AM>>> уж привязано к конкретному процессору.

DO>> А куда деваться? При переносе на другой прийдется эти места DO>> переделать.

AM> Это фигня, при появлении новой модификации процессора в AM> том же семействе придется модифицировать компилятор чтобы AM> например добавить поддержку нового вектора или исключения.

Что за странная мысль, зачем?

dima

formatting link

Hello, Alex Mogilnikov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 24 Oct 2005 20:11:49

+0400:

AM>>> используемого процессора). Hо вызывалалсь эта функция все AM>>> равно из ассемблерного модуля, например командой jmp AM>>> int_handler в таблице векторов прерываний.

DO>> Hу да, так и происходит, это от языка не зависит.

AM> Блин, а мне тут только недавно DT говорил, что вызывать AM> паскалевскую процедуру из ассмблрера - извращение! :)

Да он периодически странные вещи говорит. То что для сложения байт компилятор обязан инты использовать, то еще что-то такое, непонятно откуда взятое.

DO>> Единственное, так как турбопаскаль предполагает написание DO>> _только_ досовских программ, там надо getvector/setvector DO>> сделать, чтобы установить вектор обработчика на свою функцию.

AM> Ты такие названия говоришь... Я помню, что лет так много AM> назад я их знал, но сейчас, хоть убей, не помню, что это AM> такое. :) Это такие функции int 21?

Да не важно, это средство переустановить вектор на себя. Можно и прямым обращением к памяти это сделать, но могут быть проблемы со всякими экстендерами.

DT>>>> Это ты о чём вообще?

AM>>> О том что из непаскалевской функкции нельзя вызвать AM>>> паскалевскую. Скажем, если бы работа с семафорами была

DO>> Можно, почему нет?

AM> Дык, я так понял со слов DT что нельзя. Вероятно, понял неправильно.

Вероятно, потому как я текое делал и статически и динамически (в смысле передавая адрес функции другому коду).

DO>> Hельзя в рамках турбопаскаля сделать проект на С, а часть DO>> его на Паскале, потому что rtl паскалевский так сделан, что DO>> распотрошить его нельзя и компилирует паскаль не в объектник DO>> стандартный, а свой несовместимый ни с чем формат.

AM> Что-то вы с DT на пару меня совсем запутали. :) А как AM> тогда он линкуется с ассемблерным модулем?

Директивой {$L objname.obj}, единственное, в obj почему-то не должно быть инициализированных глобальных данных. Их надо в паскалевской части писать

AM> C от ассемблера в данном контексте ничем не отличается - AM> после компиляции C в ассемблер и превращается.

Да, конечно. Причем превращать в ассемблер не нужно, достаточно obj сделать

AM> Я не вижу разницы между "проект на C, а часть на Паскале" AM> и "проект на Паскале, а часть на C". Есть проект, часть на C, а часть - на AM> Паскале. Кто чья часть - ИМХО вопрос терминоголии. Ой, то есть AM> терминологии. :)))

Вопрос чем ты его собирать будешь. Паскалем собрать можно, но только с паскалевским неизменяемым (в интерфейсной части) rtl и стартапом, а с сишным - не получится, потому как ТР obj генерировать не умеет, в чем и состояит одна из его ущербностей.

dima

formatting link

Mon Oct 24 2005 21:09, Dmitry Orlov wrote to Dimmy Timchenko:

DO> inline - ÎÅ ÇÁÒÁÎÔÉÒÕÅÔ ÔÏÇÏ, ÞÔÏ ËÏÄ ÂÕÄÅÔ ÉÍÅÎÎÏ inline. íÁËÒÏÓ - DO> ÇÁÒÁÎÔÉÒÕÅÔ.

÷×ÉÄÕ ÔÏÇÏ, ÞÔÏ ÏÐÅÒÁÃÉÑ copy-paste Ñ×ÌÑÅÔÓÑ ÏÓÎÏ×ÎÙÍ ÓÏ×ÒÅÍÅÎÎÙÍ ÍÅÔÏÄÏÍ ÄÌÑ code reuse, ÐÒÏÄ×ÉÎÕÔÙÅ ËÏÍÐÉÌÅÒÙ ÕÍÅÀÔ ÓÁÍÉ ÓËÌÁÄÙ×ÁÔØ ÏÄÉÎÁËÏ×ÙÊ ËÏÄ × ÆÕÎËÃÉÉ. ôÁË ÄÅÌÁÅÔ, ÎÁÐÒÉÍÅÒ, IAR. óÏÏÔ×ÅÔÓÔ×ÅÎÎÏ ÍÁËÒÏÓÙ ÎÅ ÇÁÒÁÎÔÉÒÕÀÔ ÉÎÌÁÊÎÏ×ÏÓÔÉ.

VLV

"çÒÉÇÏÒÉÊ ëÏÔÏ×ÓËÉÊ ÏÇÒÁÂÉÌ ÇÏÒÏÄÓËÕÀ ÔÀÒØÍÕ..." (c) CÏÌÖÅÎÉÃÙÎ

Hi Dimmy !

óÏ×ÓÅÍ ÎÅÄÁ×ÎÏ 24 Oct 05 14:45, Dimmy Timchenko ÐÉÓÁÌ Ë Ruslan Mohniuc:

RM>> ÷ ÓÍÙÓÌÅ ÏÒÇÁÎÉÚÏ×ÁÔØ ËÁË ÍÁÓÓÉ× ÓÔÒÕËÔÕÒ? ðÒÏÂÏ×ÁÌ ËÏÎÅÞÎÏ, ÅÝÅ RM>> × Ä×Á ÒÁÚÁ ÈÕÖÅ ËÏÄ ÇÅÎÅÒÉÔÓÑ.

DT> ñÓÎÏ... Ñ, ÞÅÓÔÎÏ ÇÏ×ÏÒÑ, ÐÉËÏ× ÐÏÞÔÉ ÎÅ ÚÎÁÀ, É ÎÅ × ËÕÒÓÅ, ÍÏÖÎÏ ÌÉ DT> ÔÁÍ ËÏÓ×ÅÎÎÏ ÏÂÒÁÔÉÔØÓÑ Ë ÐÏÒÔÕ. ÷ÏÔ × 51-Í ÎÅÌØÚÑ, Á × MSP430, DT> ÎÁÏÂÏÒÏÔ, ×ӣ ÏÒÔÏÇÏÎÁÌØÎÏ É ÓÉÍÍÅÔÒÉÞÎÏ. :) ÷ ðÉËÁÈ ÍÏÖÎÏ, ÔÁË ËÁË ×ÓÅ ÐÏÒÔÙ ÏÔÒÁÖÅÎÙ × ÐÁÍÑÔØ. á ×ÏÔ ËÏÓ×ÅÎÎÏÊ ÁÄÒÅÓÁÃÉÉ ÂÉÔÁ ÔÕÔ ÎÅÔ. :) ôÕÔ, ÉÚ×ÉÎÉÔÅ, ÏÔ ÂÁÊÔÁ ÐÌÑÓÁÔØ ÐÒÉÈÏÄÉÔØÓÑ. á ÞÔÏ, × 430-Í Õ ËÁÖÄÏÇÏ ÂÉÔÉËÁ Ó×ÏÊ ÕËÁÚÁÔÅÌØ ÍÏÖÅÔ ÂÙÔØ? ö)

DT> ÷ÒÏÄÅ, ÎÁÇÌÑÄÎÅÅ ÐÉÓÁÔØ pnt->Nbit? öÁÌØ, ÞÔÏ ÜÔÏ ÍÏÖÎÏ ÄÅÌÁÔØ ÔÏÌØËÏ DT> ÓÏ ÓÔÒÕËÔÕÒÁÍÉ. :) HÕ, ÎÁÇÌÑÄÎÏÓÔØ- ÛÔÕËÁ ÏÔÎÏÓÉÔÅÌØÎÁÑ. íÎÅ ÎÁÇÌÑÄÎÅÊ ÞÅÒÅÚ ÔÏÞËÕ.

RM>> åÓÌÉ ÍÁËÒÏÓÏÍ - ÔÏ × ËÏÄÅ ÐÏÌÕÞÁÅÔÓÑ Com1.Nbit. ôÕÔ ×ÙÞÉÓÌÑÔØ RM>> ÒÁÓÐÏÌÏÖÅÎÉÅ ÜÌÅÍÅÎÔÁ ÎÅ ÎÕÖÎÏ, ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ É ËÏÄ ÍÅÎØÛÅ.

DT> ðÏÎÑÔÎÏ. ÷ ÏÂÝÅÍ, ÔÅÂÅ ×ÉÄÎÅÅ. HÏ Ñ ÂÙ Ï ÍÁËÒÏÓÅ, ÔÅÍ ÂÏÌÅÅ ÓÉÛÎÏÍ, DT> ÐÏÄÕÍÁÌ ÂÙ ÔÏÌØËÏ ÔÏÇÄÁ, ËÏÇÄÁ ÒÅÁÌØÎÏÅ ×ÒÅÍÑ ÚÁ ÇÏÒÌÏ ×ÚÑÌÏ ÂÙ. :) HÕ, ÒÅÚÅÒ× ËÏÎÅÞÎÏ ÅÓÔØ, ÎÏ ÎÅ × ÔÒÉ-ÞÅÔÙÒÅ ÒÁÚÁ.

RM>> üÔÏ Ñ Ó PIC18 ÒÁÂÏÔÁÀ ÔÁË ÖÅ, ËÁË Ó PIC16 ÐÒÉ×ÙË. á ÓÅÇÏÄÎÑ RM>> ÚÁÇÌÑÎÕÌ × ÍÁÎÕÁÌ ÉÍÅÎÎÏ ÐÏ ËÏÍÐÉÌÑÔÏÒÕ picc18- ÄÁ, ÅÓÔØ ËÕÄÁ RM>> ËÏÐÁÔØ ÄÌÑ ÏÐÔÉÍÉÚÁÃÉÉ.

DT> HÁÓޣÔ PIC18 ÎÅ ÚÎÁÀ, Á ×ÏÔ ÄÏËÉ ÐÏ dsPIC ÞÉÔÁÌ - ÁÒÈÉÔÅËÔÕÒÁ ÎÁÍÎÏÇÏ DT> ÐÒÑÍÅÅ ÞÅÍ Õ "ÍÌÁÄÛÅÎØËÉÈ", É ÄÁÖÅ, ÐÒÅÄÓÔÁר ÓÅÂÅ, ÁÓÓÅÍÂÌÅÒÎÙÅ DT> ÍÎÅÍÏÎÉËÉ "ÞÅÌÏ×ÅÞÅÓËÉÅ". :) ôÙ ÚÎÁÅÛØ, Ñ ÁÂÓÏÌÀÔÎÏ ÎÅ ÐÒÅÄÓÔÁ×ÌÑÀ ÓÅÂÅ, ÞÔÏ ÔÁËÏÅ "ÞÅÌÏ×ÅÞÅÓËÉÅ" É ÞÔÏ ÔÁËÏÅ "ÎÅÞÅÌÏ×ÅÞÅÓËÉÅ" ÍÎÅÍÏÎÉËÉ. ïÎÉ ×ÓÅ "ÎÅÞÅÌÏ×ÅÞÅÓËÉÅ" :) üÔÏ ×ÓÅÇÏ ÌÉÛØ ÚÎÁËÉ, ÏÂÏÚÎÁÞÁÀÝÉÅ ËÁËÉÅ-ÔÏ ÄÅÊÓÔ×ÉÑ. ïÐÒÅÄÅÌÅÎÎÕÀ ÓÉÓÔÅÍÕ ÚÎÁËÏ× ÚÁÐÏÍÎÉÔØ ÎÅÓÌÏÖÎÏ, ËÁËÉÍÉ ÂÙ ÏÎÉ ÎÅ ÂÙÌÉ. ëÏÇÄÁ ÄÏÈÏÄÉÔ ÄÏ ËÏÄÉÒÏ×ÁÎÉÑ- ÔÏ ÁÌÇÏÒÉÔÍ ÕÖÅ ÎÁÒÉÓÏ×ÁÎ, ÏÎ ÍÏÖÅÔ ÚÁ×ÉÓÅÔØ ÏÔ ÁÒÈÉÔÅËÔÕÒÙ, ÎÏ ÁÂÓÏÌÀÔÎÏ ÎÅ ÚÁ×ÉÓÉÔ ÏÔ ÍÎÅÍÏÎÉË.

DT>>> íÁËÒÏÓÙ × C - ÜÔÏ ÎÕÌØ ÐÒÏ×ÅÒËÉ ×ÒÅÍÅÎÉ ËÏÍÐÉÌÑÃÉÉ. RM>> HÅ ÐÏÎÑÌ ÓÍÙÓÌ ÆÒÁÚÙ. ðÐÐÅÒÅ×ÅÄÉ.

DT> þÔÏ ÔÙ ÍÁËÒÏÐÒÏÃÅÓÓÏÒÕ ÓËÁÖÅÛØ - ÔÏ É ÎÁ×ÏÒÏÔÉÔ. èÏÞÅÛØ ÓËÁÚÁÔØ, ÞÔÏ × ×ÓÔÁ×ÌÅÎÎÏÍ × ÐÒÏÇÒÁÍÍÕ ÍÁËÒÏÓÅ ÎÅ ÐÒÏÉÓÈÏÄÑÔ ËÁËÉÅ-ÔÏ ÐÒÏ×ÅÒËÉ, ËÏÔÏÒÙÅ ÐÒÏÉÓÈÏÄÑÔ ÐÒÉ ÐÒÏ×ÅÒËÅ ÔÏÇÏ ÖÅ ÔÅËÓÔÁ, ÅÓÌÉ ÂÙ ÍÁËÒÏÓ ÂÙÌ ÏÆÏÒÍÌÅÎ × ×ÉÄÅ ÏÔÄÅÌØÎÏÊ ÆÕÎËÃÉÉ? ëÁËÉÅ ÖÅ?

WBRgrds Ruslan

Hello, Dimmy Timchenko! You wrote in conference fido7.ru.embedded to Alex Mogilnikov on Mon, 24 Oct 2005 13:34:25

+0400:

DT>>> Это ты о чём вообще?

AM>> О том что из непаскалевской функкции нельзя вызвать AM>> паскалевскую.

DT> Можно, вроде. Hе помню. Hельзя использовать данные, DT> объявленные в непаскалевском модуле,

Можно. Нельзя объявлять в объектнике инициализированные данные в сегмента данных.

DT> даже константные (т.е., размещённые в кодовом сегменте).

Это - сколько угодно.

DT> Только через извращение, объявив их процедурой. :)

Ну и что?

DT> Обычно, если в проекте на Паскале используют внешние модули на DT> C/Asm, то эти модули - "подчинённые". То есть смешать что-то DT> с Паскалем можно только если проект - паскалевский.

Причем это проблемы исключительно борландовской реализации. у других вполне себе получается стандартные obj/lib генерировать.

dima

formatting link

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required