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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

FreshMan писал(а):есть вот такая програмка.................., мне здесь непонятен смысл команды printf("Off");..........., где должнен печатать это слово ПК ???

так наверно через терминал принимает,а показывает в окошке терминала
В поисках истины человек развивается.
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

ChipKiller писал(а):
FreshMan писал(а):приведи полное название книжек, плиз :)
..а погуглить тяжело?
Евстифеев AVR, Лебедев AVR и сразу море ссылок....

да смотрел я уже эти книжки..., от лица начинающих скажу так: они не очень хороши т.к не разжовывают все по порядку и толково................, а для меня главное понять ПОЧЕМУ ЧТО-ТО ПРОИСХОДИТ ТАК А НЕ ИНАЧЕ, а в них этого нет..........., тобишь они ориентированны на более продвинутого пользователя :tea:
Tell Me The Truth
Аватара пользователя
totty
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср авг 03, 2011 22:26:02
Откуда: Севастополь

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

Сообщение totty »

да смотрел я уже эти книжки..., от лица начинающих скажу так: они не очень хороши т.к не разжовывают все по порядку и толково................, а для меня главное понять ПОЧЕМУ ЧТО-ТО ПРОИСХОДИТ ТАК А НЕ ИНАЧЕ, а в них этого нет..........., тобишь они ориентированны на более продвинутого пользователя :tea:


сам начинающий всю информации черпал из этих книжек, иногда более подробно искал на avrlab.com, а если хотите досконоально понимать тогда, как мне кажется, нужно изучать бейсик, а СИ очень даже толково там разжевано, мб не с первого раза все схватывается, но с 2-3 уже просветление =))


Радиолюбитель - Белов А. В. - Самоучитель разработчика устройств на микроконтроллерах AVR (+CD) [2008, DjVu, ISO, RUS]

Фрунзе А.В., Фрунзе А.А. - Микроконтроллеры? Это же просто! (в 4 томах) [2002-2008, DjVu, RUS]

Шпак Ю.А. - Программирование на языке C для AVR и PIC микроконтроллеров (2-е издание). CD к книге [2011, ISO, RUS]

http://rutracker.org/ тут много очень, в поиск задайте параметр"микроконтролелеры" книг и видеопособий море
gavrila
Родился
Сообщения: 16
Зарегистрирован: Ср ноя 23, 2011 01:31:28
Откуда: Украина, Харьков

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

Сообщение gavrila »

Подскажите, как и чем можно отследить изменение напряжения?
МК Attiny90S2313 читаю-читаю, вроде как для этого можно использовать аналоговый компаратор
в русском даташите написано
Аналоговый компаратор сравнивает входные напряжение на положительном входе PB0 (AIN0) и отрицательном входе (AIN1).
но как это использовать не пойму :(
подкиньте, плз, простой примерчик или ссылку где посмотреть или почитать
Mr.Denis
Прорезались зубы
Сообщения: 220
Зарегистрирован: Пт авг 07, 2009 22:06:49
Откуда: Россия, Москва

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

Сообщение Mr.Denis »

С новым годом друзья!!!)))))
Купил набор avr910 USB программатора, сейчас его собрал, а он не работает.(((
При попытки запрограммировать МК пишит: AVRProg error entering programming mode.

Подскажите что делать???
STM32F4 Discovery + KEIL + Windows 7
Mr.Denis
Прорезались зубы
Сообщения: 220
Зарегистрирован: Пт авг 07, 2009 22:06:49
Откуда: Россия, Москва

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

Сообщение Mr.Denis »

В окне настройки программатора выбрал:
Программатор: atmel AVRProg (910)
Номер порта: com4
Скорость: 19200

Схему проверил, вроде все нормально.

Может к программируемому мк кварц поставить?
Я его без кварца подключил.
STM32F4 Discovery + KEIL + Windows 7
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

штудирую Си по Белову.............., в его учебнике есть вот таой пример,
мне не понятен смысл команды PORTB=rab^0xFF;
почему просто в данном случае нелзя присвоить регистру rab=0b01111111, а потом уже в теле цикла с помощью команды rab = rab >> 1 сдвигать первоначальное значение ? :dont_know: зачем столько мороки ?????? :dont_know: :dont_know: :dont_know:

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

while (1)
   {
   if (PIND.0==1)  // Проверка состояния переключателя
     {
     rab = 0b10000000;  // Сдвиг вправо
     while (rab!=0)
        {
          PORTB=rab^0xFF;  // Запись в порт с инверсией
          rab = rab >> 1;  // Сдвиг разрядов
          delay_ms (200);  // Задержка на 200 мсек
        } 
     } 
   else
     {
     rab = 0b00000001;  // Сдвиг влево
     while (rab!=0)
        {
          PORTB=rab^0xFF;  // Запись в порт с инверсией
          rab = rab << 1;  // Сдвиг разрядов
          delay_ms (200);  // Задержка на 200 мсек
        } 
     }
   };
}
Tell Me The Truth
Аватара пользователя
totty
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср авг 03, 2011 22:26:02
Откуда: Севастополь

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

Сообщение totty »

gavrila писал(а):Подскажите, как и чем можно отследить изменение напряжения?
МК Attiny90S2313 читаю-читаю, вроде как для этого можно использовать аналоговый компаратор
в русском даташите написано
Аналоговый компаратор сравнивает входные напряжение на положительном входе PB0 (AIN0) и отрицательном входе (AIN1).
но как это использовать не пойму :(
подкиньте, плз, простой примерчик или ссылку где посмотреть или почитать


вот про компаратор и схемы с описанием
http://easyelectronics.ru/avr-uchebnyj-kurs-ispolzovanie-analogovogo-komparatora.html

думаю будет полезна информация как дополнительно =)
http://easyelectronics.ru/avr-uchebnyj-kurs-delaem-acp-iz-analogovogo-komparatora.html
Аватара пользователя
totty
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср авг 03, 2011 22:26:02
Откуда: Севастополь

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

Сообщение totty »

почему просто в данном случае нелзя присвоить регистру rab=0b01111111, а потом уже в теле цикла с помощью команды rab = rab >> 1 сдвигать первоначальное значение ? зачем столько мороки ??????


могу предположить чтобы сохранить прошлое состояние битов на порту, когда меняется положение переключателя
Mr.Denis
Прорезались зубы
Сообщения: 220
Зарегистрирован: Пт авг 07, 2009 22:06:49
Откуда: Россия, Москва

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

Сообщение Mr.Denis »

Mr.Denis писал(а):С новым годом друзья!!!)))))
Купил набор avr910 USB программатора, сейчас его собрал, а он не работает.(((
При попытки запрограммировать МК пишит: AVRProg error entering programming mode.

Подскажите что делать???


Неужели не кто не знает в чем проблемам?
STM32F4 Discovery + KEIL + Windows 7
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Mr.Denis писал(а):
Mr.Denis писал(а):С новым годом друзья!!!)))))
Купил набор avr910 USB программатора, сейчас его собрал, а он не работает.(((
При попытки запрограммировать МК пишит: AVRProg error entering programming mode.

Подскажите что делать???


Неужели не кто не знает в чем проблемам?

Проблема в программаторе полная лажа.
Купи не жмись нормальный собранный исп программатор.Или собери сам из пары микросхем.

А вы его программировали вообще?Там ведь контроллер его первоначально нужно запрограммировать!!!
Найди LPT порт и проверь.есть программы которые работают через него.пони прог или всякие такие.
из авр910 можно просто сделать usbASP говорят он работает.
А еще питание должно быть на целевой плате(той на которой программируемый микроконтроллер)
В поисках истины человек развивается.
antosh
Родился
Сообщения: 11
Зарегистрирован: Ср янв 27, 2010 18:19:50

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

Сообщение antosh »

Добрый день. Всех с Новым Годом.
У меня возникла маленькая проблемка... поставил на ПК PCI-LPT карту, но нужный адрес программатора не могу поставить, что можете посоветовать
1.PNG
(9.94 КБ) 372 скачивания

2.PNG
(25.5 КБ) 373 скачивания

Заранее спасибо!
kotelectron
Родился
Сообщения: 7
Зарегистрирован: Вт дек 20, 2011 13:33:46

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

Сообщение kotelectron »

Здравствуйте. Всех с новым годом.
Помогите разобраться начинающему.

При написании программы активно использую локальные переменные. Настолько активно, что получил предупреждение о превышении установленного размера Data Stack.

Почему растет размер Data Stack? Я ведь добавляю локальные переменные, память для которых должна выделяться на время работы функции, а реально получается, что под ВСЕ локальные переменные программы в CV сразу выделена память.
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

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

Сообщение BCluster »

kotelectron писал(а):что под ВСЕ локальные переменные программы в CV сразу выделена память.

Если вы выполняете функцию хоть раз конечно будет для нее выделена память.

Есть способы нормировать расход, но для этого приведите код и тип МК который используете
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

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

Сообщение BerZerK-ku »

Вероятно это из-за большой вложенности используемых вами функций.
kotelectron
Родился
Сообщения: 7
Зарегистрирован: Вт дек 20, 2011 13:33:46

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

Сообщение kotelectron »

BCluster писал(а):BCluster
BerZerK-ku писал(а):BerZerK-ku
спасибо


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

я так понял Estimated Data Stack usage - это максимальное использование стека данных. т.е. компилятор просчитывает для всех функций размер выделяемой памяти при вызове и находит среди них максимальное значение. Estimated (ориентировочное) - т.к. могут возникать прерывания, для них еще потребуется выделение памяти. так? поправте меня пожалуйста.

мк tiny44
kotelectron
Родился
Сообщения: 7
Зарегистрирован: Вт дек 20, 2011 13:33:46

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

Сообщение kotelectron »

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

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

#include <tiny44.h> 
     

int gsumm1 = 0;   
int gsumm2 = 0;
int gsumm3 = 0;   



void func1(char chr1, char chr2)
{
  int summ;
  int s;

  summ = chr1 + chr2;
  summ /= 12;
     
  gsumm1++;     
  gsumm2++;     
  gsumm3++;
 
  s = gsumm1 + gsumm2 + gsumm3;
 
  gsumm1 = s - summ;



void func2(char chr1, char chr2)
{
  int summ;
  int s;

  summ = chr1 + chr2;
  summ /= 12;
     
  gsumm1++;     
  gsumm2++;     
  gsumm3++;
 
  s = gsumm1 + gsumm2 + gsumm3;
 
  gsumm2 = s - summ;




void main(void)
{
  gsumm1=8;     
  gsumm2=23;     
  gsumm3=3;

  func1(12,gsumm2); 
 
  if(gsumm3)func2(15,45);
 
  while (1);
}




Chip: ATtiny44
Clock frequency: 8,000000 MHz
Memory model: Small
Optimize for: Size
(s)printf features: int, width
(s)scanf features: int, width
Promote 'char' to 'int': Yes
'char' is unsigned: Yes
global 'const' stored in FLASH: No
8 bit enums: Yes
Enhanced core instructions: Yes
Automatic register allocation: Yes
Smart register allocation: Yes

Build: 40
657 line(s) compiled
No errors
No warnings

Bit variables size: 0 byte(s)

Data Stack area: 0x60 to 0x9F
Data Stack size: 64 byte(s)
Estimated Data Stack usage: 6 byte(s)

RAM Global variables size: 0 byte(s)

Hardware Stack area: 0xA0 to 0x15F
Hardware Stack size: 192 byte(s)

Heap size: 0 byte(s)

EEPROM usage: 0 byte(s), 0,0% of EEPROM
Program size: 191 words (382 bytes), 9,3% of FLASH


объявлено 3 глобальных переменных типа int. Где для них выделено место? должно быть 6 байт под RAM Global variables size.
Если объявить как long, то память выделяется. почему?
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

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

Сообщение BerZerK-ku »

Поэкспериментируйте с отключенной оптимизацией. В IAR-e под переменные выделяется место.
Аватара пользователя
Garin
Потрогал лапой паяльник
Сообщения: 351
Зарегистрирован: Пн сен 12, 2011 12:13:46

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

Сообщение Garin »

Люди помогите практическим примером, есть например число 12:34:56 нужно чтобы число 34 имело вид мигающего курсора...
Исходник приложил .
Спасибо.
Вложения
курсор.rar
(55.96 КБ) 191 скачивание
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Garin писал(а):Люди помогите практическим примером, есть например число 12:34:56 нужно чтобы число 34 имело вид мигающего курсора...
Исходник приложил .
Спасибо.

в вашем исходнике неудобно данные расположены
unsigned long int daTa=123456;

вот если бы было к примеру
unsigned long int daTa1=12, daTa2=34, daTa3=56;

ну или как вы их там сами назовете,
то можно было

//прерывание 0,5 секунд

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

if (kursor){
        switch(kursor){
              case 1 : if (data_show1){data_show1=00;}
                           else{data_show1=daTa1;}}
                 break;
              case 2 : if (data_show2){data_show2=00;}
                           else{data_show2=daTa2;}}
                 break;
              case 3 : if (data_show3){data_show3=00;}
                           else{data_show1=daTa1;}}
                 break;
              defoult :break;
         }//switch
}//if


////////////////////////////

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

while (1)
      {
 lcd_gotoxy(3,0);
 lcd_putsf(" ");
 lcd_putchar((daTashow1/10)%10+0x30);
 lcd_putchar(daTashow1%10+0x30);
 lcd_putsf(":");
lcd_putchar((daTashow2/10)%10+0x30);
 lcd_putchar(daTashow2%10+0x30);
 lcd_putsf(":");
 lcd_putchar((daTashow3/10)%10+0x30);
 lcd_putchar(daTashow3%10+0x30);
      };

}

для того чтоб вызвать курсор глобальной переменной kursor присваиваем значение от 1 до 3.
для первой пары,второй и третьей пары цифр соответственно.на остальные значения программа не обращает внимания
Убрать курсор -присваиваем курсор 0 и мигающей переменной реальное значение.

Ну как то так или как там сами додумаете

а еще есть где-то в дисплее курсор:) в виде подчеркивания только я не знаю как им пользоваться.
вроде команда есть setcursor(); или что-то вроде того.
В поисках истины человек развивается.
Ответить

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