| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Atmega8 + lcd3310 + gcc |
| Автор: bend 10.3.2009, 16:00 |
| возникла проблема с библиотекой NokiaLCD.c и не только у меня одного, не работает нормально функция LcdStr() Дело в том, что если выводить 2-4 и более строк дисплэй или ничего вообще не выводит или выводит чушь. Дисплэй 100 процентов исправен, заполнял его весь и линиями и пикселами и разными символами. Если даже прописать const char *string[5]={"1","2","3","4","5"} всеравно больше 3 строк нормально не выводится. Дак вот почитал на форумах что с такой же проблемой сталкнулся народ и есть выход разместить строковые константы в eeprom. Но как это сделать на avr-gcc??? |
| Автор: Mazzi 11.3.2009, 10:15 |
| А что пишут по этому поводу в руководстве компилятора? |
| Автор: bend 11.3.2009, 17:54 |
| Да ничего особого, есть там 6 основных команд запись байта, слова и буфера, разобрался с сзаписью в eeprom, разместил там строки, но ничего не изменилось |
| Автор: Mazzi 12.3.2009, 09:58 | ||||
| У меня компилятор не GCC, поэтому не могу точно сказать что тебе делать. Вот смотри пример от моего компилятора CodeVisionAVR:
Для размещения строк в памяти программ:
|
| Автор: bend 13.3.2009, 17:24 | ||
После 4 дней напряженных боев, выяснилось что глюк происходит если в строке передаваемой функции LcdStr(), содержаться пробелы цифры и проч небуквенные знаки. Хотя по умолчанию компилятор должен жевать в utf8, и отдельно символы любые выводяться через LcdChr(), пока непонятно Вот функция
походу загвоздка именно здесь, при разбивке всей строки на байты как-то косячно передаються коды небуквенных символов... Я плохо пока понимать с++ |
| Автор: bend 26.3.2009, 14:30 |
| Бои закончились победой с моей стороны Попутно пришлось изучить eeprom, теперь я написал процедуру привязки новых устройств к шине 1-wire, можно былоб конечно намутить автораспознование устройств на шине, но у меня устройств мало и если один датчик сгорит, то пришить новый к системе можно будет не перешивая МК. Идея проста, подключаем новое устройство (например датчик температуры) к шине, остальные устройства от шины отключаем, сканируем его персональный код и записываем его в eeprom. Ну и для пущей картины сегодня подключил русские буквы, дабы русифицировать меню. Было немнога геммороя, дело в том что в линукс везде практически кодировка UTF8, (т.е. мультибайтная), я вышел из положения просто добавив в makefile, перекодировку из utf8 в cp866 перед компиляцией. Ну и русские буквы должны быть в строгости с ascii, а там после буквы "п", идет псевдографика 48байт, потом остальные русские буквы. Пока подключил 3 датчика температуры, ну и конечно потом занес все серийники с ключей-таблеток от домофона, (на будующее для отмычки домофонов). Линию пробовал и 2-х проводную с подтягивающим резистором, все работало. Питаю все это дело от нокиовской батарейки Как лучше сделать клавиатуру? Нашел схему матрицы типа крест накрест выводы портов, но как тогда избежать дребезга? Вообще посоветуйте хорошую схему клавиатуры кнопок из 5-9? |