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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

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

Мой уютный бложик... заходите!
Аватара пользователя
Krik99
Потрогал лапой паяльник
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина
Контактная информация:

Сообщение Krik99 »

ARV писал(а):да в том, что у вас нет подавления дребезга кнопок, и я предвижу случайное "задваивание" нажатий.

Ну в протеусе всё работает, в железе не собирал, думаю задержки хватит для предотвращения дребезга... Повторюсь ещё раз, этот код для ознакомительных целей. ну если что прийдётся подправить код.
Изображение
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Krik99, протеус не имитирует дребезг - там всегда все работает. а ваша задержка никакого толку не дает - с чего вы взяли, что она как-то подавит дребезг?!

если вы предлагаете код для обучающихся, вы либо должны гарантировать, что он верный, либо четко уведомить о его недостатках, иначе кто-то будет маяться неделю, пока ему не объяснят, что ваш "ознакомительный" код - не рабочий...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
mr.Kirill
Мучитель микросхем
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

Krik99 писал(а):PS. Не ленитесь и пользуйтесь генератором начального кода в Code Vision AVR, там довольно таки легко всё железо МК настроить...

Вот как раз с точность до наоборот.
Не ленитесь, ознакомтесь с конфигурированием МК и настраивайте все максимально вручную. С "программированием мышкой" далеко не уедишь. Опыт программирования растет не от количества написанных программ, а от количества собственноручно набранных строчек кода (Ctrl+C/Ctrl+V - не считается за написание строки).
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

mr.Kirill писал(а):Опыт программирования растет не от количества написанных программ, а от количества собственноручно набранных строчек кода (Ctrl+C/Ctrl+V - не считается за написание строки).
не вполне согласен. я бы сказал, опыт растет не от количества написанных строчек, а от количества отлаженных самостоятельно строчек.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Krik99
Потрогал лапой паяльник
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина
Контактная информация:

Сообщение Krik99 »

mr.Kirill писал(а):
Krik99 писал(а):PS. Не ленитесь и пользуйтесь генератором начального кода в Code Vision AVR, там довольно таки легко всё железо МК настроить...

Вот как раз с точность до наоборот.
Не ленитесь, ознакомтесь с конфигурированием МК и настраивайте все максимально вручную. С "программированием мышкой" далеко не уедишь. Опыт программирования растет не от количества написанных программ, а от количества собственноручно набранных строчек кода (Ctrl+C/Ctrl+V - не считается за написание строки).

Ну тогда надо переходить на WINAVR. А так если уж пользуешся компилятором Code Vision, почему не воспользоваться и его встроенным генератором начального кода. :)
Изображение
Аватара пользователя
mr.Kirill
Мучитель микросхем
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

ARV писал(а):не вполне согласен. я бы сказал, опыт растет не от количества написанных строчек, а от количества отлаженных самостоятельно строчек.
Из меня объяснятель не очень то. В принципе это и имел ввиду. Какой толк тупо их набирать, нужно чтобы они работали как положено, а это только после отладки.
Аватара пользователя
mr.Kirill
Мучитель микросхем
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

Krik99 писал(а):Ну тогда надо переходить на WINAVR. А так если уж пользуешся компилятором Code Vision, почему не воспользоваться и его встроенным генератором начального кода. :)

Ну так а что мешает перейти на WinAVR, между прочим бесплатный и более правильный с точки зрения стандарта языка С.
Сам работаю в CodeVision, WinAVR, IAR. Начинал с ASM (AVR Studio), потому сейчас для настройки железа МК не составляет труда воспользоваться datasheet'ом, которому я доверяю больше чем Code Wizard'у CVAVR.
Аватара пользователя
Gryphon
Нашел транзистор. Понюхал.
Сообщения: 152
Зарегистрирован: Пн ноя 03, 2008 12:08:42
Откуда: Владивосток
Контактная информация:

Сообщение Gryphon »

Привет всем форумчанам! Решил значит изучить CodeVisionAVR приобрел
LCD (совместим с hd44780 и имеется русский набор букв) и attiny2313. Кто знает, как написать простенькую программку (может, через какие-либо библиотеки), чтоб что-нибудь выводила на дисплей. Дисплей подключен по 4-х битной схеме. Вот небольшая табличка подключений.
pb5-E
pb4-RS
pb3-AD7
pb2-AD6
pb1-AD5
pb0-AD4
Вы получаете от людей больше, если им противоречите
Аватара пользователя
Krik99
Потрогал лапой паяльник
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина
Контактная информация:

Сообщение Krik99 »

To Gryphon
В Code Vision есть пример работы с таким дисплеем, также имеется библиотека по работе с этим дисплеем.
Изображение
Аватара пользователя
Sounds
Прорезались зубы
Сообщения: 238
Зарегистрирован: Вт май 27, 2008 23:23:24

Сообщение Sounds »

Есть вопрос, но скорее всего он глуп и не оправдан, но всё же я его задам.
У меня есть стандартный датчик температуры DS18B20, я хочу научится с ним работать.
Мне сказали что в библиотеки ds1820.h много всего лишнего, и соответственно занимает много места. И я прочитал что можно не подключать эту библиотеку, а самому написать её. Подскажите пожалуйста где можно про это побольше прочитать? Что вы вообще думаете по этому поводу?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

не знаю, есть там лишнее или нет... написать свою - можно, особенно если не заморачиваться с некоторыми фичами типа поиска адресов... но мне кажется, что слухи о большом размере сильно преувеличены. во всяком случае если и писать по-своему, то не для того, чтобы уменьшить размер...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Gryphon
Нашел транзистор. Понюхал.
Сообщения: 152
Зарегистрирован: Пн ноя 03, 2008 12:08:42
Откуда: Владивосток
Контактная информация:

Сообщение Gryphon »

А более поподробнее нельзя по HD44780? Может у вас есть готовые проекты?
Вы получаете от людей больше, если им противоречите
Аватара пользователя
Krik99
Потрогал лапой паяльник
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина
Контактная информация:

Сообщение Krik99 »

To Gryphon
Вот взял из примера Code Vision:

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

/* 
  [LCD]   [STK500 PORTC HEADER]
   1 GND- 9  GND
   2 +5V- 10 VCC 
   3 VLC- LCD contrast control voltage 0..1V
   4 RS - 1  PC0
   5 RD - 2  PC1
   6 EN - 3  PC2
  11 D4 - 5  PC4
  12 D5 - 6  PC5
  13 D6 - 7  PC6
  14 D7 - 8  PC7
*/

// the LCD is connected to PORTC outputs
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm

// include the LCD driver routines
#include <lcd>

void main(void)
{
// initialize the LCD for
// 2 lines & 16 columns
lcd_init(16);

// go on the second LCD line
lcd_gotoxy(0,1);

// display the message
lcd_putsf("Hello world");

// stop here
while (1);
}
Изображение
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

Простейший примерчик. Я вот попробовал скомпоновать два куска кода из exempl-ов. А именно: 1) опрос клавиатурной матрицы и 2) измерение приходящего на АЦП сигнала. По отдельности - всё компилируется, а вместе пишет два предупреждения. В итоге на индикаторе - ничего. :(
Аватара пользователя
Gryphon
Нашел транзистор. Понюхал.
Сообщения: 152
Зарегистрирован: Пн ноя 03, 2008 12:08:42
Откуда: Владивосток
Контактная информация:

Сообщение Gryphon »

А как указать, какие выводы мк используются для индикациии и что он установлен в 4-Х битном режиме. Ведь в примере там идет 8-битный режим.
Вы получаете от людей больше, если им противоречите
Аватара пользователя
mr.Kirill
Мучитель микросхем
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

Gryphon писал(а):А как указать, какие выводы мк используются для индикациии и что он установлен в 4-Х битном режиме. Ведь в примере там идет 8-битный режим.
В примере CodeVision, что был приведен выше индикатор работает в 4х-битном режиме.
Igor_67 писал(а):Простейший примерчик. Я вот попробовал скомпоновать два куска кода из exempl-ов. А именно: 1) опрос клавиатурной матрицы и 2) измерение приходящего на АЦП сигнала. По отдельности - всё компилируется, а вместе пишет два предупреждения. В итоге на индикаторе - ничего.

Так может написать сюда, какие предупреждения? Телепатов тут нэма.
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

Начну с простейшего. Вот такой кусочек кода:
// I2C Bus initialization
i2c_init();

// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: On
// Square wave frequency: 1Hz
rtc_init(0,1,0);

// LCD module initialization
lcd_init(16);

while (1)
{
// Place your code here
rtc_set_time(12,0,0);
clock=rtc_get_time(0,0,0);

sprintf(lcd_buffer,"time:%c",clock);
// display the clock
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(200);
};
}
При компиляции пишет:
Error: F:\cvavr2\temp\4\4.c(153): a value of type 'const void' can't be assigned to an entity of type 'unsigned char'
Я так понимаю, что косяк при чтении времени из DS1307? Как здесь надо правильно его считать в буфер LCD, чтоб потом вывести на индикацию?
Я в программировании МК пока что полный чайник, поэтому прошу сильно не пинать.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Igor_67, судя по всему, компилятору не нравится, как вы пытаетесь получить время...

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

clock=rtc_get_time(0,0,0); 
это, мягко говоря, неверно.
функция rtc_get_time() должна получить в виде параметров не константы, а 3 переменных, т.е. обращение должно быть таким:

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

unsigned char hour, min, sec;
rtc_get_time(&hour, &min, &sec);

и вывод на дисплей, соответственно, должен быть с участием переменных hour, min и sec - часы, минуты и секунды соответственно
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

Переписал вот так:

// I2C Bus initialization
i2c_init();

// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: On
// Square wave frequency: 1Hz
rtc_init(0,1,0);

// LCD module initialization
lcd_init(16);

while (1)
{
// Place your code here
rtc_set_time(12,0,0);
rtc_get_time(&hour, &min, &sec);
sprintf(lcd_buffer,"time:%c:%c:%c",hour,min,sec);
// display the temperature
lcd_clear();
lcd_puts(lcd_buffer);
//задержка введена для тестирования, потом уберу
delay_ms(200);
};
}

Теперь ошибок и предупреждений нет. На индикатор всё правильно выйдет? Или надо что то исправить?
Ответить

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