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

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

Добавлено: Ср дек 01, 2010 08:54:19
odesasha
У меня мнение о Протеусе сложилось несколько иное .Судя по проектам с DS18B20 можно сказать , что
Протеус почти не годен для эмуляции - многие проекты , написанные с классик текстами для DS
не работают на Протеусе , хотя прекрасно живут во всех экземплярах железа .
Так-что его используют лишь для модульного простейшего моделирования в качестве наглядного пособия
и то не всегда ( обычно при невозможности дешево собрать макет ).

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

Добавлено: Ср дек 01, 2010 19:19:53
odesasha
Вот пишу таймер с экодером , вместо механики для духовки , на ТИНИ 2313 и спецом добавил одну байт Static в качестве счетчика в ф-цию таймера1. Код вырос
на 1%. Сделал глобальной- опять уменьшился .
Уважаемый ARV ?, где экономия хекса на Static-ах - непонятно .
Покажите хоть простой пример , может я чего не понял .

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

Добавлено: Ср дек 01, 2010 19:41:02
demonchik
Хлопцы! очередное мяу! все решилось. оказывается у меня в проге вывода через графический буфер была бага. она никак не проявляла себя раньше. только при появлении в проге большого количества ветвлений + меню - вот она и вылезла. может это и компилятор. но почти все заработало! всем большое пасибо! :))

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

Добавлено: Ср дек 01, 2010 20:54:41
ARV
odesasha писал(а):Вот пишу таймер с экодером , вместо механики для духовки , на ТИНИ 2313 и спецом добавил одну байт Static в качестве счетчика в ф-цию таймера1. Код вырос
на 1%. Сделал глобальной- опять уменьшился .
Уважаемый ARV ?, где экономия хекса на Static-ах - непонятно .
Покажите хоть простой пример , может я чего не понял .
во-первых, эффект от static проявляется в компиляторах, которые следуют стандарту Си. не уверен, что CVAVR из таких компиляторов :)
во-вторых, и это главное, static экономит код только если он добавляется К ФУНКЦИЯМ, а не переменным! по логике вещей для глобальных переменных что static, что нет - все едино, на код не должно влиять.

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

Добавлено: Ср дек 01, 2010 22:24:22
Сериг
ребят помогите пожалуйста надо к тини 2313 подсоеденить фото элемент который от любого пульта будет включать светодиод или выключать...!cvavr

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

Добавлено: Чт дек 02, 2010 09:09:59
andrey_artemov
На Тини 2313 не АЦП, поэтому нужно ставить не фотоэлемент аналоговый (в смысле не фоторезистор и т.д.), нужно ставить фотоприёмник, на его выходе цифровой выход, на нашем форуме очень много тем, с реализацией на микроконтроллерах,
вот например http://radiokot.ru/forum/viewtopic.php? ... 5&start=20, там как раз на тиньки, и протокол RC-5

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

Добавлено: Сб дек 04, 2010 21:07:07
380v
Помогите пожалуйста. Сейчас пытаюсь разобраться с 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");
};
}

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

Добавлено: Вс дек 05, 2010 01:25:33
VannO)))
Всем доброго времени суток. Есть ли ошибка в логике работы кода, обрабатывающего нажатие кнопочек? Кнопка нажата - на входе мк 0, не нажата - 1.

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

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, частота_значение - изменяемый в результате нажатия кнопки параметр.

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

Добавлено: Вс дек 05, 2010 11:14:54
ARV
есть как минимум одна ошибка (с беглого просмотра, при детальном, возможно, найдутся и еще): при одновременном нажатии на обе кнопки они обработаются последовательно, что явно не правильно, а для некоторых случаев - категорически недопустимо.

рекомендую делать так, как давным-давно придумано: сделать функцию, которая анализирует сразу ВСЕ кнопки и возвращает код, соответствующий КОМБИНАЦИИ нажатых кнопок, а затем обращаться к этой функции и анализировать КОМБИНАЦИИ кнопок. кстати, код при этом получается более лаконичный, красивый, понятный.

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

Добавлено: Вс дек 05, 2010 11:59:38
Tom91
Написал пример для доступа к DS1307 на чтение, прошу проверить правильность и помощь в написание процедуры предустановки даты/времени путём кнопок подключённых к свободным линиям PORTD и в дальнейшем хочу добавить дисплей с целью получения полнофункциональных часов.

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

#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.

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

Добавлено: Вт дек 07, 2010 17:11:37
Сериг
доброго времени суток!помогите пожалуйста хочу разобратся с шимом ,хочу на меге 8 плавно зажигать светодиод,кто может помочь описать это действие?Спасибо мяу!

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

Добавлено: Вс дек 12, 2010 17:12:06
Schwarz
Здравствуйте!Вопрос по CodeVisionAVR.Можно ли с помощью CodeVisionAVR можно считать код с МК, если да то как?... Как прошить мк с помощью СVA? Какие настройки ставить? Дай ответы, посоветуй книгу... Мк atmega8l. В деле полный новичок.
Программатор спаян от сюда http://myrobot.ru/wiki/index.php?n=Projects.MyPROGGER

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

Добавлено: Вс дек 12, 2010 21:59:09
Apparatchik
Schwarz писал(а):Здравствуйте!Вопрос по CodeVisionAVR.Можно ли с помощью CodeVisionAVR можно считать код с МК, если да то как?... Как прошить мк с помощью СVA? Какие настройки ставить? Дай ответы, посоветуй книгу... Мк atmega8l. В деле полный новичок.
Программатор спаян от сюда http://myrobot.ru/wiki/index.php?n=Projects.MyPROGGER
Сначала Settings->Programmer выбираем программатор и куда он подключён, потом жмём Shift+F4. Чтоб прочитать меню Read (если МК не залочен), чтоб шить меню Program. Fuse bits незабываем выставлять.

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

Добавлено: Вс дек 12, 2010 22:57:58
Apparatchik
Schwarz писал(а):посоветуй книгу...
Хорошая книга. Также почитай этот сайт, а именно седьмой урок.

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

Добавлено: Пн дек 13, 2010 00:33:33
Schwarz
Apparatchik писал(а):
Schwarz писал(а):посоветуй книгу...
Хорошая книга. Также почитай этот сайт, а именно седьмой урок.
Спасибо.

Прошиваю Мк ATMEGA8L. Не могу понять какие Fuse bits выставить. Ткните пальцем в даташите плз.
Моего программатора нету в Settings->Programmer что делать?(мой самопальный программатор называется SI Prog API или siprog)

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

Добавлено: Пн дек 13, 2010 02:02:36
Apparatchik
Schwarz писал(а): Прошиваю Мк ATMEGA8L. Не могу понять какие Fuse bits выставить. Ткните пальцем в даташите плз.
Моего программатора нету в Settings->Programmer что делать?(мой самопальный программатор называется SI Prog API или siprog)
Fuse bits обычно указывает автор проэкта, если сами проэкт делаете, то начинающие обычно меняют только те биты, которые отвечают за тактирование МК, в даташите раздел "System Clock and Clock Options".
Программатор лучше сделать один из этих, тогда точно будет работать с CodeVisionAVR. Ваш программатор точно работает с PonyProg2000 тут описано, так что компилировать можно в CodeVisionAVR а программить в PonyProg2000.

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

Добавлено: Пн дек 13, 2010 09:13:30
Schwarz
Schwarz писал(а):Fuse bits обычно указывает автор проэкта, если сами проэкт делаете, то начинающие обычно меняют только те биты, которые отвечают за тактирование МК, в даташите раздел "System Clock and Clock Options".
На Мк уже есть код (исп язык С), я хочу его считать и поменять 2-3 значения. :write: Какие подводные камни могут быть, не сожгу ли я Мк?
Fuse bits обычно указывает автор проэкта-они где то описываются или просто ставятся галочки.

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

Добавлено: Пн дек 13, 2010 09:52:41
Apparatchik
Schwarz писал(а): На Мк уже есть код (исп язык С), я хочу его считать и поменять 2-3 значения. :write: Какие подводные камни могут быть, не сожгу ли я Мк?
Fuse bits обычно указывает автор проэкта-они где то описываются или просто ставятся галочки.
МК то ничё небудет, а вот поменять чтонибуть без исходника врятли получится. Нужен исходник программы иначе нужно дизассемблер или что-то в этом роде я в ассемблере мало понимаю.

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

Добавлено: Пн дек 13, 2010 13:00:31
Schwarz
Apparatchik писал(а):
Schwarz писал(а): На Мк уже есть код (исп язык С), я хочу его считать и поменять 2-3 значения. :write: Какие подводные камни могут быть, не сожгу ли я Мк?
Fuse bits обычно указывает автор проэкта-они где то описываются или просто ставятся галочки.
МК то ничё небудет, а вот поменять чтонибуть без исходника врятли получится. Нужен исходник программы иначе нужно дизассемблер или что-то в этом роде я в ассемблере мало понимаю.
т.е если я вас правильно понял у меня не удатся вытащить код из мк с помощью PonyProg2000, открыть вытащенный фаил в CodeVisionAVR, поменятьь пару цифорок, с компелиривать и прошить заново с помощью PonyProg2000?

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

Добавлено: Пн дек 13, 2010 13:39:29
AlexFisher
Вытащить то получится, но программы на С Вы не увидите. Перед Вами будет результат работы дизассемблера - чистый ассемблерный код без интуитивно понятных меток и т.д. Копаться в нем архисложно, но если Вы точно знаете где и что Вам нужно поменять, то можно. Но лучше найти исходник.