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

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

Добавлено: Чт фев 03, 2011 20:05:28
ValBag
MaxNzk писал(а):Добрый день.
Подскажите пожалуйста BootLoader под CodeVisionAVR.
Вот здесь небольшой ликбез.

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

Добавлено: Чт фев 03, 2011 22:45:25
MaxNzk
ValBag писал(а):
MaxNzk писал(а):Добрый день.
Подскажите пожалуйста BootLoader под CodeVisionAVR.
Вот здесь небольшой ликбез.
Я уже читал этот материал, на этом сайте есть еще одна статья на эту тему, но не на один мой вопрос они не отвечают...

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

Добавлено: Пн фев 07, 2011 14:18:11
Apparatchik
Как объявить глобальные переменные в основном файле чтоб они были выдны из подключаемого *.h файла? Или их нужно объявлять и там и там, неповлияет ли это на размер прошивки?

В основном файле объявил например

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

extern char date;
в подключаемом файле тоже нужна переменная date, а её там невидно.

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

Добавлено: Пн фев 07, 2011 14:26:47
AI_Disable
Обычно поступают наоборот: глобальные переменные объявляют в хидере, а используют - во основном тексте программы.

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

Добавлено: Пн фев 07, 2011 14:29:32
Apparatchik
AI_Disable писал(а):Обычно поступают наоборот: глобальные переменные объявляют в хидере, а используют - во основном тексте программы.
В хидере нужно использовать "extern" ?

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

Добавлено: Пн фев 07, 2011 15:43:44
ARV
AI_Disable писал(а):Обычно поступают наоборот: глобальные переменные объявляют в хидере, а используют - во основном тексте программы.
никогда не объявляйте ПЕРЕМЕННЫЕ в хидерах! это крайне порочная практика. в хидерах можно описывать только ССЫЛКИ на extern-переменные! такие ссылки по сути сделают ваши переменные ГЛОБАЛЬНЫМИ ДЛЯ ВСЕГО ПРОЕКТА. а объявление переменных в хидере приведет только к дублированию объявлений, т.е. к ошибке.

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

Добавлено: Пн фев 07, 2011 16:34:26
Apparatchik
ARV писал(а):в хидерах можно описывать только ССЫЛКИ на extern-переменные! такие ссылки по сути сделают ваши переменные ГЛОБАЛЬНЫМИ ДЛЯ ВСЕГО ПРОЕКТА
Как их описывать? Объясните пожалуйста с маленьким примерчиком.

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

Добавлено: Пн фев 07, 2011 18:47:27
ARV
Apparatchik писал(а):Как их описывать? Объясните пожалуйста с маленьким примерчиком.
вот здесь я весьма подробно объяснял товарищу, что и как следует и не следует делать в хидерах и модулях. рекомендую ознакомиться, а если останутся вопросы - тогда их и обсудим

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

Добавлено: Вт фев 08, 2011 19:49:35
Valek87
Извините, может про это уже писали. Вообщем я создал проект с codevision avr. Есть ли руководство о том как просимулировать этот проект в vmlab?

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

Добавлено: Вт фев 08, 2011 20:06:14
Apparatchik
Valek87 писал(а):Извините, может про это уже писали. Вообщем я создал проект с codevision avr. Есть ли руководство о том как просимулировать этот проект в vmlab?
http://www.123avr.com/

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

Добавлено: Ср фев 09, 2011 17:34:55
Импульс
http://www.123avr.com/[/quote]
Я собственно тоже начел вчера читать
микроконтроллеры AVR начинающим с нуля
Работаю по инструкции ,выполняю задания,пока получается.
И там есть программа VMLAB и она рабочая. В первом уроке там подробно описывается как надо с ней обращатся.

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

Добавлено: Ср фев 09, 2011 17:42:51
Импульс
Уважаемые Радиокоты!
Скажите в какой программе можно посмотреть как реально горят светодиоды подключённые в микроконтроллеру.
Ведь прошивка написана,прокомпилирована,в мк зашита,как на мониторе пк визуально можно увидеть виртуальную работу моей прошивки со светодиодами .
Чтоб можно было поэксперементировать и наблюдать реально на мониторе.

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

Добавлено: Ср фев 09, 2011 17:57:28
ARV
Импульс писал(а):Уважаемые Радиокоты!
Скажите в какой программе можно посмотреть как реально горят светодиоды подключённые в микроконтроллеру.
Ведь прошивка написана,прокомпилирована,в мк зашита,как на мониторе пк визуально можно увидеть виртуальную работу моей прошивки со светодиодами .
Чтоб можно было поэксперементировать и наблюдать реально на мониторе.
ISIS Proteus

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

Добавлено: Пт фев 11, 2011 11:32:51
Cepera77
Добрый день.
Начал осваивать CodeVision. Возникла необходимость считать данные с рабочего регистра в переменную, например int A = R15; Штудирование Helpа, копание в Google не дало результатов, нашел реализацию доступа к портам входа-выхода, доступ к специальным регистрам TCNTn, UDR, а к про рабочие что-то даже нигде не упоминается. Может кто сталкивался, дайте направление. :dont_know:

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

Добавлено: Пт фев 11, 2011 11:43:03
ARV
Cepera77 писал(а):Добрый день.
Начал осваивать CodeVision. Возникла необходимость считать данные с рабочего регистра в переменную, например int A = R15; Штудирование Helpа, копание в Google не дало результатов, нашел реализацию доступа к портам входа-выхода, доступ к специальным регистрам TCNTn, UDR, а к про рабочие что-то даже нигде не упоминается. Может кто сталкивался, дайте направление. :dont_know:
для чего вы взялись за Си, если лезете в РАБОЧИЕ РЕГИСТРЫ? Си для того и нужен, чтобы забыть про них!

чтобы в Си залезть в регистр R15, потребуется использовать ассемблерные вставки - ну так вы могли бы тогда Си и вообще не применять! вы вот задумайтесь - для чего вам это надо? Си и без вас с рабочими регистрами справится, а ваши попытки туда встрять скорее всего навредят, нежели помогут...

откажитесь от этого - и будет вам счастье.

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

Добавлено: Пт фев 11, 2011 12:25:19
Cepera77
Дело в том, что в Asme я неплохо разбираюсь, но большие программы со сложными ветвлениями и математикой писать на ассемблере, достаточно утомительно, времени теряется уйма, да и из-за плохой наглядности в собственных программах бывает приходится разбираться часами, (для предотвращения пинания сразу оговорюсь, что это только мое мнение). Вот и возникла мысль разобраться с си, а наработки в asmе оформить в виде подпрограмм. Но получается, что мои asm подпрограммы оставляют результаты в регистрах, а выуживать их оттуда через стек не всегда удобно, присваивать регистру переменную типа register int A @ 15, это как то "через задницу".
Неужели нет реализации доступа к регистрам в CodeVision?

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

Добавлено: Пт фев 11, 2011 12:29:59
ARV
рекомендую все-таки освоить Си в такой степени, чтобы не приходилось разбираться часами в своем собственном коде :))) это более продуктивный путь, нежели заниматься извратом с доступом к рабочим регистрам...

хотя, если очень хочется, можете попытаться найти информацию о том, как ваш компилятор работает с регистрами при передаче параметров в функции, или, возможно, есть документация об inline-assembler для вашего компилятора... такое решение возможно в принципе... но поверьте, это будет еще сильнее "через задницу" :)))

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

Добавлено: Пт фев 11, 2011 13:06:22
Cepera77
[quote="ARV"]рекомендую все-таки освоить Си в такой степени, чтобы не приходилось разбираться часами в своем собственном коде

Я говорил, что часами разбираться приходиться в ассемблерном коде, а в Си как раз все наглядно, я это понял с первой же своей программой.

И со своим вопросом кажется разобрался, спасибо за поддержку. Благодаря Вашему участию пришло осознание того, то "Через задницу" оказалось вполне работоспособно.
Итак присваиваем регистрам переменные например, мож кому сгодиться:
register int result_1 @ 11;
register int result_2 @ 12;
. . .


а в подпрограмме после того как получен результат
mov r12,r30 ; если в r30 и в r25 результаты
mov r11,r25
#endasm
}
Теперь мы имеем в переменных result_1 и result_2 значения регистров.
Благодарю

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

Добавлено: Пт фев 11, 2011 13:12:44
ARV
проблема только в том, что если вдруг какая-то БИБЛИОТЕЧНАЯ функция тоже использует регистры R11 и R12, вы получите черти-что... а ведь такая неприятность может произойти как раз в тот момент, когда вы полностью уверовали в безгрешность своего подхода...

особенно с учетом того, что int это 2 байта, а R11 - это один байт... и что там компилятор будет делать с этим - еще надо разобраться :)))

напрасно не желаете меня слушать... но дело ваше.

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

Добавлено: Пт фев 11, 2011 13:46:39
ChipKiller
Cepera77 писал(а):.. но большие программы со сложными ветвлениями и математикой писать на ассемблере, достаточно утомительно,
.. ну на то это и ассемблер, правда иногда выручают макросы.
Если хотите разобраться - перечитайте хелп, ну и раз Вы неплохо знаете ассемблер - скомпилите С-исходнк и гляньте на листинг. Главное правило (ИМХО) - понять, как С использует регистры.

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

// PORTB,PinData - вход данных 74HC165
// PORTD,PinClk - вход Clock 74HC165

#pragma warn-
#pragma savereg-

// вывод на индикатор
OutLed(unsigned char led_sym){
   #asm    
        ld      r31,Y           ; r31=led_sym
   	ldi   	r30,8         
loop:					   	
	sbrc   	r31,0           ;
	sbi   	PORTB,PinData   ; вывод 1
	sbrs   	r31,0           ;
	cbi   	PORTB,PinData   ; вывод 0
	sbi   	PORTD,PinClk    ; выдаем clock
	cbi   	PORTD,PinClk    ;
	lsr   	r31             ; сдвиг
	dec   	r30             ; повторяем 8 раз (1 байт)
	brne   	loop   
   #endasm 
}
#pragma savereg+
#pragma warn+
обращение из С-программы - OutLed(val);

Если что-то будет неясно, то приведу еще пару примеров.