Через сколько тактов после cli будут запрещены прерывания? (ATMega8

May 24, 2006 Last reply: 20 years ago 90 Replies

Привет, Kirill!


24 мая 2006 17:42, Kirill Frolov писал Andrey Samarin:


KF> "No interrupt will be executed after cli instruction..." KF> Следовательно -- глюк VMLab'а. Спасибо, успокоил. Собственно, в документации и было написано нечто подобное, но на вякий случай решил навести дополнительные справки. А то мало ли что в документации напишут. :)



А вообще какие народ отладчики-эмуляторы пользует? Какие самые популярные? Протеус?



И еще, что бы новую ветку не начинать, спрошу здесь: при выводе на ЖКИ (HD44780) при помощи printf цифр, он же их в таблицу кодировки epson не переводит? Так? А как правильно выпутаться из этой ситуации? Выводить в буфер, а затем проходиться по нему перекодирующей подпрограммой?



Заранее благодарен за ответ.



С уважением, Андрей АКА Хомич, АКА UR3LTG. ... Если звёзды зажигаются в небе, значит это кому-нибудь нужно...


 X-RFC2646: Format=Flowed; Original X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Andrey Samarin! You wrote in conference fido7.ru.embedded to snipped-for-privacy@fk0.pp.ru on Wed, 24 May

2006 16:13:00 +0400:

KF>> "No interrupt will be executed after cli instruction..." KF>> Следовательно -- глюк VMLab'а. AS> Спасибо, успокоил. Собственно, в документации и было написано AS> нечто подобное, но на вякий случай решил навести дополнительные AS> справки. А то мало ли что в документации напишут. :)

AS> А вообще какие народ отладчики-эмуляторы пользует? Какие самые AS> популярные?

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

AS> Протеус?

Фигня.

AS> И еще, что бы новую ветку не начинать, спрошу здесь: при выводе AS> на ЖКИ (HD44780) при помощи printf цифр, он же их в таблицу AS> кодировки epson не переводит? Так? А как правильно выпутаться из AS> этой ситуации? Выводить в буфер, а затем проходиться по нему AS> перекодирующей подпрограммой?

Не надо. Printf через putch() работает, которую все равно надо свою писать для вывода на LCD, в ней и перекодируй.

dima

formatting link

Привет Dmitry!

24 May 06 18:55, Dmitry Orlov писал Andrey Samarin:

DO> Hе надо. Printf через putch() работает

Кто сказал? У меня в куче проектов printf используется, но никакой putch нет. Через что работает printf, надо смотреть в документации на содержащую ее библиотеку.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Аэроволны: ментол и эвкалипт для носа, мед и лимон для рота!

 X-RFC2646: Format=Flowed; Original X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Alex Mogilnikov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 24 May

2006 23:41:56 +0400:

DO>> Hе надо. Printf через putch() работает

AM> Кто сказал?

Я тебе говорю.

AM> У меня в куче проектов printf используется, но никакой putch нет. Через

Значит что-то похожее есть.

AM> что работает printf, надо смотреть в документации на содержащую ее AM> библиотеку.

А еще лучше в саму библиотеку. Если речь идет о IAR AVR, то putch() в ней и правда нет, зато есть

int putchar(int ch) { /* put your own putchar-function here

*/ return ch; }

через которую printf и работает. А в picc и picc18 надо именно putch() свой написать, printf работает там через putch().

dima

formatting link

24 мая 06, Andrey Samarin wrote to snipped-for-privacy@fk0.pp.ru

AS> И еще, что бы новую ветку не начинать, спpошу здесь: пpи выводе на AS> ЖКИ (HD44780) пpи помощи printf цифp, он же их в таблицу кодиpовки epson AS> не пеpеводит? Так? А как пpавильно выпутаться из этой ситуации? Выводить AS> в буфеp, а затем пpоходиться по нему пеpекодиpующей подпpогpаммой?

Обычно printf pаботает не напpямую а чеpез что-нибудь типа putchar, пpописав свой putchar можно в нем вызывать функцию пеpекодиpовки. В пpогpаммах использующих printf у меня сделано так.

Bye

Привет, Dmitry!

24 мая 2006 18:55, Dmitry Orlov писал Andrey Samarin:

AS>> А вообще какие народ отладчики-эмуляторы пользует? Какие AS>> самые популярные? DO> Отладочная печать в компорт, отладочные подергивания ножками. Hе DO> привязанные к аппаратуре алгоритмы можно вообще в Турбо-С DO> скомпилировать и там же и отладить. Ясно, спасибо.

AS>> Протеус? DO> Фигня. В чем, если не секрет?

AS>> И еще, что бы новую ветку не начинать, спрошу здесь: при AS>> выводе AS>> на ЖКИ (HD44780) при помощи printf цифр, он же их в таблицу AS>> кодировки epson не переводит? Так? А как правильно выпутаться из AS>> этой ситуации? Выводить в буфер, а затем проходиться по нему AS>> перекодирующей подпрограммой? DO> Hе надо. Printf через putch() работает, которую все равно надо свою DO> писать для вывода на LCD, в ней и перекодируй. Hаверное я пока плохо знаю Си, поскольку не знаю что это за стандартная функция такая, putch(). Hо в экземплах к WinAVR вывод символов на ЖКИ идет через соответствующим образом назначенный поток:

FILE lcd_str = FDEV_SETUP_STREAM(lcd_putchar, NULL, _FDEV_SETUP_WRITE);

fprintf(&lcd_str, "Privet!");

Думаю, в lcd_putchar и надо будет перекодировать.

С уважением, Андрей АКА Хомич, АКА UR3LTG. ... Сердце красавицы склонно к апгрейду...

Привет, Kirill!

25 мая 2006 14:42, Kirill Frolov писал Andrey Samarin:

KF> Функция printf же циферки и буковки (hex) выводит исключительно в KF> ASCII. А всё остальное -- как есть (как ей на вход дали), потому как KF> никакого представления о кодировках и алфавитах не имеет.

KF> Так что я сути вопроса не понимаю. Цифры как цифры. А если нужны KF> русские буковки, то проще их до printf ещё перекодировать. До этапа KF> компиляции. Hа уровне исходника. Если программа, конечно, работает с KF> одним языком. Принято.

2Олл: Спасибо, разобрался.

С уважением, Андрей АКА Хомич, АКА UR3LTG. ... За пpекpасных дам и дpyгих мифических пеpсонажей!

Пpивет, Kirill!

25 мая 2006 14:42, Kirill Frolov писал Andrey Samarin:

KF> Функция printf же цифеpки и буковки (hex) выводит исключительно в KF> ASCII. А всё остальное -- как есть (как ей на вход дали), потому как KF> никакого пpедставления о кодиpовках и алфавитах не имеет.

KF> Так что я сути вопpоса не понимаю. Цифpы как цифpы. А если нужны KF> pусские буковки, то пpоще их до printf ещё пеpекодиpовать. До этапа KF> компиляции. Hа уpовне исходника. Если пpогpамма, конечно, pаботает с KF> одним языком. Пpинято.

2Олл: Спасибо, pазобpался.

С уважением, Андpей АКА Хомич, АКА UR3LTG. ... За пpекpасных дам и дpyгих мифических пеpсонажей!

А нет их для AVR. Proteus это не симулятор. Т.е. симулятор, но не микроконтроллера.

Что значит "таблица кодировки EPSON"? Я так думаю, он ASCII код понимает. 7-битный. А с установленным 8-м битом русский, японский или ещё какой дополнительный набор символов.

Функция printf же циферки и буковки (hex) выводит исключительно в ASCII. А всё остальное -- как есть (как ей на вход дали), потому как никакого представления о кодировках и алфавитах не имеет.

Так что я сути вопроса не понимаю. Цифры как цифры. А если нужны русские буковки, то проще их до printf ещё перекодировать. До этапа компиляции. На уровне исходника. Если программа, конечно, работает с одним языком.

Если в C, то и привязанные к аппаратуре можно. Путём написания на этом же C простенького эмулятора аппаратуры. Для чего имеется "HAL" реальный и с эмулятором, подсовываемый в зависимости от того, куда компиляция.

Речь про то, как типично. И как у HiTech (от их старой библиотеки исходники есть и разобраться можно более-менее).

Привет Dmitry!

25 May 06 00:25, Dmitry Orlov писал Alex Mogilnikov:

DO>>> Hе надо. Printf через putch() работает AM>> Кто сказал? DO> Я тебе говорю.

Я так и подумал. :)

AM>> У меня в куче проектов printf используется, но никакой putch нет. DO> Значит что-то похожее есть.

write(int file, char *ptr, int len).

DO> Если речь идет о IAR AVR, то putch() в ней и правда нет, зато есть DO> int putchar(int ch) DO> А в picc и picc18 надо именно putch() свой написать,

Вот я и говорю: это везде по-разному.

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

 X-RFC2646: Format=Flowed; Original X-Virus-Scanned: amavisd-new at bezeqint.net

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

2006 10:44:03 +0000 (UTC):

KF> AS>>> А вообще какие народ отладчики-эмуляторы пользует? Какие самые AS>>> популярные?

KF> Если в C, то и привязанные к аппаратуре можно. Путём написания на KF> этом же C простенького эмулятора аппаратуры.

Порочный путь, ведущий в никуда. Не надо писать никаких эмуляторов. Ни простеньких ни сложненьких. Обычно. Иногда конечно бывает, но как исключение. А как правило, эхотажные программы привязаны к реальному времени и реальным откликам реальных систем, и сэмулировать все это если и возможно, то во-первых сложней, чем отлаживаемая программа. Во-вторых, само нуждается не только в отладке, но и в проверке адекватности. А это все уводит от решения исходной задачи все дальше и дальше. По той же причине и все эти симуляторы идут лесом.

KF> Для чего имеется "HAL" реальный и с эмулятором, подсовываемый в KF> зависимости от того, куда компиляция.

Бог, как говорится, в помощь.

dima

formatting link

 X-RFC2646: Format=Flowed; Original

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

2006 15:26:07 +0400:

DO>>>> Hе надо. Printf через putch() работает AM>>> Кто сказал? DO>> Я тебе говорю.

AM> Я так и подумал. :)

Ты бы лучше подумал в чем вопрос состоит.

AM>>> У меня в куче проектов printf используется, но никакой putch нет. DO>> Значит что-то похожее есть.

AM> write(int file, char *ptr, int len).

Это где?

DO>> Если речь идет о IAR AVR, то putch() в ней и правда нет, зато есть DO>> int putchar(int ch) DO>> А в picc и picc18 надо именно putch() свой написать,

AM> Вот я и говорю: это везде по-разному.

Пр "везде" никто вроде бы и не спрашивал и никто не говорил.

dima

formatting link

Привет, Alexej!

25 мая 2006 02:50, Alexej Goncharovskij писал Andrey Samarin:

AG> Обычно printf pаботает не напpямую а чеpез что-нибудь типа putchar, AG> пpописав свой putchar можно в нем вызывать функцию пеpекодиpовки. В AG> пpогpаммах использующих printf у меня сделано так. Спасибо, так и сделаю.

С уважением, Андрей АКА Хомич, АКА UR3LTG. ... ... Водка - это квадовое пиво...

Привет, Alex!

25 мая 2006 18:53, Alex Mogilnikov писал Dmitry Orlov:

AM>>> Вот я и говорю: это везде по-разному. DO>> Пр "везде" никто вроде бы и не спрашивал и никто не говорил. AM> Hи Андрей, ни ты не уточняли, о какой библиотеке идет речь. Использовалась стандартная библиотека WinAVR (avrlib).

2Дмитрий Орлов: я уже догадался что putch() - это эквивалент putchar(). :)

С уважением, Андрей АКА Хомич, АКА UR3LTG. ... ...Winamp: Краснознаменный хор HКВД - Если завтра война

Привет Dmitry!

25 May 06 16:12, Dmitry Orlov писал Alex Mogilnikov:

AM>> Я так и подумал. :) DO> Ты бы лучше подумал в чем вопрос состоит.

У меня пока нет вопросов.

AM>> write(int file, char *ptr, int len). DO> Это где?

newlib.

AM>> Вот я и говорю: это везде по-разному. DO> Пр "везде" никто вроде бы и не спрашивал и никто не говорил.

Hи Андрей, ни ты не уточняли, о какой библиотеке идет речь.

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

 X-RFC2646: Format=Flowed; Original X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Andrey Samarin! You wrote in conference fido7.ru.embedded to snipped-for-privacy@isdn.net.il on Thu, 25 May 2006 13:34:42 +0400:

AS>>> А вообще какие народ отладчики-эмуляторы пользует? Какие самые AS>>> популярные?

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

AS> Ясно, спасибо.

AS>>> Протеус?

DO>> Фигня.

AS> В чем, если не секрет?

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

AS>>> И еще, что бы новую ветку не начинать, спрошу здесь: при AS>>> выводе на ЖКИ (HD44780) при помощи printf цифр, он же их в таблицу AS>>> кодировки epson не переводит? Так? А как правильно выпутаться из AS>>> этой ситуации? Выводить в буфер, а затем проходиться по нему AS>>> перекодирующей подпрограммой?

DO>> Hе надо. Printf через putch() работает, которую все равно надо свою DO>> писать для вывода на LCD, в ней и перекодируй.

AS> Hаверное я пока плохо знаю Си, поскольку не знаю что это за

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

AS> FILE lcd_str = FDEV_SETUP_STREAM(lcd_putchar, NULL, AS> _FDEV_SETUP_WRITE);

AS> fprintf(&lcd_str, "Privet!");

AS> Думаю, в lcd_putchar и надо будет перекодировать.

Именно там.

dima

formatting link

Привет, Dmitry!

25 мая 2006 18:18, Dmitry Orlov писал Andrey Samarin:

AS>>>> Протеус? DO>>> Фигня. AS>> В чем, если не секрет? DO> Все эти попытки симулировать окружение контроллера хороши только для DO> демонстраций студентам, да и то под вопросом (по мне лучше показывать DO> на "боевом" контроллере. Да собственно, мненя интересовала только отладка интерфейса управления устройством (т.е. меню :).

AS>> Hаверное я пока плохо знаю Си, поскольку не знаю что это за DO> Это не С, это организация библиотек. Ты правда не уточнил чем DO> пользуешься, потому пришлось гадать. Hо в любом случае, printf через DO> какой-то низкоуровневый вывод работает, стандартного-то у контроллера DO> нет. Значит его и надо написать, и в нем и перекодировать. Стандартный AVRlib из WinAVR.

AS>> FILE lcd_str = FDEV_SETUP_STREAM(lcd_putchar, NULL, AS>> _FDEV_SETUP_WRITE);

AS>> fprintf(&lcd_str, "Privet!");

AS>> Думаю, в lcd_putchar и надо будет перекодировать. DO> Именно там. Ясно. Большое спасибо за информацию.

С уважением, Андрей АКА Хомич, АКА UR3LTG. ... Подоконник (истоp.)-исполнитель сеpенад

Такого не может быть. Потому как write вообще имеет полное право отсутствовать -- он нигде в стандартной библиотеке не декларируется и есть только в unix. Тогда уж fwrite. Но зачем, если есть (из библиотеки функций не выкинешь) putchar под который НЕ НУЖНО выделять буфер неизвестно какого размера.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required