16.11.2015, 20:19
|
|
Заблокирован
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,715
Сказал спасибо: 189
Сказали Спасибо 3,199 раз(а) в 2,074 сообщении(ях)
|
Re: После определенного количества используемых переменных - на дисплее "крякозяблики"
Сообщение от -vitalik-
|
индюк, расскажите, где подучится. не все рождаются умными
|
в интернете. скачиваешь пдф на проц и начинаешь битами работать через тот же си.
когда точно выучишь чо какой бит делает тогда начинаешь пробовать использовать функции высокого уровня. при этом смотришь через отладчик все те же биты - какие они где и как. или банально через компорт выводишь их при работе в реальном времени.
ну можно листинг полистать - там чистый ассемблер.
а так вы пишите - инитэкран. а чо он делает - вы не знаете и в помине.
|
|
|
|
16.11.2015, 20:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: После определенного количества используемых переменных - на дисплее "крякозяблики"
В lsd_out сделайте вывод не более 14 символов и посмотрите что там выводит на13 и 14 символе
|
|
|
|
16.11.2015, 20:31
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: После определенного количества используемых переменных - на дисплее "крякозяблики"
Сообщение от индюк
|
когда точно выучишь чо какой бит делает тогда начинаешь пробовать использовать функции высокого уровня.
|
Та же кладка только в профиль!
Сообщение от индюк
|
можно листинг полистать - там чистый ассемблер.
|
И что там можно увидеть? И главное как долго нужно смотреть на дизасм чтобы пришло озарение божие?
Надо сначала локализовать кусок кода, а потом уже разбираться где конкретно и почему. Это отладка, а Си или АСМ без разницы.
|
|
|
Сказали "Спасибо" STM32F0
|
|
|
16.11.2015, 20:43
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: После определенного количества используемых переменных - на дисплее "крякозяблики"
Сообщение от -vitalik-
|
я думал, микроС сам разбирается со страницами
|
Да все они сами разбираются, хоть хайтеч, хоть ЦЦС, но периодически хэндэхох исполняют все. Дело в изначальной сегментации памяти ПИКов.
Поключите ПИКкит, дошагайте до вывода и посмотрите откуда и что он выгребает в рабочем варианте и в нерабочем. Посмотрите в мануале по микроСи на предмет типа ручного распределения памяти. Пробейте поиском, Изирайдер извращался с микроСи на ПИКах, наверняка попадал в такую передрягу.
|
|
|
|
16.11.2015, 22:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.12.2007
Сообщений: 1,198
Сказал спасибо: 70
Сказали Спасибо 80 раз(а) в 69 сообщении(ях)
|
Re: После определенного количества используемых переменных - на дисплее "крякозяблики"
Сообщение от -vitalik-
|
WriteConst1(x,y,z). по сравнению с LCD_OUT это занимает меньше памяти в проце
|
Как же так если вы в этой функции используете Lcd_Out(row, col, text_cons);
|
|
|
|
17.11.2015, 00:25
|
|
Вид на жительство
Регистрация: 29.03.2009
Адрес: Бровары, Украина
Сообщений: 326
Сказал спасибо: 1,410
Сказали Спасибо 82 раз(а) в 46 сообщении(ях)
|
Re: После определенного количества используемых переменных - на дисплее "крякозяблики"
Сообщение от vavan1983
|
Как же так если вы в этой функции используете Lcd_Out(row, col, text_cons);
|
Смысл в том, что строка хранится, как константа, в памяти программ. Перед выводом - она копируется оттуда и выводится через lcd_out.
Это стало для меня актуальным, когда делал какую-то игрушку на 16F628. Тогда кучка lcd_out с явно заданными строками очень быстро забрали всю память. Выше названный алгоритм нашел в интернете. Вывод тех же строк занял ровно в 2 раза меньше памяти.
|
|
|
|
17.11.2015, 00:52
|
|
Прописка
Регистрация: 29.01.2005
Адрес: Киев
Сообщений: 227
Сказал спасибо: 50
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Re: После определенного количества используемых переменных - на дисплее "крякозяблики"
Показалось. Но если пошагать отладчиком по этой функции на предмет куда ведут указатели? Всё равно, к чему там эта строчка?
__________________
Невежество всегда на что-нибудь испражняется.
Последний раз редактировалось lisergin; 17.11.2015 в 01:10.
|
|
|
|
17.11.2015, 08:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: После определенного количества используемых переменных - на дисплее "крякозяблики"
Сообщение от -vitalik-
|
Всего таких объявлений - три массива строк, 12 по 12 символов, 3 по 2 и 16 по 6.
|
Попробуйте часть массива констант запихнуть в eeprom https://electrosome.com/internal-eep...ocontroller/2/
|
|
|
|
17.11.2015, 11:19
|
|
Вид на жительство
Регистрация: 29.03.2009
Адрес: Бровары, Украина
Сообщений: 326
Сказал спасибо: 1,410
Сказали Спасибо 82 раз(а) в 46 сообщении(ях)
|
Re: После определенного количества используемых переменных - на дисплее "крякозяблики"
lisergin, чесно говоря, этот фрагмент взят с интернета. Я не очень люблю указатели, они меня пугают.
IOPA4, ссылка ведет на недоступную страницу. Жаль, в ПИКах нет команды lpm. Я думал, что читать с EEPROM относительно долго, поэтому этот вариант держу в запасе, как последний.
|
|
|
|
17.11.2015, 12:00
|
|
Прохожий
Регистрация: 17.10.2015
Сообщений: 8
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: После определенного количества используемых переменных - на дисплее "крякозяблики"
Сообщение от lisergin
|
Всё равно, к чему там эта строчка?
|
Строчка в dest копируется посимвольно с инкрементом указателей dest и source после присвоения символа. Выход из цикла происходит при нуле по указателю source - соотвественно нужно добавить нулевой терминатор и в строчку dest - чем этот фрагмент кода и занимается. Формально к функции strConstCopy претензий нету - если только размер dest буффера не превышается.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:36.
|
|