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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ValBag
Потрогал лапой паяльник
Сообщения: 326
Зарегистрирован: Сб сен 06, 2008 12:56:13

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

Сообщение ValBag »

MaxNzk писал(а):Добрый день.
Подскажите пожалуйста BootLoader под CodeVisionAVR.
Вот здесь небольшой ликбез.
Реклама
MaxNzk
Родился
Сообщения: 5
Зарегистрирован: Пт июл 09, 2010 19:05:48

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

Сообщение MaxNzk »

ValBag писал(а):
MaxNzk писал(а):Добрый день.
Подскажите пожалуйста BootLoader под CodeVisionAVR.
Вот здесь небольшой ликбез.

Я уже читал этот материал, на этом сайте есть еще одна статья на эту тему, но не на один мой вопрос они не отвечают...
Реклама
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

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

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

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

extern char date;
в подключаемом файле тоже нужна переменная date, а её там невидно.
Последний раз редактировалось Apparatchik Пн фев 07, 2011 14:28:08, всего редактировалось 1 раз.
«И всё-таки она вертится!»
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

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

Сообщение AI_Disable »

Обычно поступают наоборот: глобальные переменные объявляют в хидере, а используют - во основном тексте программы.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

AI_Disable писал(а):Обычно поступают наоборот: глобальные переменные объявляют в хидере, а используют - во основном тексте программы.

В хидере нужно использовать "extern" ?
«И всё-таки она вертится!»
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

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

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

ARV писал(а):в хидерах можно описывать только ССЫЛКИ на extern-переменные! такие ссылки по сути сделают ваши переменные ГЛОБАЛЬНЫМИ ДЛЯ ВСЕГО ПРОЕКТА
Как их описывать? Объясните пожалуйста с маленьким примерчиком.
«И всё-таки она вертится!»
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Apparatchik писал(а):Как их описывать? Объясните пожалуйста с маленьким примерчиком.

вот здесь я весьма подробно объяснял товарищу, что и как следует и не следует делать в хидерах и модулях. рекомендую ознакомиться, а если останутся вопросы - тогда их и обсудим
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Valek87
Встал на лапы
Сообщения: 136
Зарегистрирован: Пн июл 12, 2010 16:03:11

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

Сообщение Valek87 »

Извините, может про это уже писали. Вообщем я создал проект с codevision avr. Есть ли руководство о том как просимулировать этот проект в vmlab?
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

Valek87 писал(а):Извините, может про это уже писали. Вообщем я создал проект с codevision avr. Есть ли руководство о том как просимулировать этот проект в vmlab?

http://www.123avr.com/
«И всё-таки она вертится!»
Импульс
Потрогал лапой паяльник
Сообщения: 349
Зарегистрирован: Пн ноя 29, 2010 05:52:05
Откуда: Иркутск

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

Сообщение Импульс »

http://www.123avr.com/[/quote]
Я собственно тоже начел вчера читать
микроконтроллеры AVR начинающим с нуля
Работаю по инструкции ,выполняю задания,пока получается.
И там есть программа VMLAB и она рабочая. В первом уроке там подробно описывается как надо с ней обращатся.
Импульс
Потрогал лапой паяльник
Сообщения: 349
Зарегистрирован: Пн ноя 29, 2010 05:52:05
Откуда: Иркутск

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

Сообщение Импульс »

Уважаемые Радиокоты!
Скажите в какой программе можно посмотреть как реально горят светодиоды подключённые в микроконтроллеру.
Ведь прошивка написана,прокомпилирована,в мк зашита,как на мониторе пк визуально можно увидеть виртуальную работу моей прошивки со светодиодами .
Чтоб можно было поэксперементировать и наблюдать реально на мониторе.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

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

ISIS Proteus
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Cepera77
Родился
Сообщения: 4
Зарегистрирован: Пт фев 11, 2011 11:07:59

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

Сообщение Cepera77 »

Добрый день.
Начал осваивать CodeVision. Возникла необходимость считать данные с рабочего регистра в переменную, например int A = R15; Штудирование Helpа, копание в Google не дало результатов, нашел реализацию доступа к портам входа-выхода, доступ к специальным регистрам TCNTn, UDR, а к про рабочие что-то даже нигде не упоминается. Может кто сталкивался, дайте направление. :dont_know:
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

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

для чего вы взялись за Си, если лезете в РАБОЧИЕ РЕГИСТРЫ? Си для того и нужен, чтобы забыть про них!

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

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

Мой уютный бложик... заходите!
Cepera77
Родился
Сообщения: 4
Зарегистрирован: Пт фев 11, 2011 11:07:59

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

Сообщение Cepera77 »

Дело в том, что в Asme я неплохо разбираюсь, но большие программы со сложными ветвлениями и математикой писать на ассемблере, достаточно утомительно, времени теряется уйма, да и из-за плохой наглядности в собственных программах бывает приходится разбираться часами, (для предотвращения пинания сразу оговорюсь, что это только мое мнение). Вот и возникла мысль разобраться с си, а наработки в asmе оформить в виде подпрограмм. Но получается, что мои asm подпрограммы оставляют результаты в регистрах, а выуживать их оттуда через стек не всегда удобно, присваивать регистру переменную типа register int A @ 15, это как то "через задницу".
Неужели нет реализации доступа к регистрам в CodeVision?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

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

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

Мой уютный бложик... заходите!
Cepera77
Родился
Сообщения: 4
Зарегистрирован: Пт фев 11, 2011 11:07:59

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

Сообщение 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 значения регистров.
Благодарю
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

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

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

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

Мой уютный бложик... заходите!
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение 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);

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

Вернуться в «AVR»