CodeVision AVR в вопросах и ответах
Re: CodeVision AVR в вопросах и ответах
У меня мнение о Протеусе сложилось несколько иное .Судя по проектам с DS18B20 можно сказать , что
Протеус почти не годен для эмуляции - многие проекты , написанные с классик текстами для DS
не работают на Протеусе , хотя прекрасно живут во всех экземплярах железа .
Так-что его используют лишь для модульного простейшего моделирования в качестве наглядного пособия
и то не всегда ( обычно при невозможности дешево собрать макет ).
Протеус почти не годен для эмуляции - многие проекты , написанные с классик текстами для DS
не работают на Протеусе , хотя прекрасно живут во всех экземплярах железа .
Так-что его используют лишь для модульного простейшего моделирования в качестве наглядного пособия
и то не всегда ( обычно при невозможности дешево собрать макет ).
- Реклама
Re: CodeVision AVR в вопросах и ответах
Вот пишу таймер с экодером , вместо механики для духовки , на ТИНИ 2313 и спецом добавил одну байт Static в качестве счетчика в ф-цию таймера1. Код вырос
на 1%. Сделал глобальной- опять уменьшился .
Уважаемый ARV ?, где экономия хекса на Static-ах - непонятно .
Покажите хоть простой пример , может я чего не понял .
на 1%. Сделал глобальной- опять уменьшился .
Уважаемый ARV ?, где экономия хекса на Static-ах - непонятно .
Покажите хоть простой пример , может я чего не понял .
- demonchik
- Встал на лапы
- Сообщения: 94
- Зарегистрирован: Вт апр 07, 2009 13:39:13
- Откуда: одесса
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Хлопцы! очередное мяу! все решилось. оказывается у меня в проге вывода через графический буфер была бага. она никак не проявляла себя раньше. только при появлении в проге большого количества ветвлений + меню - вот она и вылезла. может это и компилятор. но почти все заработало! всем большое пасибо! 
радиоэлектроника - жизнь моя...
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
во-первых, эффект от static проявляется в компиляторах, которые следуют стандарту Си. не уверен, что CVAVR из таких компиляторовodesasha писал(а):Вот пишу таймер с экодером , вместо механики для духовки , на ТИНИ 2313 и спецом добавил одну байт Static в качестве счетчика в ф-цию таймера1. Код вырос
на 1%. Сделал глобальной- опять уменьшился .
Уважаемый ARV ?, где экономия хекса на Static-ах - непонятно .
Покажите хоть простой пример , может я чего не понял .
во-вторых, и это главное, static экономит код только если он добавляется К ФУНКЦИЯМ, а не переменным! по логике вещей для глобальных переменных что static, что нет - все едино, на код не должно влиять.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сериг
- Это не хвост, это антенна
- Сообщения: 1451
- Зарегистрирован: Пт фев 19, 2010 19:39:28
- Откуда: Москва
Re: CodeVision AVR в вопросах и ответах
ребят помогите пожалуйста надо к тини 2313 подсоеденить фото элемент который от любого пульта будет включать светодиод или выключать...!cvavr
- Реклама
- andrey_artemov
- Встал на лапы
- Сообщения: 136
- Зарегистрирован: Сб авг 15, 2009 21:26:50
- Откуда: Пенза
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
На Тини 2313 не АЦП, поэтому нужно ставить не фотоэлемент аналоговый (в смысле не фоторезистор и т.д.), нужно ставить фотоприёмник, на его выходе цифровой выход, на нашем форуме очень много тем, с реализацией на микроконтроллерах,
вот например http://radiokot.ru/forum/viewtopic.php? ... 5&start=20, там как раз на тиньки, и протокол RC-5
вот например http://radiokot.ru/forum/viewtopic.php? ... 5&start=20, там как раз на тиньки, и протокол RC-5
Re: CodeVision AVR в вопросах и ответах
Помогите пожалуйста. Сейчас пытаюсь разобраться с CVAVR, и вот такая беда: пишу две программы (просто в качастве обучения) для работы с LCD (просто чтобы индикатор что-нибудь высветил, например "ААААА"). Одна программа для меги16 , другая для АТ90S8515. Проверяю в работу Протеусе. Так вот AT90S8515 работает, а Mega16 нет. Вчем может быть дело. До этого я программировал в BASCOMе, на нем все работает,все нормально, а с CVAVR у меня не получается. Вот код:
#include <mega16.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 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;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
while (1)
{
lcd_gotoxy(0,3);
lcd_putsf("fff");
};
}
#include <mega16.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 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;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
while (1)
{
lcd_gotoxy(0,3);
lcd_putsf("fff");
};
}
Re: CodeVision AVR в вопросах и ответах
Всем доброго времени суток. Есть ли ошибка в логике работы кода, обрабатывающего нажатие кнопочек? Кнопка нажата - на входе мк 0, не нажата - 1.
флажки кнопок - unsigned char, частота_значение - изменяемый в результате нажатия кнопки параметр.
Код: Выделить всё
while (1){
//=================== Button1 processing ===================
if(key1_flag){
freq_val ++;
key1_flag = 0;
while(!(PINB & 0b00000010)) {}
}
else{
if(!(PINB & 0b00000010)){
delay_ms(50);
if(!(PINB & 0b00000010)){
key1_flag = 1;
}
}
}
//=================== Button2 processing ===================
if(key2_flag){
freq_val --;
key2_flag = 0;
while(!(PINB & 0b00000100)) {}
}
else{
if(!(PINB & 0b00000100)){
delay_ms(50);
if(!(PINB & 0b00000100)){
key2_flag = 1;
}
}
}
}[color=#FF80FF]Не втыкать.[/color]
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
есть как минимум одна ошибка (с беглого просмотра, при детальном, возможно, найдутся и еще): при одновременном нажатии на обе кнопки они обработаются последовательно, что явно не правильно, а для некоторых случаев - категорически недопустимо.
рекомендую делать так, как давным-давно придумано: сделать функцию, которая анализирует сразу ВСЕ кнопки и возвращает код, соответствующий КОМБИНАЦИИ нажатых кнопок, а затем обращаться к этой функции и анализировать КОМБИНАЦИИ кнопок. кстати, код при этом получается более лаконичный, красивый, понятный.
рекомендую делать так, как давным-давно придумано: сделать функцию, которая анализирует сразу ВСЕ кнопки и возвращает код, соответствующий КОМБИНАЦИИ нажатых кнопок, а затем обращаться к этой функции и анализировать КОМБИНАЦИИ кнопок. кстати, код при этом получается более лаконичный, красивый, понятный.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
Написал пример для доступа к DS1307 на чтение, прошу проверить правильность и помощь в написание процедуры предустановки даты/времени путём кнопок подключённых к свободным линиям PORTD и в дальнейшем хочу добавить дисплей с целью получения полнофункциональных часов.
P.S. сильно не пинайте, имхо незнаю ни одного языка программирования и только вчера начал осваивать CvAVR.
Код: Выделить всё
#include <tiny2313.h>
#asm
.equ __i2c_port=0x12 // подключил к порту PORTD
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include <i2c.h>
#include <ds1307.h>
void main (void)
{
unsigned char lcddate, lcdmonth, lcdyear; // объявление переменных даты
unsigned char lcdhour, lcdminute, lcdsecond; // объявление переменных время
i2c_init();
rtc_init (0,1,0); // инициализация часов, непонял о чём говорят значения в скобках?
rtc_get_date (&lcddate, &lcdmonth, &lcdyear); // читаем дату
rtc_get_time (&lcdhour, &lcdminute, &lcdsecond); // читаем время
}- Сериг
- Это не хвост, это антенна
- Сообщения: 1451
- Зарегистрирован: Пт фев 19, 2010 19:39:28
- Откуда: Москва
Re: CodeVision AVR в вопросах и ответах
доброго времени суток!помогите пожалуйста хочу разобратся с шимом ,хочу на меге 8 плавно зажигать светодиод,кто может помочь описать это действие?Спасибо мяу!
Re: CodeVision AVR в вопросах и ответах
Здравствуйте!Вопрос по CodeVisionAVR.Можно ли с помощью CodeVisionAVR можно считать код с МК, если да то как?... Как прошить мк с помощью СVA? Какие настройки ставить? Дай ответы, посоветуй книгу... Мк atmega8l. В деле полный новичок.
Программатор спаян от сюда http://myrobot.ru/wiki/index.php?n=Projects.MyPROGGER
Программатор спаян от сюда http://myrobot.ru/wiki/index.php?n=Projects.MyPROGGER
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: CodeVision AVR в вопросах и ответах
Сначала Settings->Programmer выбираем программатор и куда он подключён, потом жмём Shift+F4. Чтоб прочитать меню Read (если МК не залочен), чтоб шить меню Program. Fuse bits незабываем выставлять.Schwarz писал(а):Здравствуйте!Вопрос по CodeVisionAVR.Можно ли с помощью CodeVisionAVR можно считать код с МК, если да то как?... Как прошить мк с помощью СVA? Какие настройки ставить? Дай ответы, посоветуй книгу... Мк atmega8l. В деле полный новичок.
Программатор спаян от сюда http://myrobot.ru/wiki/index.php?n=Projects.MyPROGGER
«И всё-таки она вертится!»
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: CodeVision AVR в вопросах и ответах
«И всё-таки она вертится!»
Re: CodeVision AVR в вопросах и ответах
Спасибо.Apparatchik писал(а):Хорошая книга. Также почитай этот сайт, а именно седьмой урок.Schwarz писал(а):посоветуй книгу...
Прошиваю Мк ATMEGA8L. Не могу понять какие Fuse bits выставить. Ткните пальцем в даташите плз.
Моего программатора нету в Settings->Programmer что делать?(мой самопальный программатор называется SI Prog API или siprog)
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: CodeVision AVR в вопросах и ответах
Fuse bits обычно указывает автор проэкта, если сами проэкт делаете, то начинающие обычно меняют только те биты, которые отвечают за тактирование МК, в даташите раздел "System Clock and Clock Options".Schwarz писал(а): Прошиваю Мк ATMEGA8L. Не могу понять какие Fuse bits выставить. Ткните пальцем в даташите плз.
Моего программатора нету в Settings->Programmer что делать?(мой самопальный программатор называется SI Prog API или siprog)
Программатор лучше сделать один из этих, тогда точно будет работать с CodeVisionAVR. Ваш программатор точно работает с PonyProg2000 тут описано, так что компилировать можно в CodeVisionAVR а программить в PonyProg2000.
«И всё-таки она вертится!»
Re: CodeVision AVR в вопросах и ответах
На Мк уже есть код (исп язык С), я хочу его считать и поменять 2-3 значения.Schwarz писал(а):Fuse bits обычно указывает автор проэкта, если сами проэкт делаете, то начинающие обычно меняют только те биты, которые отвечают за тактирование МК, в даташите раздел "System Clock and Clock Options".
Fuse bits обычно указывает автор проэкта-они где то описываются или просто ставятся галочки.
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: CodeVision AVR в вопросах и ответах
МК то ничё небудет, а вот поменять чтонибуть без исходника врятли получится. Нужен исходник программы иначе нужно дизассемблер или что-то в этом роде я в ассемблере мало понимаю.Schwarz писал(а): На Мк уже есть код (исп язык С), я хочу его считать и поменять 2-3 значения.Какие подводные камни могут быть, не сожгу ли я Мк?
Fuse bits обычно указывает автор проэкта-они где то описываются или просто ставятся галочки.
«И всё-таки она вертится!»
Re: CodeVision AVR в вопросах и ответах
т.е если я вас правильно понял у меня не удатся вытащить код из мк с помощью PonyProg2000, открыть вытащенный фаил в CodeVisionAVR, поменятьь пару цифорок, с компелиривать и прошить заново с помощью PonyProg2000?Apparatchik писал(а):МК то ничё небудет, а вот поменять чтонибуть без исходника врятли получится. Нужен исходник программы иначе нужно дизассемблер или что-то в этом роде я в ассемблере мало понимаю.Schwarz писал(а): На Мк уже есть код (исп язык С), я хочу его считать и поменять 2-3 значения.Какие подводные камни могут быть, не сожгу ли я Мк?
Fuse bits обычно указывает автор проэкта-они где то описываются или просто ставятся галочки.
- AlexFisher
- Мучитель микросхем
- Сообщения: 493
- Зарегистрирован: Вт апр 21, 2009 13:31:27
- Откуда: Санкт-Петербург
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Вытащить то получится, но программы на С Вы не увидите. Перед Вами будет результат работы дизассемблера - чистый ассемблерный код без интуитивно понятных меток и т.д. Копаться в нем архисложно, но если Вы точно знаете где и что Вам нужно поменять, то можно. Но лучше найти исходник.
[i]Да здравствует всё то, благодаря чему мы не смотря ни на что![/i]


