|
IAR, AVR Studio, WinAVR, вопрос чайника |
|
|
|
Mar 1 2010, 12:06
|
Группа: Участник
Сообщений: 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. Принимаю любые советы.
Спасибо;
|
|
|
|
|
 |
Ответов
(60 - 67)
|
May 31 2012, 17:03
|

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

|
Цитата(_Артём_ @ May 31 2012, 22:45)  Запись в TWCR байта с установленными (равными 1) битами TWEN, TWINT и TWSTO. Чаще пишут TWCR=((1<<TWEN)|(1<<TWINT)|(1<<TWSTO)) . Но результат тот же. Спасибо. Меня смущает только то что в одной функции одновременно одна и таже операция записана по разному: так как привёл я и так как привели вы. Весьма странно.
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
May 31 2012, 17:57
|
Гуру
     
Группа: Свой
Сообщений: 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 Может почему-то автору так было удобней в тот момент.
|
|
|
|
|
Jun 1 2012, 03:59
|
Местный
  
Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940

|
Цитата Может почему-то автору так было удобней в тот момент. Ага,клавиша "+" располагается удобнее на клавиатуре, или клавишу "|" заело.
|
|
|
|
|
Jun 6 2012, 17:36
|

Частый гость
 
Группа: Свой
Сообщений: 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
--------------------
Шизоидный холерик
|
|
|
|
|
Jun 7 2012, 16:39
|

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

|
Цитата(Marto @ Jun 6 2012, 23:36)  единичка сдвигается на семь битов (0x07) и поразрядно складывается с переменной temp. Большое спасибо, теперь всё ясно. Я то думал что 0х07 сдвигается на один бит, получался полный ступор.
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|