Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 13.09.2007, 12:09  
zelen536
Заблокирован
 
Регистрация: 31.03.2007
Сообщений: 129
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
zelen536 на пути к лучшему
По умолчанию Программирование на Си в WinAVR

Может тема уже поднималась - я не встречал. У меня следующие вопросы по Си в WinAVR:
1. как задать пользовательскую переменную через register так, чтоб она определилась в регистре AVR, в каком - не важно, пусть компилятор сам выберет свободный, ведь не все регистры R0-R31 компилятор использует:
а. данная регистровая переменная должна быть видна глобально, т. е. ее должны видеть все модули программы;
б. данная регистровая переменная должна быть видна локально - только в одном модуле программы;
2. как задать битовую переменную (типа bool) которая должна находится в регистре R0-R31 на тех же условиях - чтоб была или глобальной или локальной.
Если возможно - подскажите с примером кода.
Реклама:
zelen536 вне форума  
Непрочитано 13.09.2007, 15:59  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Интересно, на что Вы рассчитываете, задавая такой вопрос - что Вам бросятся объяснять области видимости переменных ? Но ведь эта тема есть в ЛЮБЫХ учебниках по С. Что касаемо winavr, то это явно не самый популярный компилятор, к единственному достоинству которого относится бесплатность, так что примеров много не будет - народ использует либо коде вижион, либо иар.
Относительно того, можно ли объявить булевую переменную глобальной - то - поправьте, если я ошибаюсь - в большинстве компиляторов под МК - нет. Берем переменную char, объявляем ее как структуру из 8 бит в заголовочном файле и обращаемся соответственно.
urry вне форума  
Непрочитано 13.09.2007, 16:18  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию

Сообщение от urry
Что касаемо winavr, то это явно не самый популярный компилятор, к единственному достоинству которого относится бесплатность
Ну уж и единственное... Отличный компилятор, кроме бесплатности обладает огромным количеством достоинств - кроссплатформенность, портирован почти под все ядра ( хотите AVR,ARM..AVR32 - в наличии и на заказ ), отличный оптимизатор... Продолжать можно долго. Что касается вопросов:
По первому пункту не знаю, но почему не устраивает конкретное указание регистра? Тогда
Код:
uint8_t register my_var asm("R14");
Область видимости в пределах модуля. Если требуется доступ из других, то там нужно переменную определить:
Код:
extern uint8_t register my_var asm("R14");
По второму пункту. В С нет битовых переменных, но есть битовые поля, что ничуть не хуже.
Код:
struct my_struct
{
uint8_t my_field: 1;
};
register struct my_struct super_var asm("r6");
...
super_var.my_field=0; // false
super_var.my_field=1; // true
Область видимости как в первом примере.
kison вне форума  
Непрочитано 13.09.2007, 19:13  
zelen536
Заблокирован
 
Регистрация: 31.03.2007
Сообщений: 129
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
zelen536 на пути к лучшему
По умолчанию

Спасибо откликнувшимся на мой вопрос. Поясняю для непонятливых - мне Си объяснять не нужно, я спрашивал конкретный пример синтаксиса задания переменной-регистра и переменной-бита в данной реализации Си - в WinAVR. Я работал с другими реализациями Си и для других ядер, для AVR часто использовал AlgorithmBuilder - там вообще нет проблем с заданием и переименованием регистров и их отдельных битов и какими их делать - локальными или глобальными.
ник. urry: ну не понравилась вам ветка - так не флудите в ней, молча пройдите.
ник. kison: спасибо за пример, попробую.
zelen536 вне форума  
Непрочитано 14.09.2007, 09:29  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Сообщение от zelen536
ну не понравилась вам ветка - так не флудите в ней, молча пройдите.
Гы. Если бы я прошел молча, то kison не обиделся бы за близкий его сердцу компилятор и ответ был бы Вам один - RTFM.
Кстати, использовать структуру как битовые переменные -
настолько элементарно, что заявление - "мне Си объяснять не нужно" - звучит, мягко говоря, странноватенько.
urry вне форума  
Непрочитано 14.09.2007, 18:09  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Сообщение от zelen536
ник. urry: ну не понравилась вам ветка - так не флудите в ней, молча пройдите.
ник.
Вот этого я понять не могу, вы хотите услышать только то что хотите , или вам нужна консультация спеца ?
Если второе , то зачем хамить человеку разбирающемуся в вопросе ?
dosikus вне форума  
Непрочитано 17.09.2007, 12:09  
zelen536
Заблокирован
 
Регистрация: 31.03.2007
Сообщений: 129
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
zelen536 на пути к лучшему
По умолчанию

Для ник. dosikus:
Был конкретный вопрос - от ник. kison был получен конкретный ответ - это норма для таких форумов. Давать оценки вопроса, автора и т. д. без выдачи хоть какого-то ответа - это флуд, чем и занимается ник. urry. Здесь собираются технари, априори мы все друг друга уважаем, ехидство, глупый сарказм и пустое бахвальство неприемлемы. Если человек открыл ветку, задал вопрос - значит его это в данный момент волнует и нормальный форумянин или конкретно отвечает или проходит мимо.
zelen536 вне форума  
Сказали "Спасибо" zelen536
mikemdr (01.03.2011)
Непрочитано 18.09.2007, 23:16  
pirotehnick
Прохожий
 
Регистрация: 29.06.2006
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
pirotehnick на пути к лучшему
По умолчанию

Пожалуйста помогите. Как мне снаружи записать в порт что-либо.
Я программировал Atmega 8.
Код программы:
.......................
DDRB=0x00;
PORTB=0xff;
while(1)
{
if (PORTB!=0xff)
{
//Делать то-то....
}
}
.......................
что здесь не правильно.
Я пробовал замыкать ноги порта "B" на GND чере резюк 330 ОМ, но реакции на поставленное условие не наблюдалось
pirotehnick вне форума  
Непрочитано 19.09.2007, 01:20  
AndreiVV
Гражданин KAZUS.RU
 
Регистрация: 29.06.2006
Сообщений: 638
Сказал спасибо: 37
Сказали Спасибо 56 раз(а) в 41 сообщении(ях)
AndreiVV на пути к лучшему
По умолчанию

Цитата:
что здесь не правильно.
1. сделали порт Б как выход
2. проверка производится не помощью PORTB, а с PINB
3. вы проверяете весь порт Б, все 8бит(чтобы выполнилось условие нужно будет все линии порта соединить на корпус)
4. слишком рано взялись за практику
AndreiVV вне форума  
Непрочитано 19.09.2007, 01:48  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию

Достаточно поменять
Код:
if (PORTB!=0xff)
на
Код:
if (PINB!=0xff)
и все заработает....
kison вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подниму тему WinAVR vs IAR oleg110592 Микроконтроллеры, АЦП, память и т.д 5 24.10.2015 14:06
На WinAVR + AVR Studio c CVAVR Vetal-soft Embedd С 87 03.03.2013 20:31
Глюки WinAVR KBH-I Коллекция глюков 19 07.06.2011 01:16
Помогите с массивами в WinAvr Sho_otnik Микроконтроллеры, АЦП, память и т.д 7 07.01.2011 11:56
WinAVR не нравится символ '\' vovan_zh Микроконтроллеры, АЦП, память и т.д 10 10.09.2010 20:48


Часовой пояс GMT +4, время: 17:40.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot