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

Обсуждаем контроллеры компании Atmel.
prw07
Мучитель микросхем
Сообщения: 403
Зарегистрирован: Ср янв 26, 2011 17:00:30

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

Сообщение prw07 »

Во вторых. если в коде нигде ноги не определены, каким образом компилятор о них узнает ? Да и каким образом Вы вообще будете обращаться к этим ногам, не зная их ?
Вот и меня это тоже интересует. :))
2. Странный вопрос. Естественно, ногам, по которым Вы собрались манипулировать дисплеем, нужно определять направление.
Я бы не спрашивал, если бы сам не увидел.
Что бы не быть голословным вот:
Это весь код. Никакой инициализации портов.

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

#include <tiny2313a.h>
#include <delay.h>
#include <alcd.h>

void main(void)
{

lcd_init(8);

while (1)
      {
      delay_ms(50);
      lcd_putchar('A');

      }
}
во вложении проект с протеусом. Работает. Скорее всего CodeWizard в НЕХ добавляет инициализацию портов, но в коде этого мы не видим. Собственно это меня и интересовало.
1.ZIP
(75.66 КБ) 158 скачиваний
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

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

Дык, ё-маё... Вы пользуетесь какой-то уже готовой библиотекой чтоли ? А сразу об этом написать ? :)
Реклама
Аватара пользователя
khomych
Мучитель микросхем
Сообщения: 423
Зарегистрирован: Сб фев 21, 2009 16:11:32
Откуда: Харьков
Контактная информация:

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

Сообщение khomych »

CAVR 2.05.0 хранит инфу о привязке ног LCD в файле *.prj, думаю при необходимости можно поправить, но скорее всего при закрытом проекте. либо в свойствах проекта. Configure project -> C compiler -> Libraries -> Alfanumetric LCD
Аватара пользователя
Dr.Seldom
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Ср окт 21, 2009 11:10:53
Откуда: Минск
Контактная информация:

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

Сообщение Dr.Seldom »

Всем мяв!

вопрос созрел.... перезрел.... и начал пахнуть....

протеус+модель LCD ILI9325+Mega64+CV

в СВ с помощью визарда определил куда и чего подключать, повторил все подключения в протеусе, но что-то на экранчике ничего не отображается (модель LCD рабочая, есть пример с андурило )..
пытаюсь вывести хоть строчку из примера с Хмега128

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

   // glcd_clear(); //при закомментированной строчке на ногах МК серые квадратики, хотя они сконфигурированы как выходы
                          //если убрать комментарий то синие и  красные и мигают ;)
glcd_setfont(font5x7);
glcd_setcolor(GLCD_CL_YELLOW);
glcd_outtextf("Ilitek ILI9325 Graphics Demo");
чего-то не хватает, а вот чего именно не понятно
сразу железе не могу пока попробовать, пока нету в наличии ;)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Dr.Seldom
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Ср окт 21, 2009 11:10:53
Откуда: Минск
Контактная информация:

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

Сообщение Dr.Seldom »

разобрамшись :)
вопрос снят ;)
Реклама
Аватара пользователя
Dr.Seldom
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Ср окт 21, 2009 11:10:53
Откуда: Минск
Контактная информация:

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

Сообщение Dr.Seldom »

Есть ли у кого опыт работы с дисплеем ILI9325 и CodeVision?
Модель в протеусе при инициализации встроенной в CV библиотекой не оживает, хотя в CV заявлено о поддержке этого дисплея, а найденные в инете примеры работают нормально.
Реклама
GRAD
Родился
Сообщения: 2
Зарегистрирован: Ср май 13, 2015 10:50:41

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

Сообщение GRAD »

Друзья помогите я в программировании ДУБ :shock: нужно читать/писать регистры микросхемы LMP91000 по I2C шине, при помощи ATMEGA8 и наблюдать это на 16x2 дисплее. Есть примитивный код в CVAVR для чтения/записи, пытаюсь дописать чтобы прочитаный байт появлялся на дисплее. Вопрос как прилетевший байт от ведомого положить в переменную чтоб он появился на дисплее?
Облазил все что можно было, пытался разобраться. Буду очень признателен всем ответившим!

i2c_start();
i2c_write(0xA0);
i2c_write(0x00);
i2c_start();
i2c_write(0xA1);
i2c_read(0x00);
тут что то надо дописать чтобы прочитанный байт отправился в переменную :facepalm:
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

GRAD писал(а):как прилетевший байт от ведомого положить в переменную чтоб он появился на дисплее?
Смотря в каком виде вы ходите увидеть байт на дисплее.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
GRAD
Родился
Сообщения: 2
Зарегистрирован: Ср май 13, 2015 10:50:41

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

Сообщение GRAD »

Gudd-Head писал(а):
GRAD писал(а):как прилетевший байт от ведомого положить в переменную чтоб он появился на дисплее?
Смотря в каком виде вы ходите увидеть байт на дисплее.
В шестнадцатеричном виде надо
gis
Родился
Сообщения: 16
Зарегистрирован: Пт ноя 07, 2014 20:34:56

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

Сообщение gis »

Подскажите как в cvavr ножки из разных портов собрать в один байт (м.б. с помощью #define или чего-то еще). Устал уже искать...
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

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

Сообщение uk8amk »

С помощью битовых масок и операций сдвига.
Аватара пользователя
kolobokus
Встал на лапы
Сообщения: 116
Зарегистрирован: Пн дек 29, 2014 19:51:49
Откуда: Санкт-Петербург

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

Сообщение kolobokus »

Не получается отформатировать выводимую на LCD через sprintf строку.
Мне требуется, чтобы при выводе числа вида ХХ.Х (например 34.7) оно выравнивалось вправо,
а слева не дополнялось нулями, когда целая часть меньше заданной ширины "2".
Если использовать числа int, искусственно формируя число с "плавающей точкой", например так:
unsigned int I; sprintf(current,"%2u.%u A",I/100,(I%100+5)/10);
то все получается, но этот код очень долго выполняется.
А вот при конфигурировании проекта в float и выводе в виде:
float mAh; sprintf(capacity,"%2.1f Ah ",mAh/1000);
число отказывается выравниваться по правому краю, хотя код выполняется значительно быстрее (в 6 раз!)
Как выровнить по правому краю, выводя float?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18614
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

"% 6.1f" не?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
kolobokus
Встал на лапы
Сообщения: 116
Зарегистрирован: Пн дек 29, 2014 19:51:49
Откуда: Санкт-Петербург

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

Сообщение kolobokus »

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

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

Сообщение WiseLord »

Кстати, в CodeVision использование sprintf тоже увеличивает размер прошивки сразу на пару килобайт (как в avr-gcc)?

Никогда не использовал эти функции на МК (из stdlib и прочих) из-за их "жирности".
prw07
Мучитель микросхем
Сообщения: 403
Зарегистрирован: Ср янв 26, 2011 17:00:30

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

Сообщение prw07 »

Увеличивает и существенно. Если тини2313 использовать, то пара функций и уже не лезет.
gis
Родился
Сообщения: 16
Зарегистрирован: Пт ноя 07, 2014 20:34:56

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

Сообщение gis »

Подскажите cvavr ругается на объявление функции:

void ind_out(unsigned char a,b)
{
PORTC|=(1<<b) ;
IND_A = indikator [a] & 1 ;
IND_B = indikator [a] & (1<<1);
IND_C = indikator [a] & (1<<2);
IND_D = indikator [a] & (1<<3);
IND_E = indikator [a] & (1<<4);
IND_F = indikator [a] & (1<<5);
IND_G = indikator [a] & (1<<6);
PORTC&=~(1<<b);
}

пишет declaration syntax error когда убираю вторую переменную ошибка пропадает. В чем причина?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

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

Дак Вы тип второй переменной не указываете.
DC_DC
Родился
Сообщения: 8
Зарегистрирован: Вс окт 05, 2014 21:11:48

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

Сообщение DC_DC »

Всем доброго времени суток. Пожалуста помогите мне кто нибудь разобратся. Я сделал проэктик в CAVR и хочу заставить мою Tiny2313 что бы на ножке OCA0A был ШИМ. Например я выставляю в мастере частоту ШИМа на 125 Кгц. а вместо этого у меня на выходе на много меньше. Даже вот когда я выставляю частоту без делителя то вместо 8 Мгц у меня всего лишь около 31 Кгц. У меня в этом деле очень мало знаний. Вот сама собственно и программа. Буду очень благодарен за помощью

Chip type : ATtiny2313
AVR Core Clock frequency: 8,000000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 32
*****************************************************/

#include <tiny2313.h>
#include <delay.h>

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x07;

// Port D initialization
// Func6=In Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=0 State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x20;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Fast PWM top=0xFF
// OC0A output: Non-Inverted PWM
// OC0B output: Non-Inverted PWM
TCCR0A=0xA3;
TCCR0B=0x01;
TCNT0=0x00;
OCR0A=0x7F;
OCR0B=0x7F;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x00;

// USART initialization
// USART disabled
UCSRB=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
DIDR=0x00;

while (1)
{


}
}
prw07
Мучитель микросхем
Сообщения: 403
Зарегистрирован: Ср янв 26, 2011 17:00:30

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

Сообщение prw07 »

а вместо этого у меня на выходе на много меньше
а где это видно? в смысле симулятор показывает или готовое устройство?
Ответить

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