CodeVision AVR в вопросах и ответах
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
да в том, что у вас нет подавления дребезга кнопок, и я предвижу случайное "задваивание" нажатий.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Krik99
- Потрогал лапой паяльник
- Сообщения: 375
- Зарегистрирован: Вс мар 04, 2007 13:14:25
- Откуда: Украина
- Контактная информация:
ARV писал(а):да в том, что у вас нет подавления дребезга кнопок, и я предвижу случайное "задваивание" нажатий.
Ну в протеусе всё работает, в железе не собирал, думаю задержки хватит для предотвращения дребезга... Повторюсь ещё раз, этот код для ознакомительных целей. ну если что прийдётся подправить код.

- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Krik99, протеус не имитирует дребезг - там всегда все работает. а ваша задержка никакого толку не дает - с чего вы взяли, что она как-то подавит дребезг?!
если вы предлагаете код для обучающихся, вы либо должны гарантировать, что он верный, либо четко уведомить о его недостатках, иначе кто-то будет маяться неделю, пока ему не объяснят, что ваш "ознакомительный" код - не рабочий...
если вы предлагаете код для обучающихся, вы либо должны гарантировать, что он верный, либо четко уведомить о его недостатках, иначе кто-то будет маяться неделю, пока ему не объяснят, что ваш "ознакомительный" код - не рабочий...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- mr.Kirill
- Мучитель микросхем
- Сообщения: 438
- Зарегистрирован: Вт сен 25, 2007 19:40:26
- Откуда: Челябинск
Krik99 писал(а):PS. Не ленитесь и пользуйтесь генератором начального кода в Code Vision AVR, там довольно таки легко всё железо МК настроить...
Вот как раз с точность до наоборот.
Не ленитесь, ознакомтесь с конфигурированием МК и настраивайте все максимально вручную. С "программированием мышкой" далеко не уедишь. Опыт программирования растет не от количества написанных программ, а от количества собственноручно набранных строчек кода (Ctrl+C/Ctrl+V - не считается за написание строки).
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
не вполне согласен. я бы сказал, опыт растет не от количества написанных строчек, а от количества отлаженных самостоятельно строчек.mr.Kirill писал(а):Опыт программирования растет не от количества написанных программ, а от количества собственноручно набранных строчек кода (Ctrl+C/Ctrl+V - не считается за написание строки).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Krik99
- Потрогал лапой паяльник
- Сообщения: 375
- Зарегистрирован: Вс мар 04, 2007 13:14:25
- Откуда: Украина
- Контактная информация:
mr.Kirill писал(а):Krik99 писал(а):PS. Не ленитесь и пользуйтесь генератором начального кода в Code Vision AVR, там довольно таки легко всё железо МК настроить...
Вот как раз с точность до наоборот.
Не ленитесь, ознакомтесь с конфигурированием МК и настраивайте все максимально вручную. С "программированием мышкой" далеко не уедишь. Опыт программирования растет не от количества написанных программ, а от количества собственноручно набранных строчек кода (Ctrl+C/Ctrl+V - не считается за написание строки).
Ну тогда надо переходить на WINAVR. А так если уж пользуешся компилятором Code Vision, почему не воспользоваться и его встроенным генератором начального кода.

- mr.Kirill
- Мучитель микросхем
- Сообщения: 438
- Зарегистрирован: Вт сен 25, 2007 19:40:26
- Откуда: Челябинск
Из меня объяснятель не очень то. В принципе это и имел ввиду. Какой толк тупо их набирать, нужно чтобы они работали как положено, а это только после отладки.ARV писал(а):не вполне согласен. я бы сказал, опыт растет не от количества написанных строчек, а от количества отлаженных самостоятельно строчек.
- mr.Kirill
- Мучитель микросхем
- Сообщения: 438
- Зарегистрирован: Вт сен 25, 2007 19:40:26
- Откуда: Челябинск
Krik99 писал(а):Ну тогда надо переходить на WINAVR. А так если уж пользуешся компилятором Code Vision, почему не воспользоваться и его встроенным генератором начального кода.
Ну так а что мешает перейти на WinAVR, между прочим бесплатный и более правильный с точки зрения стандарта языка С.
Сам работаю в CodeVision, WinAVR, IAR. Начинал с ASM (AVR Studio), потому сейчас для настройки железа МК не составляет труда воспользоваться datasheet'ом, которому я доверяю больше чем Code Wizard'у CVAVR.
- Gryphon
- Нашел транзистор. Понюхал.
- Сообщения: 152
- Зарегистрирован: Пн ноя 03, 2008 12:08:42
- Откуда: Владивосток
- Контактная информация:
Привет всем форумчанам! Решил значит изучить CodeVisionAVR приобрел
LCD (совместим с hd44780 и имеется русский набор букв) и attiny2313. Кто знает, как написать простенькую программку (может, через какие-либо библиотеки), чтоб что-нибудь выводила на дисплей. Дисплей подключен по 4-х битной схеме. Вот небольшая табличка подключений.
pb5-E
pb4-RS
pb3-AD7
pb2-AD6
pb1-AD5
pb0-AD4
LCD (совместим с hd44780 и имеется русский набор букв) и attiny2313. Кто знает, как написать простенькую программку (может, через какие-либо библиотеки), чтоб что-нибудь выводила на дисплей. Дисплей подключен по 4-х битной схеме. Вот небольшая табличка подключений.
pb5-E
pb4-RS
pb3-AD7
pb2-AD6
pb1-AD5
pb0-AD4
Вы получаете от людей больше, если им противоречите
Есть вопрос, но скорее всего он глуп и не оправдан, но всё же я его задам.
У меня есть стандартный датчик температуры DS18B20, я хочу научится с ним работать.
Мне сказали что в библиотеки ds1820.h много всего лишнего, и соответственно занимает много места. И я прочитал что можно не подключать эту библиотеку, а самому написать её. Подскажите пожалуйста где можно про это побольше прочитать? Что вы вообще думаете по этому поводу?
У меня есть стандартный датчик температуры DS18B20, я хочу научится с ним работать.
Мне сказали что в библиотеки ds1820.h много всего лишнего, и соответственно занимает много места. И я прочитал что можно не подключать эту библиотеку, а самому написать её. Подскажите пожалуйста где можно про это побольше прочитать? Что вы вообще думаете по этому поводу?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
не знаю, есть там лишнее или нет... написать свою - можно, особенно если не заморачиваться с некоторыми фичами типа поиска адресов... но мне кажется, что слухи о большом размере сильно преувеличены. во всяком случае если и писать по-своему, то не для того, чтобы уменьшить размер...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Krik99
- Потрогал лапой паяльник
- Сообщения: 375
- Зарегистрирован: Вс мар 04, 2007 13:14:25
- Откуда: Украина
- Контактная информация:
To Gryphon
Вот взял из примера Code Vision:
Вот взял из примера 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);
}

- mr.Kirill
- Мучитель микросхем
- Сообщения: 438
- Зарегистрирован: Вт сен 25, 2007 19:40:26
- Откуда: Челябинск
В примере CodeVision, что был приведен выше индикатор работает в 4х-битном режиме.Gryphon писал(а):А как указать, какие выводы мк используются для индикациии и что он установлен в 4-Х битном режиме. Ведь в примере там идет 8-битный режим.
Igor_67 писал(а):Простейший примерчик. Я вот попробовал скомпоновать два куска кода из exempl-ов. А именно: 1) опрос клавиатурной матрицы и 2) измерение приходящего на АЦП сигнала. По отдельности - всё компилируется, а вместе пишет два предупреждения. В итоге на индикаторе - ничего.
Так может написать сюда, какие предупреждения? Телепатов тут нэма.
Начну с простейшего. Вот такой кусочек кода:
// 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, чтоб потом вывести на индикацию?
Я в программировании МК пока что полный чайник, поэтому прошу сильно не пинать.
// 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
- Откуда: Новочеркасск
- Контактная информация:
Igor_67, судя по всему, компилятору не нравится, как вы пытаетесь получить время...это, мягко говоря, неверно.
функция rtc_get_time() должна получить в виде параметров не константы, а 3 переменных, т.е. обращение должно быть таким:
и вывод на дисплей, соответственно, должен быть с участием переменных hour, min и sec - часы, минуты и секунды соответственно
Код: Выделить всё
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 - часы, минуты и секунды соответственно
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Переписал вот так:
// 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);
};
}
Теперь ошибок и предупреждений нет. На индикатор всё правильно выйдет? Или надо что то исправить?
// 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);
};
}
Теперь ошибок и предупреждений нет. На индикатор всё правильно выйдет? Или надо что то исправить?