реклама на сайте
подробности

 
 
> IAR, AVR Studio, WinAVR, вопрос чайника
pitter_3
сообщение Mar 1 2010, 12:06
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 18-02-10
Пользователь №: 55 554



Здравствуйте.

Решил пересесть с CVAVR на что-нибудь другое. Т.к. тамашний Си весьма ограничен и не только.
Не зная с чего начать, скачал всё, что под руку попалось:
AVR Studio V4.18 Build 684; IAR 5.30; WinAVR 20100110;

Уж не серчайте на мои вопросы, но я действительно только знакомлюсь с этими программами.


1. Правильно ли я понял, что IAR это только компилятор, который компилит либо .d90 либо hex, в зависимости от проекта. И сам по себе шить МК он не умеет?

2. Для того, что бы прошить МК кодом, который получился в IAR либо отладить его, этот код нужно открыть (например) через AVR Studio и также этот код можно прошить тоже средствами AVR Studio?

3. Нужен ли вообще IAR, ведь AVR Studio сам может компилировать, делать hex и шить? (компилировать С при помощи WinAVR)

4. Или лучше работать в связке IAR и AVR Studio. Как я понял очень большое количество исходников для AVR написаны под IAR.

5. Разве существует большая разница в коде написанным под IAR и кодом написанным чито средствами AVR Studio и WinAVR ?

6. Принимаю любые советы.

Спасибо;
Go to the top of the page
 
+Quote Post
5 страниц V  « < 3 4 5  
Start new topic
Ответов (60 - 67)
Smoky
сообщение May 31 2012, 16:33
Сообщение #61


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135



Коллеги, объясните что это за опрерация и применима ли она в WinAVR?
TWCR=((1<<TWEN)+(1<<TWINT)+(1<<TWSTO))


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 31 2012, 16:45
Сообщение #62


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(дымок @ May 31 2012, 19:33) *
Коллеги, объясните что это за опрерация и применима ли она в WinAVR?
TWCR=((1<<TWEN)+(1<<TWINT)+(1<<TWSTO))

Запись в TWCR байта с установленными (равными 1) битами TWEN, TWINT и TWSTO.
Чаще пишут TWCR=((1<<TWEN)|(1<<TWINT)|(1<<TWSTO)) . Но результат тот же.
Go to the top of the page
 
+Quote Post
Smoky
сообщение May 31 2012, 17:03
Сообщение #63


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135



Цитата(_Артём_ @ May 31 2012, 22:45) *
Запись в TWCR байта с установленными (равными 1) битами TWEN, TWINT и TWSTO.
Чаще пишут TWCR=((1<<TWEN)|(1<<TWINT)|(1<<TWSTO)) . Но результат тот же.


Спасибо. Меня смущает только то что в одной функции одновременно одна и таже операция записана по разному: так как привёл я и так как привели вы. Весьма странно.


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 31 2012, 17:57
Сообщение #64


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(дымок @ May 31 2012, 20:03) *
Спасибо. Меня смущает только то что в одной функции одновременно одна и таже операция записана по разному: так как привёл я и так как привели вы. Весьма странно.

Записать то можно по разному - всё равно это константа
Код
#define TWI_BYTE 0x94

TWCR=TWI_BYTE; // тот же результат


Код
22:           TWCR=((1<<TWEN)|(1<<TWINT)|(1<<TWSTO));
+00000070:   E984        LDI       R24,0x94       Load immediate
+00000071:   93800074    STS       0x0074,R24     Store direct to data space

Может почему-то автору так было удобней в тот момент.
Go to the top of the page
 
+Quote Post
alexeyv
сообщение Jun 1 2012, 03:59
Сообщение #65


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



Цитата
Может почему-то автору так было удобней в тот момент.

Ага,клавиша "+" располагается удобнее на клавиатуре, или клавишу "|" заело.
Go to the top of the page
 
+Quote Post
Smoky
сообщение Jun 6 2012, 17:15
Сообщение #66


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135



Помогите, не могу понять:
#define CH 0x07
temp=I2C_Rx(NOT_ACK);
if(temp&(1<<CH)) - что за операция здесь происходит?


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
Marto
сообщение Jun 6 2012, 17:36
Сообщение #67


Частый гость
**

Группа: Свой
Сообщений: 103
Регистрация: 17-05-09
Из: Ижевск
Пользователь №: 49 190



Цитата(дымок @ Jun 6 2012, 23:15) *
Помогите, не могу понять:
#define CH 0x07
temp=I2C_Rx(NOT_ACK);
if(temp&(1<<CH)) - что за операция здесь происходит?


единичка сдвигается на семь битов (0x07) и поразрядно складывается с переменной temp.
Если седьмой бит переменной temp равен единице, то их побитовая (поразрядная) сумма будет больше нуля, а если значение в скобках if больше нуля, то выполнится соотвествующий код. в противном случае выполнение перейдет на else
1<<CH = 1<<0x07 = 10000000
допустим значение переменной temp = 11011100, тогда
11011100
& 10000000
____________
10000000

или temp = 01110000

01110000
&10000000
____________
00000000


--------------------
Шизоидный холерик
Go to the top of the page
 
+Quote Post
Smoky
сообщение Jun 7 2012, 16:39
Сообщение #68


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135



Цитата(Marto @ Jun 6 2012, 23:36) *
единичка сдвигается на семь битов (0x07) и поразрядно складывается с переменной temp.


Большое спасибо, теперь всё ясно. Я то думал что 0х07 сдвигается на один бит, получался полный ступор.


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post

5 страниц V  « < 3 4 5
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 04:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01499 секунд с 7
ELECTRONIX ©2004-2016