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»