Страница 169 из 421

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

Добавлено: Сб дек 31, 2011 14:40:07
vitalik_1984
FreshMan писал(а):есть вот такая програмка.................., мне здесь непонятен смысл команды printf("Off");..........., где должнен печатать это слово ПК ???
так наверно через терминал принимает,а показывает в окошке терминала

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

Добавлено: Сб дек 31, 2011 14:49:05
FreshMan
ChipKiller писал(а):
FreshMan писал(а):приведи полное название книжек, плиз :)
..а погуглить тяжело?
Евстифеев AVR, Лебедев AVR и сразу море ссылок....
да смотрел я уже эти книжки..., от лица начинающих скажу так: они не очень хороши т.к не разжовывают все по порядку и толково................, а для меня главное понять ПОЧЕМУ ЧТО-ТО ПРОИСХОДИТ ТАК А НЕ ИНАЧЕ, а в них этого нет..........., тобишь они ориентированны на более продвинутого пользователя :tea:

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

Добавлено: Сб дек 31, 2011 15:31:41
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/ тут много очень, в поиск задайте параметр"микроконтролелеры" книг и видеопособий море

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

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

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

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

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

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

Добавлено: Вс янв 01, 2012 22:10:09
Mr.Denis
В окне настройки программатора выбрал:
Программатор: atmel AVRProg (910)
Номер порта: com4
Скорость: 19200

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

Может к программируемому мк кварц поставить?
Я его без кварца подключил.

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

Добавлено: Пн янв 02, 2012 00:56:37
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 мсек
        }  
     }
   };
}

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

Добавлено: Пн янв 02, 2012 02:56:48
totty
gavrila писал(а):Подскажите, как и чем можно отследить изменение напряжения?
МК Attiny90S2313 читаю-читаю, вроде как для этого можно использовать аналоговый компаратор
в русском даташите написано
Аналоговый компаратор сравнивает входные напряжение на положительном входе PB0 (AIN0) и отрицательном входе (AIN1).
но как это использовать не пойму :(
подкиньте, плз, простой примерчик или ссылку где посмотреть или почитать
вот про компаратор и схемы с описанием
http://easyelectronics.ru/avr-uchebnyj- ... atora.html

думаю будет полезна информация как дополнительно =)
http://easyelectronics.ru/avr-uchebnyj- ... atora.html

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

Добавлено: Пн янв 02, 2012 03:07:48
totty
почему просто в данном случае нелзя присвоить регистру rab=0b01111111, а потом уже в теле цикла с помощью команды rab = rab >> 1 сдвигать первоначальное значение ? зачем столько мороки ??????
могу предположить чтобы сохранить прошлое состояние битов на порту, когда меняется положение переключателя

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

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

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

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

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

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

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

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

А вы его программировали вообще?Там ведь контроллер его первоначально нужно запрограммировать!!!
Найди LPT порт и проверь.есть программы которые работают через него.пони прог или всякие такие.
из авр910 можно просто сделать usbASP говорят он работает.
А еще питание должно быть на целевой плате(той на которой программируемый микроконтроллер)

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

Добавлено: Вт янв 03, 2012 17:00:52
antosh
Добрый день. Всех с Новым Годом.
У меня возникла маленькая проблемка... поставил на ПК PCI-LPT карту, но нужный адрес программатора не могу поставить, что можете посоветовать
1.PNG
(9.94 КБ) 375 скачиваний
2.PNG
(25.5 КБ) 378 скачиваний
Заранее спасибо!

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

Добавлено: Вт янв 03, 2012 23:19:50
kotelectron
Здравствуйте. Всех с новым годом.
Помогите разобраться начинающему.

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

Почему растет размер Data Stack? Я ведь добавляю локальные переменные, память для которых должна выделяться на время работы функции, а реально получается, что под ВСЕ локальные переменные программы в CV сразу выделена память.

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

Добавлено: Ср янв 04, 2012 00:16:45
BCluster
kotelectron писал(а):что под ВСЕ локальные переменные программы в CV сразу выделена память.

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

Есть способы нормировать расход, но для этого приведите код и тип МК который используете

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

Добавлено: Ср янв 04, 2012 04:59:13
BerZerK-ku
Вероятно это из-за большой вложенности используемых вами функций.

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

Добавлено: Ср янв 04, 2012 11:34:26
kotelectron
BCluster писал(а):BCluster
BerZerK-ku писал(а):BerZerK-ku
спасибо


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

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

мк tiny44

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

Добавлено: Ср янв 04, 2012 12:02:02
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, то память выделяется. почему?

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

Добавлено: Ср янв 04, 2012 13:24:24
BerZerK-ku
Поэкспериментируйте с отключенной оптимизацией. В IAR-e под переменные выделяется место.

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

Добавлено: Ср янв 04, 2012 14:01:43
Garin
Люди помогите практическим примером, есть например число 12:34:56 нужно чтобы число 34 имело вид мигающего курсора...
Исходник приложил .
Спасибо.

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

Добавлено: Ср янв 04, 2012 18:14:41
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(); или что-то вроде того.