Страница 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 файла? Или их нужно объявлять и там и там, неповлияет ли это на размер прошивки?
В основном файле объявил например
в подключаемом файле тоже нужна переменная 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, а к про рабочие что-то даже нигде не упоминается. Может кто сталкивался, дайте направление.

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

для чего вы взялись за Си, если лезете в РАБОЧИЕ РЕГИСТРЫ? Си для того и нужен, чтобы забыть про них!
чтобы в Си залезть в регистр 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);
Если что-то будет неясно, то приведу еще пару примеров.