CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Аlex »

Я вот, например, тоже хз для чего производители дают возможность отладки ? :dont_know: Видимо, только для неленивых пощёлкать лишний раз мышкой...
Погонять код не судьба ? И сразу найдётся у вас "конкретный ответ".
Реклама
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: CodeVision AVR в вопросах и ответах

Сообщение COKPOWEHEU »

flash char sim(char number){ char temp;
switch (number) {
case 0: temp = 126; break;
<--->
case '-': temp = 1; break;
}
return temp;
}
Что это за кошмар? Неужели нельзя было просто завести массив и написать константы по-человечески? Примерно так я делал на avr-gcc.

Код: Выделить всё

#define SEG_A (1<<0)
#define SEG_B (1<<1)
#define SEG_C (1<<2)
<--->
#define SEG_G (1<<6)
#define SEG_DP (1<<7)
PROGMEM const char nums[]={
  (SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F),
  (SEG_B | SEG_C),
<--->
  (SEG_A | SEG_B | SEG_C | SEG_D | SEG_F | SEG_G),
  (SEG_G) //знак "минус"
};
#define NUM_MINUS  10
char* int2str(char *buffer, int value){ //buffer - внешняя область памяти для хранения результирующей строки ; value - отображаемое число
  char *buf = buffer+7;
  unsigned int temp;
  char sign;
  if(value<0){sign=1; temp=-value;}else temp=value; //сохраняем знак
  *--buf=0; //завершающий ноль
  do{
    *--buf = temp % 10;
    temp /= 10;
  }while(temp != 0);
  if(sign)*--buf=NUM_MINUS; //используем сохраненный знак
  return buf;
}
<--->
char buffer[8];
lcd_puts(int2str(buffer, -1)); //lcd_puts(char *s) принимает на вход строку в стиле Си.
Выглядит несколько длиннее, зато лучше читается, меньше весит и быстрее выполняется. Как-то так. В оригинале применен более оптимизированный алгоритм, но он не так нагляден.
Реклама
dm211
Прорезались зубы
Сообщения: 208
Зарегистрирован: Вс дек 10, 2006 19:26:13

Re: CodeVision AVR в вопросах и ответах

Сообщение dm211 »

Учёл ваши замечания :)) и вот работает так-

Код: Выделить всё

                                                    //10 11 12  13 14  15 16 17 18 
flash char sim[]={126,48,109,121,51,91,95,112,127,123,71,62,103,55,119,78,79,99,1};
                // 0   1  2   3  4  5  6   7   8   9  F  U   P  H   A  C  E  *  - 
..........
if(temper<0){write(sim[(temper-(temper*2))/10%10], 6);}
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: CodeVision AVR в вопросах и ответах

Сообщение COKPOWEHEU »

:facepalm:
СпойлерНадеюсь, модераторы простят излишнюю содержательность этого поста
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
pashaumnov
Прорезались зубы
Сообщения: 236
Зарегистрирован: Чт июн 25, 2009 16:00:25
Откуда: нижний новгород

Re: CodeVision AVR в вопросах и ответах

Сообщение pashaumnov »

добрый вечер , разбираюсь с аналоговым корпаратором в тиньке 13. нашел в интернете кусок кода который работает, но я не понимаю как он работает,хотелось бы разобраться
{
DDRB=0xFF; //порт на выход
ACSR|=(1<<ADC); //включение компаратора( тут не очень понятно. для того что бы включить компаратор надо выставить 0 в ADC а тут ADC выставляется в 1
while(1)
PORTB.3=(ACSR&(1<<ACO)); //выводим значение результата сравнения (вотэта строчка не ясна, как ее можно расписать с помощью функций? результат компаратора отражается как раз в этом бите ACO пробовал по разному и через if(асd==1) {PORTB.3=1} не работает((((( не пойму что выводить еще (
}
Реклама
Аватара пользователя
Ян
Поставщик валерьянки для Кота
Сообщения: 1947
Зарегистрирован: Вт ноя 01, 2005 17:32:22
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Ян »

Вы уж меня простите за тупой вопрос, просто только начал немного разбираться, больше негде спросить...
Простой пример. Шаговый двигатель включается кнопкой.
#include <mega8.h>
#include <delay.h>


void main(void)
{
PORTB=0x02;
DDRB=0x00;

PORTD=0x00;
DDRD=0x0F;


while (1)
{

if(PINB.1==0)

{
PORTD=0b00000011;
delay_ms(10);
PORTD=0b00000110;
delay_ms(10);
PORTD=0b00001100;
delay_ms(10);
PORTD=0b00001001;
delay_ms(10);
}
};

}
Но он не включается. Если выкинуть if(PINB.1==0), двигатель крутится.
В чем засада?
Моделирую в Протеусе.
Изображение
Или я Протеусом как-то не так пользуюсь...
Реклама
AVK
Потрогал лапой паяльник
Сообщения: 349
Зарегистрирован: Сб окт 20, 2007 14:12:03

Re: CodeVision AVR в вопросах и ответах

Сообщение AVK »

Нужно поменять местами биты в байте, например 0 с 3 и 4 с 6
Я кончено понимаю как это сделать но может есть феерично простой способ?
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение WiseLord »

Просто вряд ли получится. А общий принцип может быть что-то вроде:

Код: Выделить всё

a = (a & 0b11110110) | ((a & 0b00001000) >> 3) | ((a & 0b00000001) << 3);
a = (a & 0b10101111) | ((a & 0b10000000) >> 2) | ((a & 0b00010000) << 2);
Аватара пользователя
Ян
Поставщик валерьянки для Кота
Сообщения: 1947
Зарегистрирован: Вт ноя 01, 2005 17:32:22
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Ян »

Давно не чувствовал себя таким тупым... Ничего не понял... Но все равно, спасибо за ответы, пошел изучать дальше.
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение WiseLord »

Ян: по Вашему вопросу - не совсем понятно, зачем там батарейка в протеусе, да ещё и так странно подключенная?
Аватара пользователя
Ян
Поставщик валерьянки для Кота
Сообщения: 1947
Зарегистрирован: Вт ноя 01, 2005 17:32:22
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Ян »

Это мое понимание как пользоваться Протеусом. Я им раньше не пользовался. Питание ведь нужно подавать? Или это необязательно?

Попробовал. Надо же, и без питания работает. Буду знать.

Разобрался, все работает. Это я Протеусом неправильно пользовался. Буду ковыряться дальше!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Аlex »

Вообще, на выводы 7,8 , судя по названию, вешается кварц :)
Выводы питания в протеусе скрыты.
Аватара пользователя
Ян
Поставщик валерьянки для Кота
Сообщения: 1947
Зарегистрирован: Вт ноя 01, 2005 17:32:22
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Ян »

Уже все понял... Дурак я старый...
AVK
Потрогал лапой паяльник
Сообщения: 349
Зарегистрирован: Сб окт 20, 2007 14:12:03

Re: CodeVision AVR в вопросах и ответах

Сообщение AVK »

Аlex писал(а):Вообще, на выводы 7,8 , судя по названию, вешается кварц :)
Выводы питания в протеусе скрыты.
По умолчанию это ноги порта, квар туда фьюзами конфигурится.
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Re: CodeVision AVR в вопросах и ответах

Сообщение Pnjom-Penb »

Ян писал(а):Уже все понял... Дурак я старый...
Не огорчайтесь - я еще старше. ;)
Аватара пользователя
Ян
Поставщик валерьянки для Кота
Сообщения: 1947
Зарегистрирован: Вт ноя 01, 2005 17:32:22
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Ян »

Ну не знаю... Я еще Хрущева помню! :)))
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Re: CodeVision AVR в вопросах и ответах

Сообщение Pnjom-Penb »

А я его уже даже забыть успел! :))) :))) :)))
Аватара пользователя
Specelectrokaz
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Вс янв 03, 2016 07:09:29
Откуда: Казахстан

Re: CodeVision AVR в вопросах и ответах

Сообщение Specelectrokaz »

Всем привет, парни раз уж заговорили о протеусе вопрос такой: может кто разводит на нём печатные платы? как он подходит для этих целей? Я пока делаю в спринт лайауте, но хочу что бы плата отображалась в 3D, да и опыт надо повышать что бы проекты посерьёзней были, пробовал в диптрейсе, что то нехватило ума его хорошо освоить(а может и терпения с желанием), вообщем стоит мне с ним связываться или же дальше осваивать диптрейс(но там почему то не все комоненты есть в 3D).Жду ваших мнений!
если человеку позволить говорить что он думает, то он разучится думать...
Аватара пользователя
Ян
Поставщик валерьянки для Кота
Сообщения: 1947
Зарегистрирован: Вт ноя 01, 2005 17:32:22
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Ян »

Давно пользуюсь Диптрейсом. Попробуйте, может понравится.
AlhonGelios
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Пн авг 17, 2015 19:31:34

Re: CodeVision AVR в вопросах и ответах

Сообщение AlhonGelios »

Подскажите пожалуйста как в Codevision 3.12 вывести русские символы на lcd hd44780? Деректива #pragma rl+ не работает может есть какая замена ей?
Ответить

Вернуться в «AVR»