Управление портом в АВР

Feb 08, 2008 103 Replies

Hello, Alexander Konosevich! You wrote in conference fido7.ru.embedded to Kirill Frolov on Sun, 24 Feb

2008 13:52:17 +0300:

AK> Hello Kirill Frolov!

AK> И каким бокoм PL-машина лучше, положим, Forth-машины ?

PL/M никакого отношения ни к какой PL машине не имел, это был фактически структурный ассемблер для 8080 и 8051 с паскаль-подобным синтаксисом. Forth на этих архитектурах (как впрочем и на большинстве других) проигрывает даже такому решению по всем статьям.

AK> PS Я ещё помню PL-I на ЕС ЭВМ (в ПДО): "ошибка в фазе транслятора AK> KG" ЖB}}}

Да мало ли что ты там помнишь, если к обсуждаемому оно никаким боком не относится?

dima

formatting link

Hello, Nickita! You wrote to Alexey Vissarionov on Sat, 23 Feb 2008 01:46:54 +0300:

NA> зевнул. NA> другие примеры:

NA> return ((int []){1,2,3,4})[1];

test.c test.c(3) : error C2059: syntax error : '{'

NA> return ({goto L; 0;}) && ({L: 5;});

test.c test.c(3) : error C2059: syntax error : '{' test.c(3) : error C2059: syntax error : ')' test.c(3) : error C2059: syntax error : '&&' test.c(3) : error C2059: syntax error : ')' test.c(4) : error C2059: syntax error : '}'

Откуда такая чушь? Какому стандарту она соответствует?

WBR, AVB

Привет, Kirill !

24 Feb 08 , 08:03 Kirill Frolov писал к Nickita A Startcev:

KF> Таки в скобках что-то должно быть и практически все компиляторы на 5 KF> хоть варнинг да выдадут.

Да. Должно быть, например, 5[c]

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... вендоры игрушек и прочие NVidia съели его мозг

Привет, Alexey !

24 Feb 08 , 21:15 Alexey V Bugrov писал к Nickita A Startcev:

NA>> зевнул. NA>> другие примеры:

NA>> return ((int []){1,2,3,4})[1];

AVB> test.c AVB> test.c(3) : error C2059: syntax error : '{'

Чем чобирал?

AVB> Откуда такая чушь? Какому стандарту она соответствует?

=== a.c === int test1() { return ((int []){1,2,3,4})[1]; }

int test2() { return ({goto L; 0;}) && ({L: 5;}); }

int test3() { static int c[10]={0,1,2,3,4,5,6,7,8,9,}; return 5[c]; }

======

C:\temp>gcc -v Reading specs from m:/bin/../lib/gcc-lib/mingw32/3.2/specs Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as

--host=mingw32 -- target=mingw32 --prefix=/mingw --enable-threads --disable-nls

--enable-languages=f77,c++,o bjc,ada --disable-win32-registry --disable-shared Thread model: win32 gcc version 3.2 (mingw special 20020817-1)

gcc -c a.c - собирает gcc -c -W -Wall a.c - собирает gcc -std=c99 -W -Wall -c a.c собирает gcc -std=c89 -W -Wall -c a.c собирает.

Какие еще стандарты вы помните?

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... "Так он не только голубой, но и доверенный" подумал Бао.

Hello Alexey.

Fri Feb 22 2008 22:38, Alexey Vissarionov wrote to Nickita A Startcev:

AV> Самое эхотажное, подо что мне доводилось собирать сишный код - это AV> ARM.

Хм, я и под AVR, и под x51 на C пишу. И под 16-битный MSP430. Очень, кстати, архитектура у него правильная. Сишный код компилируется просто идеально. :)

AV> Кстати, в свое время я видел довольно забавный язык, именуемый C-- AV> ("си минус минус")

Да, помню такой. :)

Dimmy.

Hello, Nickita! You wrote to Alexey V Bugrov on Sun, 24 Feb 2008 23:44:04 +0300:

NA>>> return ((int []){1,2,3,4})[1]; AVB>> test.c AVB>> test.c(3) : error C2059: syntax error : '{' NA> Чем чобирал?

MSVC2005.

AVB>> Откуда такая чушь? Какому стандарту она соответствует?

NA> === a.c === NA> int test1() NA> { NA> return ((int []){1,2,3,4})[1]; NA> }

$ gcc -Wextra -Wall -pedantic -ansi test.c test.c: In function `main': test.c:3: warning: ISO C90 forbids compound literals

NA> int test2() NA> { NA> return ({goto L; 0;}) && ({L: 5;}); NA> }

$ gcc -Wextra -Wall -pedantic -ansi test.c test.c: In function `test2': test.c:3: warning: ISO C forbids braced-groups within expressions test.c:3: warning: ISO C forbids braced-groups within expressions

NA> gcc -c a.c - собирает NA> gcc -c -W -Wall a.c - собирает NA> gcc -std=c99 -W -Wall -c a.c собирает NA> gcc -std=c89 -W -Wall -c a.c собирает.

Ага. Еще скажи даже ворнингов не выдает.

NA> Какие еще стандарты вы помните?

Вы таки сами посмотрите в С89 и C99. А гнусное поделие, при всех его достоинствах, слишком либерально трактует стандарты, впрочем даже оно против применения групп операторов внутри выражений.

WBR, AVB

Hello Kirill.

Sun Feb 24 2008 07:58, Kirill Frolov wrote to me:

KF> Это для тех, кто ниасилил принцип работы указателей?

Это для тех, кто не любит ножей, заточенных с обеих сторон. И без ручки. :)

Dimmy.

Привет, Alexey !

25 Feb 08 , 10:45 Alexey V Bugrov писал к Nickita A Startcev:

NA>>>> return ((int []){1,2,3,4})[1]; AVB>>> test.c AVB>>> test.c(3) : error C2059: syntax error : '{' NA>> Чем чобирал?

AVB> MSVC2005.

AVB>>> Откуда такая чушь? Какому стандарту она соответствует?

NA>> === a.c === NA>> int test1() NA>> { NA>> return ((int []){1,2,3,4})[1]; NA>> }

AVB> $ gcc -Wextra -Wall -pedantic -ansi test.c AVB> test.c: In function `main': AVB> test.c:3: warning: ISO C90 forbids compound literals

какой версии у тебя гцц? мой гцц не знает про -Wextra

NA>> int test2() NA>> { NA>> return ({goto L; 0;}) && ({L: 5;}); NA>> }

AVB> $ gcc -Wextra -Wall -pedantic -ansi test.c AVB> test.c: In function `test2': AVB> test.c:3: warning: ISO C forbids braced-groups within expressions AVB> test.c:3: warning: ISO C forbids braced-groups within expressions

убери -pedantic - и всё соберется.

NA>> gcc -c a.c - собирает NA>> gcc -c -W -Wall a.c - собирает NA>> gcc -std=c99 -W -Wall -c a.c собирает NA>> gcc -std=c89 -W -Wall -c a.c собирает.

AVB> Ага. Еще скажи даже ворнингов не выдает.

именно. без -педантик ворнингов не дает.

NA>> Какие еще стандарты вы помните?

AVB> Вы таки сами посмотрите в С89 и C99. А гнусное поделие, при всех его AVB> достоинствах, слишком либерально трактует стандарты, впрочем даже оно AVB> против применения групп операторов внутри выражений.

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

кстати, ключ -педантик форсирует применение стандарта 'iso с89', который не самый новый.

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... "кАнтора Государственной Безопасности"

Да? В GCC действительно нет. Жить не мешает. Просто от использования фич нестандартного компилятра придётся отказаться. Самое тяжёлое, наверное, битовые переменные, актуальные в основном для x51. Остальное решаеся. Да и битовые переменные скорей тоже. Это просто ум применять надо.

А вот и нет. Hу по большей части нет. Hомера строк и простые переменные сохранятся. Что, в принципе, и обеспечивает большинство IDE.

Поделка финских студентов не умеет правильно парсить исходник на ц сасёТ.

[...C--...]

А почему вы справшиваете?

PL/M != PL/I.

Hello, Kirill Frolov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 25 Feb

2008 11:46:09 +0000 (UTC):

KF> Да?

Что "да?"

KF> В GCC действительно нет. Жить не мешает.

Кому как. Мне не то чтобы мешает или не мешает, мне вообще не приемлим инструмент, не позволяющий использовать возможности кристалла. Hикак, его для меня просто не существует.

KF> Просто от использования фич нестандартного компилятра придётся KF> отказаться.

Гораздо проще отказаться от этих на фиг не нужных горбатых инструментов и их на фиг не нужных расширений в пользу действительно нужных.

KF> Самое тяжёлое, наверное, битовые переменные, актуальные в основном для KF> x51. Остальное решаеся. Да и битовые переменные скорей тоже. Это просто KF> ум применять надо.

Поймет эта программа такие описания

persistent bank2 char foo; bank2 bit bbb; void interrupt sys_int(void);

Если нет, она идет лесом в пеший эротический тур. Если да, расскажешь потом как ее с оболочкой ICE скрестить.

KF>>> Дописать пару правил в ненавистный Makefile несложно для чего, а KF>>> как быть со "средами" не знаю -- все вопросы к Биллу Гейтсу!

KF> А вот и нет. Hу по большей части нет. Hомера строк и простые KF> переменные сохранятся.

Где они сохраняются? Hа сколько я знаю, gcc позволяет скажем вложенные функции описывать, перевод этого на голый С с сохранением номеров строк и переменных - в студию. Да хотябы просто описанные внутри блока переменные:

{ case 1: { int i; ... } break;

case 2: { char i; ... } break; }

переведи на ANSI C с сохранением номеров строк и переменных.

KF> Что, в принципе, и обеспечивает большинство IDE.

Да ну?

dima

formatting link

Hello, Nickita! You wrote to Alexey V Bugrov on Mon, 25 Feb 2008 14:09:08 +0300:

NA>>> === a.c === NA>>> int test1() NA>>> { NA>>> return ((int []){1,2,3,4})[1]; NA>>> }

AVB>> $ gcc -Wextra -Wall -pedantic -ansi test.c AVB>> test.c: In function `main': AVB>> test.c:3: warning: ISO C90 forbids compound literals

NA> какой версии у тебя гцц?

3.4.4

NA> мой гцц не знает про -Wextra

Это тоже самое, что -W.

NA>>> int test2() NA>>> { NA>>> return ({goto L; 0;}) && ({L: 5;}); NA>>> }

AVB>> $ gcc -Wextra -Wall -pedantic -ansi test.c AVB>> test.c: In function `test2': AVB>> test.c:3: warning: ISO C forbids braced-groups within expressions AVB>> test.c:3: warning: ISO C forbids braced-groups within expressions

NA> убери -pedantic - и всё соберется.

Зачем? Это хоть какая-то проверка на соответствие ANSI/ISO C, хоть и не до конца работающая

AVB>> Вы таки сами посмотрите в С89 и C99. А гнусное поделие, при всех его AVB>> достоинствах, слишком либерально трактует стандарты, впрочем даже оно AVB>> против применения групп операторов внутри выражений.

NA> ... но только в педантичном режиме. а без педантика - всё нормально. NA> То есть, такие маразматические выражения таки часть языка.

ссылка на текст стандарта уже будет? А то пока мы рассуждаем о том, что Рабинович, то бишь gcc напел.

NA> кстати, ключ -педантик форсирует применение стандарта 'iso с89', NA> который не самый новый.

man gcc сам сделаешь или здесь процитировать? А то, о чем ты говоришь - ключик -ansi

Хорошо:

int test2() { return ({goto L; 0;}) && ({L: 5;}); }

$ gcc -Wextra -Wall -pedantic -std=c99 test.c test.c: In function `test2': test.c:3: warning: ISO C forbids braced-groups within expressions test.c:3: warning: ISO C forbids braced-groups within expressions

WBR, AVB

Привет, Kirill !

25 Feb 08 , 14:54 Kirill Frolov писал к Nickita A Startcev:

KF> Поделка финских студентов не умеет правильно парсить исходник на ц KF> сасёТ.

хехе. А у мелкомягких до сих пор баг с областью видимости протаскивается как фича?

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... обучающая фирма "Тантал Сизифович"

Привет, Nickita A Startcev!

25.02.2008 14:09 Вы писали:

alx2% cat test.c int test2() { return ({goto L; 0;}) && ({L: 5;}); } alx2% gcc -std=c99 -S test.c test.c: В функции 'test2' test.c:3: ошибка: jump into statement expression alx2% gcc --version gcc (GCC) 4.2.2

Есть подозрение, что вы оба используете сильно не последние версии компилятора.

Привет, Dmitry Orlov!

25.02.2008 15:33 Вы писали:

А в каком месте тут отступление от ANSI C?

AK> И каким бокoм PL-машина лучше, положим, Forth-машины ?

Я лет пятнадцать назад много писал на PL/M, работа такая была и сохранились смутные воспоминания, что PL/M к PL ну никаким боком вообще. Хорошо помню, что купил тогда книжку по PL и узнал, что оно ни хрена не PL/M, совсем про другое книжка :).

Dima

Hello, Alex Mogilnikov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 25 Feb

2008 19:01:14 +0300:

AM> Привет, Dmitry Orlov!

AM> 25.02.2008 15:33 Вы писали:

AM> А в каком месте тут отступление от ANSI C?

Да, тормознул. Hу так:

{ case 1: { for(int i=1; i<1000;i++); ... } break;

case 2: { for(char i;i<100;i++); ... } break; }

dima

formatting link

Hello Dima Badisov!

AK>> И каким бокoм PL-машина лучше, положим, Forth-машины ?

DB> Я лет пятнадцать назад много писал на PL/M, работа такая была и DB> сохранились смутные воспоминания, что PL/M к PL ну никаким боком вообще. DB> Хорошо помню, что купил тогда книжку по PL и узнал, что оно ни хрена не DB> PL/M, совсем про другое книжка :).

Hу, по "возмущённым выкрикам с мест" я уже догадался, что к оригинальному PL/I оно "никаким боком" ... "Hо здря !"(ц) Ж&}

Hello Kirill Frolov!

Потому что достаточно долго пользовал первое - и намерен попользовать второе ;)

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required