Перейти к содержанию
    

ViKo

Модератор
  • Постов

    12 216
  • Зарегистрирован

Весь контент ViKo


  1. Мне большего не требуется. Простая задача, простая программа. Речь не о ней. Так будет везде, в любой программе. А 0x7f3 находится в конце нулевой страницы. В данном вопросе компилятор молодец, разместил подпрограмму в конце, чтобы не "путалась под ногами".
  2. Проблем нет, просто испытываю дискомфорт, изучая код, созданный компилятором. Показываю более полный пример - исходник и результат: Out = 0; Delay10K(30); // 0.3 s Out = 1; Delay10K(50); // 0.5 s Out = 0; Delay10K(30); // 0.3 s Out = 1; Delay10K(50); // 0.5 s Out = 0; Delay10K(30); // 0.3 s Out = 1; Delay10K(50); // 0.5 s 61: Out = 0; Delay10K(30); // 0.3 s 0027 1008 BCF 0x8, 0 0028 301E MOVLW 0x1e 0029 120A BCF 0xa, 0x4 002A 118A BCF 0xa, 0x3 002B 27F3 CALL 0x7f3 62: Out = 1; Delay10K(50); // 0.5 s 002C 1408 BSF 0x8, 0 002D 3032 MOVLW 0x32 002E 120A BCF 0xa, 0x4 002F 118A BCF 0xa, 0x3 0030 27F3 CALL 0x7f3 63: Out = 0; Delay10K(30); // 0.3 s 0031 1008 BCF 0x8, 0 0032 301E MOVLW 0x1e 0033 120A BCF 0xa, 0x4 0034 118A BCF 0xa, 0x3 0035 27F3 CALL 0x7f3 64: Out = 1; Delay10K(50); // 0.5 s 0036 1408 BSF 0x8, 0 0037 3032 MOVLW 0x32 0038 120A BCF 0xa, 0x4 0039 118A BCF 0xa, 0x3 003A 27F3 CALL 0x7f3 65: Out = 0; Delay10K(30); // 0.3 s 003B 1008 BCF 0x8, 0 003C 301E MOVLW 0x1e 003D 120A BCF 0xa, 0x4 003E 118A BCF 0xa, 0x3 003F 27F3 CALL 0x7f3 66: Out = 1; Delay10K(50); // 0.5 s 0040 1408 BSF 0x8, 0 0041 3032 MOVLW 0x32 0042 120A BCF 0xa, 0x4 0043 118A BCF 0xa, 0x3 0044 27F3 CALL 0x7f3 Когда я писал на ассемблере, я выбирал страницы по мере необходимости. А тут весь код в одной странице, зачем же "перетрахивать" ненужные биты? И памяти жалко, и времени...
  3. Hi-Tech PRO PIC10/12/16 V9.65PL1 & PCLATH

    Что сделать, чтобы компилятор не сбрасывал биты выбора страниц памяти в PCLATH там, где не надо (они и так всегда сброшены). Пример его работы: 0009 120A BCF 0xa, 0x4 000A 118A BCF 0xa, 0x3 000B 27F4 CALL 0x7f4 000C 120A BCF 0xa, 0x4 000D 118A BCF 0xa, 0x3
  4. На странице "Контакты" написано: Так что, наверное, писать еще куда-то не обязательно. Но я попытаюсь обратить внимание администраторов. Надеюсь, свои вопросы и предложения я изложил ясно.
  5. Уважаемые модераторы и супермодераторы! Если вы хотите и дальше модерировать каждое слово, писать "тема избита", "хватить мусорить", перебрасывать темы из раздела в раздел, то можете оставить всё, как есть. Мне не кажется сложным добавить одну строку на заглавной странице Электроникса, и создать отдельную страницу со списком тем "для начинающих".
  6. Попробую объясниться без эмоций. Я регулярно захожу на electronix, читаю то, что меня интересует. Сейчас меня интересует микроконтроллер STM32F103, для которого пишу программу. Захожу естественным путем: www.electronix.ru, справа - Микроконтроллеры, туда, стало быть. Дальше - ARM - куда ж еще? Я до сегодняшнего дня и не догадывался, что есть раздел для начинающих, а в нем свой ARM! Поиском, как и положено, просмотрел в "своем" разделе, что меня интересовало, но не найдя ничего близкого, создал свою тему. И получил несколько неприятных замечаний от "профессионалов", а потом и тему "потерял". Причина банальна - на заглавной странице нет ссылки на раздел для начинающих, она видна только если зайти в "собственно, сам форум". Но что более правильно, на мой взгляд - не надо делить программистов на "начинающих" и "конченых". Что это дает? Теперь свою тему был вынужден искать по трем разделам. Если новый вопрос появится - опять скачи по всему форуму, не дай бог, где-то эта тема уже обсуждается. Расширенный поиск, наверное, спасет. Так в него не заходил никогда, хватало того, что внизу. Вернее, не то, чтобы хватало, обычно ничего путного не находилось, ну, судьба такая, думал. Зачем все эти сложности, разделения? Теперь гадай, достоин твой вопрос этого раздела или нет. Я думаю, форум для того, чтобы задавать вопросы не опасаясь, пошлют тебя или ответят.
  7. Нашел. Добрался до расширенного поиска. Теперь я "просвещен". Все, что Вы советуете, должно быть прописано где-то на виду, в правилах, в помощи. Помощь, кстати - на английском - поди разберись, а правила - попробуй найди! Именно - задал, узнал, и процитировал!
  8. Если я задам вопрос в "песочнице" для начинающих, кто мне там ответит? Такие же, как я, "начинающие"? Какого качества ответы я получу? "Профессионалы" туда не заглядывают, верно? "Гуру" будут тусоваться в "серьезных" разделах. Разве это логично? Единственный плюс, не будет ответов подобных: - Батенька, вам учить язык C нужно , а не на форумах такие вопросы спрашивать - Да блин, спасибо за сокровенные знания! А то мы бы так в серости и остались пребывать Что мне дают подобные ответы? Или кому-нибудь другому читающему? Если "тема избита" - присобачьте ее к существующей, я буду только рад!
  9. На что нажать, чтобы сделать Logout? (нашел - вышел, вошел, ура - вот он я! - мягко говоря - "чудо"!) Теперь моей темы нет ни среди "начинающих", ни среди "профессионалов"! Что еще я сделал не так? Нашел! Теперь уже в разделе "Программирование". "И носило меня по свету от Амура до Туркестана". Так и останется "закрытой"? Мне-то уже все равно, я свое получил...
  10. Если кто-то такой, как я, зайдет в ARM, он темы об "ответах на вопросы" не увидит, и все повторится сначала... (уже увидел эту тему и в ARM, за это - спасибо!) Еще просветите меня, пожалуйста, почему на заглавной странице http://electronix.ru/ в персональном меню я вижу, что я был 30 октября? А сейчас я где? :unsure: :crying: И по поводу моей темы http://electronix.ru/forum/index.php?showtopic=69301 перенесли ее в раздел для начинающих. Согласен. Но закрывать-то зачем? Посмотрите - 167 просмотров со вчерашнего дня. Наверное, у кого-то могли возникнуть вопросы или ответы. За что ж такая дискриминация? Я там один с закрытой темой на странице.
  11. Это уже кое-что. Но а AVR я не залезаю. Я STM32F103 программирую. Вы в каждом разделе соответствующую тему создадите? Я предлагаю нечто большее и простое на заглавной странице в "разделах" перед "микроконтроллерами" поставить строчку "начинающим" со ссылкой в соответствующий раздел там и место есть Наверное, это вопрос не вашей компетенции, но Вы можете передать это, кому следует. Вам это проще сделать. Вот, к примеру, поясните чем так важна данная тема - http://electronix.ru/forum/index.php?showtopic=66733 Зачем она висит среди "важных"?
  12. Я неоднократно "тренировался" в поиске. Это можно определить, если прикинуть, сколько времени я здесь нахожусь, и сколько вопросов я задал. Но только сейчас обнаружил, что, оказывается, есть раздел "для начинающих". Думаю, большая часть вопросов "где моя тема" отпала бы, если бы не было этого раздела. Я предложил вам конкретное решение проблемы, думаю, вы согласитесь, что это пойдет на пользу сайту. А непонятно мне было то, что в разделе "Микроконтроллеры" поиском я своей темы не видел. ANSI (а лучше C99) функции я просмотрел по книге, и не нашел нужной. Хотя и в Microchip C18, и в Hi-Tech PIC C функция itoa есть. Потому и задал вопрос. На мой взгляд, правильнее, чтобы такая функция у Keil была. Увы. To ClockworkOrange - на какой странице Вы задали такой поиск? Может, я чего-то просмотрел? IE6 у меня.
  13. Вы меня послали во мною же созданную тему. Как мне вас понимать? Поиском в разделе "микроконтроллеры" я не нашел ничего близкого к моему вопросу, потому и создал свою тему. Я предлагаю конкретное маленькое улучшение - на заглавной странице в "разделах" перед "микроконтроллерами" поставить строчку "начинающим" со ссылкой в соответствующий раздел. Я, так и быть, буду заходить только туда, коль до раздела "микроконтроллеры" не дорос (при моем 24-летнем опыте работы). А еще лучше не делить темы на "простые" и "сложные".
  14. Разъясните на конкретном моем примере, куда девается созданная тема. В воскресенье, 10.11.2009 в разделе ARM создал тему "Преобразовать целое в строку", которая помогла мне написать нужную программу, и не только, и наверное, была бы интересна многим. Однако к вечеру того же дня тема пропала. Следов не нашел. Сообщений не получал. Зайдя сегодня компьютера на работе, увидел, что в последний раз был на форуме в пятницу, 30.10.2009. Хорошо, хоть количество сообщений, вроде, сохранилось. Это уже второй такой случай. Если я чего-то не понимаю, по почему бы не внести в правила, где искать пропавшие темы. Нашел пропавшую тему. Уже закрытой. И с довольно обидными оценками и советами от "гуру". Действительно, поиском в Google можно найти все, что нужно. А я, бестолковый, пользовался встроенным в electronix поиском, и, увы, ничего не нашел. Так мне через Google заходить в electronix? Огромное спасибо за совет! Еще один совет. Захожу на electronix, дальше в микроконтроллеры (куда ж еще?), а там раздела "В помощь начинающему" нет. Куда ж писать? А захожу в "Собственно, сам форум" - вот там, пожалуйста - есть и для начинающих. По-моему, слишком все запутано!
  15. "Творчески переработав" предложенное, сотворил следующую функцию void NumberToString (int Number, char * StrBuf) { StrBuf[5] = '\0'; for (signed char i=4; i>=0; i--) { StrBuf[i] = '0' + Number % 10; Number /= 10; } } Ну а в программе использую просто char AD_Buffer[7]; NumberToString(AD_value, AD_Buffer); printf("ADC = %s", AD_Buffer); Спасибо всем откликнувшимся (кроме...)!
  16. За примеры преобразования числа в строку - Спасибо! Нашел, как перенаправить printf на ЖКИ. В файле Retarget.c подменил функцию fputc extern void lcd_putchar(char c); /// int fputc (int ch, FILE *f) { return (ser_putchar(ch)); } int fputc (int ch, FILE *f) { lcd_putchar((char)ch); return ch; } Теперь число выводится на индикатор printf("%d", AD_value); а за ним еще лезет текст "AD value =". Но это уже другой вопрос.
  17. А как указать, куда "катить"? Есть отладочная плата MCBSTM32, на ней ЖКИ двухстрочный. Запустил проект Blinky, там для ЖКИ есть несколько функций extern void lcd_init (void); extern void lcd_clear (void); extern void lcd_putchar (char c); extern void set_cursor (int column, int line); extern void lcd_print (char *string); extern void lcd_bargraph (int value, int size); extern void lcd_bargraphXY (int pos_x, int pos_y, int value); Как мне к ним прицепить printf? Я пробовал, не получилось.
  18. Не нашел в Keil функции преобразования целого числа в строку, ну, как itoa в Hi-Tech C for PIC, например. Хочу вывести код с АЦП на ЖКИ. Неужто придется самому изобретать такую тривиальную вешь?
  19. Докладываю, до чего дошел. Решил все-таки использовать библиотеку StdPeriph_Lib последней версии 3.1.0, скачанную с сайта ST. В ее составе идет файл помощи, на одной из страничек указано, как применять библиотеку. Особых сложностей нет - разобраться с предложенными структурами и функциями, и вызывать их по мере необходимости. Не обязательно все файлы забрасывать в свой проект, просто в опциях проекта нужно указать Include Path. Согласен, что функции работают не оптимально, зато, надеюсь, без ошибок. На примеры посматриваю. Doxygen скачал и установил. Создал шаблоны для заголовков файлов и функций, в виде, который понимает Doxygen. Пришлось слегка изменить своему стилю. После компиляции в Keil запускаю отладчик-симулятор, и наблюдаю за периферийными устройствами. Что-то работает, как должно, что-то нет.
  20. А регистры, адреса тоже должны быть где-то расписаны, например, в файле stm32f10x_map.h, который сам уже имеет немалый размер. Т.е. без библиотек не обойтись, наверное. Нужно включить файлик stm32f10x_lib.h, а остальное само прилепится.
  21. Коль никто не ответил, попробую ответить себе сам: Не е** мозги, напиши свою инициализацию, назови файл, к примеру, Init_STM32.c, и по-порядочку, задай работу генераторов, прерываний, памяти... все, что вычитаешь в datashet и в примерах. Для описания регистров, битов, структур создай отдельный заголовочный файл, тоже на основе готовых, например stm32f10x.h. Тогда и в периферии быстрее разберешься. И всех делов. Тебе ж не нужна некая универсальная инициализация, что приведена в библиотеках.
  22. Начинаю писать для STM32 в Keil uVision3. Понятно, что будет файл типа main.c. А что вызывать из него для инициализации процессора? startup_stm32f10x_hd.s - инициализация стека и таблица векторов прерываний. А дальше? В каталоге Keil\ARM\Boards\ST\EK-STM32F есть примеры, в которых в файлах STM32_Init.c есть Configuration Wizard, в котором можно настроить всю периферию, частоты, и т.д. А в библиотеке stm32f10x_stdperiph_lib, скачанной с сайта ST, ничего подобного нет. Да и изменить в них ничего нельзя, у них атрибут "только для чтения". Что же, использовать их только как пример, писать свои файлы? Подскажите примерную структуру проекта, а то накидал файлов, что уже заблудился в них.
  23. Во-первых, LVDS должен быть размахом 350 mV, а у вас 1 V - уже лишнее. Во-вторых, если генератор рассчитан на 20 kOhm, а подключена нагрузка 100 Ohm - тоже нехорошо, генератору. И как вы видите мигание лампочки с частотой 25 MHz? Индуктивность, которую вы используете, может оказаться прекрасным проводником на 25 MHz, из-за паразитных емкостей. А вход у Stratix наверняка низкоомный, чтобы не ловить помех, примерно таких, как вы ему предлагаете вместо сигнала. Что бы я сделал - подал бы сигнал именно через буфер, и амплитуду бы уменьшил, а постоянное напряжение задал бы отдельными резистивными делителями.
  24. Да, цена АЦП и ЦАП выглядит привлекательной. И просмотров много! Тема интересная, вот и смотрят все. И все же, я бы не стал этим заниматься. По-моему, просто не выгодно. Даже если и сделаешь, не разбогатеешь. Так может лучше сделать что-то, приносящее доход? DVD плейер выводит картинку телевизионного разрешения. Правильно? 720х576 пикселов? И как эту картинку не масштабируй, качество ее останется на том же уровне. Может стать только хуже. И что мы увидим на крутом мониторе???
  25. По поводу осциллографов - www.auris.ru - там есть приличные осциллографы, сам один такой имел, характеристики во многом получше многих стационарных, но пользоваться неудобно, это беда всех компьютерных прибамбасов. По поводу буфера в ПЛМ - можно сделать двухпортовое ОЗУ, в Altera, например, это можно без проблем, в Xilinx, наверняка, тоже. Нужны АЦП на входе, и, естественно, на выходе нужны ЦАПы быстрые. А все это - не дешевые вещи. Что касается идеи вообще - вряд ли стоит этим заниматься.
×
×
  • Создать...