CodeVision AVR в вопросах и ответах
-
L29Ah
- Прорезались зубы
- Сообщения: 225
- Зарегистрирован: Пн июл 23, 2007 03:10:34
- Откуда: СПб
- Контактная информация:
Почитайте вы, наконец-то, книжку по С, может быть поймёте, что такое выражения и как они вычисляются... Могу лишь подсказать, что (a<x<b) эквивалентно ((a<x)<b), что эквивалентно ((0 или 1) < b)... "<" это тоже операция, как и всё в языке С. Это во всяких высокоуровневых языках у вас есть функция "<", которая принимает 2 аргумента - сравниваемые величины, и возвращает И/Л. А С - это всего лишь кроссплатформенный ассемблер. Обижаться на него и ругать нехороших компиляторов не стоит...MetEl писал(а):if(a<x<b){
ляляля}
Он тоже не выполняет...
Ꙑ!
- Negor
- Вымогатель припоя
- Сообщения: 586
- Зарегистрирован: Ср мар 07, 2007 22:58:02
- Откуда: Черкассы, Украина
- Контактная информация:
Народ, я знаю у когото в закромах есть библиотека для работы с дисплеями на HD44780 под CodeVision... ато я тут парочку нашёл для WinAvr но при перекомпиляции требуется ещё куча библиотек, а в них ещё по кучке и в каждой незнакомые конструкции... вопщем проблемы вылезают быстрее чем я их устраняю... я бы использовал встроенный визард но мне надо в Mega8 использовать PORTC... вот такая вот проблема
There is only 10 kind of people: those who understands binary code and those who dont!!!
- Negor
- Вымогатель припоя
- Сообщения: 586
- Зарегистрирован: Ср мар 07, 2007 22:58:02
- Откуда: Черкассы, Украина
- Контактная информация:
НЕ дождался))) Переписал одну найденную WinAvr овскую под CodeVision. Теперь вот проблема с itoa()... вобщем есть число, а его надо вывести.
Вот такой вот код... самое интересное что Proteus всё делает правильно а на реальном железе пусто. Но если сделать так
То всё норм, выводится слово...
вот на всяк случай
Кто что могёт подсказать?[/code]
Код: Выделить всё
unsigned int i=10;
unsigned char *ch;
DDRC = 0xff;
DDRB = 0xff;
LCD_PORT = 0x00;
DDRD = 0xff;
PORTD = 0x00;
INIT_LCD();
itoa(i, ch);
PR_STR_LCD(ch);
Вот такой вот код... самое интересное что Proteus всё делает правильно а на реальном железе пусто. Но если сделать так
Код: Выделить всё
unsigned char *ch="Hello";
То всё норм, выводится слово...
вот на всяк случай
Код: Выделить всё
void PR_STR_LCD(unsigned char *ptr)
{
unsigned char k;
while (k=*ptr++) PRINT_LCD(k);
}
void WRITE_LCD(char value)
{
delay_us(MKS_PBYT);
WRITE_HIGH_NIBBLE(value);
_Epb();
WRITE_LOW_NIBBLE(value);
_E();
delay_us(MKS_BYTE);
}
void PRINT_LCD(char value)
{
SET_RS;
WRITE_LCD (value);
CLR_RS;
delay_us(MKS_BYTE);
}
Кто что могёт подсказать?[/code]
There is only 10 kind of people: those who understands binary code and those who dont!!!
-
lexmulya
- Встал на лапы
- Сообщения: 124
- Зарегистрирован: Ср авг 29, 2007 10:42:31
- Контактная информация:
А как твоим методом пользоватся по перегонке цифр в буквы я не понял...
Есть число в десятичной системе ты смотрешь остаток от деления на 10 а потом делишь на десять и так пока число не равно нулю...
Код: Выделить всё
char tmp_str[10]={'0','1','2','3','4','5','6','7','8','9'};
char new_str[];
while(chislo>0){
new_str=new_str+tmp_str[chislo%10];
chislo=chislo/10;
}
В результате в new_str будет символьное прнедставление числа(правда в обратном порядке)
П.С. Писал на скорую руку строго не судите)
- Negor
- Вымогатель припоя
- Сообщения: 586
- Зарегистрирован: Ср мар 07, 2007 22:58:02
- Откуда: Черкассы, Украина
- Контактная информация:
Ну главное смысл я понял... но всё таки интересно почему в реальном железе не работает... и ещё - как делать чтоб экранчик на HD44780 писал по русски... русские буквы в нём есть но при заталкивании в него русского мимвола иероглифы вылетают
There is only 10 kind of people: those who understands binary code and those who dont!!!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Вот примеры вывода русский букв на LCD
http://kazus.ru/forum/topics/7202.html
http://kazus.ru/forum/topics/7202.html
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
CodeVisionAvr vs x64
Появилась проблема:
CodeVisionAvr не запускается на x64 системе (Windows XP Prof x64 Edition SP2)... просто вываливается с ошибкой: "CodeVisionAVR C Compiler - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства."
Кто-то что-то может сказать по данному поводу... можно как-то запустить на х64 или будет ли поддержка в будущем ???
CodeVisionAvr не запускается на x64 системе (Windows XP Prof x64 Edition SP2)... просто вываливается с ошибкой: "CodeVisionAVR C Compiler - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства."
Кто-то что-то может сказать по данному поводу... можно как-то запустить на х64 или будет ли поддержка в будущем ???
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
На сайте производителя есть указание скачать примочку для Висты - наверно и вам она поможет.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
-
lexmulya
- Встал на лапы
- Сообщения: 124
- Зарегистрирован: Ср авг 29, 2007 10:42:31
- Контактная информация:
MetEl писал(а):Гоняю счётчик, сам по себе. В обработчике его прерывания простое сложене переменных, просто часы считает(даже так).
Онако с переменными ничего непроисходит, если я не вхожу в функцию которая эти переменные просматривает. Ничего не трогаю и не меняю. Просто вхожу в фунцкию где отображаются эти перменные.Тогда они работают!!!
Чё не так? Есть и другие процессы которые осуществляются в это время (не мало, но и не так чтоб много...). Ну всё перепробывал...
Посоветуйте, на что обратить внимание! Стек, память, какиенить установки компилятора...
Ну что ещё?!
Если вы ее тока в 1 месте увеличиваете и больше нигде не применяете, то возможно оптимизация кода ее(переменную) просто убрала...
А из определённой функциии эти переменные засылаюся в перезначиватель (в 10 СЕ) и возвращаютя обратно уже в других(глобальных) переменных. И эти переменные в 10-м формате отправляются в процедуру по подстановке символов, потом по сбору в (одно) страницу экрана.
Потом вся страница разом выводится на экран....
Может это слишком для МК?
А вам код зачем, компильнёте в чёмто другом?
Я вот ICCV пытаюся по пробывать.
Потом вся страница разом выводится на экран....
Может это слишком для МК?
А вам код зачем, компильнёте в чёмто другом?
Я вот ICCV пытаюся по пробывать.