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
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
odesasha писал(а):Вот пишу таймер с экодером , вместо механики для духовки , на ТИНИ 2313 и спецом добавил одну байт Static в качестве счетчика в ф-цию таймера1. Код вырос
на 1%. Сделал глобальной- опять уменьшился .
Уважаемый ARV ?, где экономия хекса на Static-ах - непонятно .
Покажите хоть простой пример , может я чего не понял .
во-первых, эффект от static проявляется в компиляторах, которые следуют стандарту Си. не уверен, что CVAVR из таких компиляторов
во-вторых, и это главное, 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?f=20&t=9575&start=20, там как раз на тиньки, и протокол RC-5
вот например http://radiokot.ru/forum/viewtopic.php?f=20&t=9575&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;
}
}
}
}флажки кнопок - unsigned char, частота_значение - изменяемый в результате нажатия кнопки параметр.
[color=#FF80FF]Не втыкать.[/color]
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 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); // читаем время
}P.S. сильно не пинайте, имхо незнаю ни одного языка программирования и только вчера начал осваивать CvAVR.
- Сериг
- Это не хвост, это антенна
- Сообщения: 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 в вопросах и ответах
Schwarz писал(а):Здравствуйте!Вопрос по CodeVisionAVR.Можно ли с помощью CodeVisionAVR можно считать код с МК, если да то как?... Как прошить мк с помощью СVA? Какие настройки ставить? Дай ответы, посоветуй книгу... Мк atmega8l. В деле полный новичок.
Программатор спаян от сюда http://myrobot.ru/wiki/index.php?n=Projects.MyPROGGER
Сначала Settings->Programmer выбираем программатор и куда он подключён, потом жмём Shift+F4. Чтоб прочитать меню Read (если МК не залочен), чтоб шить меню Program. Fuse bits незабываем выставлять.
«И всё-таки она вертится!»
- 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 в вопросах и ответах
Schwarz писал(а):Прошиваю Мк ATMEGA8L. Не могу понять какие Fuse bits выставить. Ткните пальцем в даташите плз.
Моего программатора нету в Settings->Programmer что делать?(мой самопальный программатор называется SI Prog API или siprog)
Fuse bits обычно указывает автор проэкта, если сами проэкт делаете, то начинающие обычно меняют только те биты, которые отвечают за тактирование МК, в даташите раздел "System Clock and Clock Options".
Программатор лучше сделать один из этих, тогда точно будет работать с CodeVisionAVR. Ваш программатор точно работает с PonyProg2000 тут описано, так что компилировать можно в CodeVisionAVR а программить в PonyProg2000.
«И всё-таки она вертится!»
Re: CodeVision AVR в вопросах и ответах
Schwarz писал(а):Fuse bits обычно указывает автор проэкта, если сами проэкт делаете, то начинающие обычно меняют только те биты, которые отвечают за тактирование МК, в даташите раздел "System Clock and Clock Options".
На Мк уже есть код (исп язык С), я хочу его считать и поменять 2-3 значения.
Какие подводные камни могут быть, не сожгу ли я Мк? Fuse bits обычно указывает автор проэкта-они где то описываются или просто ставятся галочки.
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: CodeVision AVR в вопросах и ответах
Schwarz писал(а):На Мк уже есть код (исп язык С), я хочу его считать и поменять 2-3 значения.Какие подводные камни могут быть, не сожгу ли я Мк?
Fuse bits обычно указывает автор проэкта-они где то описываются или просто ставятся галочки.
МК то ничё небудет, а вот поменять чтонибуть без исходника врятли получится. Нужен исходник программы иначе нужно дизассемблер или что-то в этом роде я в ассемблере мало понимаю.
«И всё-таки она вертится!»
Re: CodeVision AVR в вопросах и ответах
Apparatchik писал(а):Schwarz писал(а):На Мк уже есть код (исп язык С), я хочу его считать и поменять 2-3 значения.Какие подводные камни могут быть, не сожгу ли я Мк?
Fuse bits обычно указывает автор проэкта-они где то описываются или просто ставятся галочки.
МК то ничё небудет, а вот поменять чтонибуть без исходника врятли получится. Нужен исходник программы иначе нужно дизассемблер или что-то в этом роде я в ассемблере мало понимаю.
т.е если я вас правильно понял у меня не удатся вытащить код из мк с помощью PonyProg2000, открыть вытащенный фаил в CodeVisionAVR, поменятьь пару цифорок, с компелиривать и прошить заново с помощью PonyProg2000?
- AlexFisher
- Мучитель микросхем
- Сообщения: 493
- Зарегистрирован: Вт апр 21, 2009 13:31:27
- Откуда: Санкт-Петербург
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Вытащить то получится, но программы на С Вы не увидите. Перед Вами будет результат работы дизассемблера - чистый ассемблерный код без интуитивно понятных меток и т.д. Копаться в нем архисложно, но если Вы точно знаете где и что Вам нужно поменять, то можно. Но лучше найти исходник.
[i]Да здравствует всё то, благодаря чему мы не смотря ни на что![/i]