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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Разница CodeVision и WinAVR
vet
сообщение Jul 24 2006, 09:05
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Serg79
Ручками совершенно необязательно; лично я использую определения битов, взятые из заголовочных файлов IAR.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
pokos
сообщение Jul 24 2006, 09:21
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 270
Регистрация: 29-06-06
Пользователь №: 18 445



Цитата(vesago @ Jul 24 2006, 11:14) *
PORTD &= (1<<blabla)

С трудом представляю, где это может пригодиться. Попробуйте написать в том же духе строчку, сбрасывающую в ноль единственный бит.
Go to the top of the page
 
+Quote Post
Семён
сообщение Jul 24 2006, 09:37
Сообщение #18


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

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Цитата(vet @ Jul 24 2006, 13:05) *
Serg79
Ручками совершенно необязательно; лично я использую определения битов, взятые из заголовочных файлов IAR.

Порты всегда переопределяю в отдельном файле, а то после разводки можно потратить еще кучу времени, так как конструкторы любят их менять как им удобно (кроме портов зависимых от аппаратуры). Далее всегда пишу макросы типа:
#define COMP_U_LOW COMPORATOR_U &= ~Bit(COMP_U);
для удобства использования. Остальную регистры переопределяю для быстрого перехода на другой контролер.


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
vesago
сообщение Jul 24 2006, 09:53
Сообщение #19


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Цитата(pokos @ Jul 24 2006, 12:21) *
Цитата(vesago @ Jul 24 2006, 11:14) *

PORTD &= (1<<blabla)

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


PORTD &= ~(1<<blabla);
Код
#define LED_DDR              DDRD
#define LED_PORT             PORTD
#define LED_PIN                PIND
#define LED                       3
#define LED_ON                 LED_PORT |= (1<<LED)
#define LED_OFF                LED_PORT &= ~(1<<LED)

    if(system.led_timer == 0)
    {
      if((LED_PIN & (1<<LED)) == 0)
      {
        LED_ON;
      }
        else
        {
          LED_OFF;
        }

      system.led_timer = 0.1*(1000/SYSTEM_TICK);
    }
Go to the top of the page
 
+Quote Post
Guest_Serg79_*
сообщение Jul 24 2006, 10:01
Сообщение #20





Guests






Цитата(vet @ Jul 24 2006, 13:05) *
Serg79
Ручками совершенно необязательно; лично я использую определения битов, взятые из заголовочных файлов IAR.

Так и Я о том же, что в нормальных компиляторах (типа IAR или WinAVR) эти все флаги и т.п. прописанны в заголовочных файлах, а в CodeVisionAVR C Compiler этого нет, там все приходится ручками писать.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Jul 24 2006, 11:24
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



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


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
Guest_Serg79_*
сообщение Jul 24 2006, 11:55
Сообщение #22





Guests






Цитата(WHALE @ Jul 24 2006, 15:24) *
дел на 5 минут,к тому-же я обычно свои библиотечные файлы исполь
зую,где уже все определено.

Все зависит от проекта, а то так и весь Datasheets придется в заголовочный файл заносить, а уж это будет, поверте мне, точно не 5 минут. Если не верите, можете попробовать.

Я согласен, можно и ручками все заголовочные файлы переписать. Но зачем, когда в нормальных компиляторах это уже сделано.

А CodeVisionAVR C Compiler пройденный этап. И Я к ниму уже врядли когда вернусь после WinAVR.

Но это все, только мое личное мнение. excl.gif
Go to the top of the page
 
+Quote Post
Семён
сообщение Jul 24 2006, 12:23
Сообщение #23


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

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Цитата(Serg79 @ Jul 24 2006, 15:55) *
Цитата(WHALE @ Jul 24 2006, 15:24) *

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

Все зависит от проекта, а то так и весь Datasheets придется в заголовочный файл заносить, а уж это будет, поверте мне, точно не 5 минут. Если не верите, можете попробовать.

Я согласен, можно и ручками все заголовочные файлы переписать. Но зачем, когда в нормальных компиляторах это уже сделано.

А CodeVisionAVR C Compiler пройденный этап. И Я к ниму уже врядли когда вернусь после WinAVR.

Но это все, только мое личное мнение. excl.gif

ИМХО: переписываешь порты исключительно для облегчения себе жизни. Инструкцию LED_OFF не надо комментировать в отличие от PORTD.1=1;. К томуже при смени портов будешь выискивать в проекте все эти PORTD.1=1;


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
pokos
сообщение Jul 24 2006, 12:43
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 270
Регистрация: 29-06-06
Пользователь №: 18 445



Цитата(vesago @ Jul 24 2006, 13:53) *
PORTD &= ~(1<<blabla);

Когда-то я придумал то же самое.... товарищи даже спрашивали, мол, зачем так сложно. Потом попробовал, во что превращают это разные компиляторы с разными опциями оптимизации. Интересно было!
Go to the top of the page
 
+Quote Post
_Bill
сообщение Jul 24 2006, 12:57
Сообщение #25


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(pokos @ Jul 24 2006, 15:43) *
Цитата(vesago @ Jul 24 2006, 13:53) *
PORTD &= ~(1<<blabla);

Когда-то я придумал то же самое.... товарищи даже спрашивали, мол, зачем так сложно. Потом попробовал, во что превращают это разные компиляторы с разными опциями оптимизации. Интересно было!

И во что же?
Go to the top of the page
 
+Quote Post
Семён
сообщение Jul 24 2006, 13:07
Сообщение #26


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

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Цитата(pokos @ Jul 24 2006, 16:43) *
Цитата(vesago @ Jul 24 2006, 13:53) *
PORTD &= ~(1<<blabla);

Когда-то я придумал то же самое.... товарищи даже спрашивали, мол, зачем так сложно. Потом попробовал, во что превращают это разные компиляторы с разными опциями оптимизации. Интересно было!

Всегда считал, что битовые операции с портами в AVR компилятор преобразует в что-то типа:
sbi DDRB,1


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
_Bill
сообщение Jul 24 2006, 13:14
Сообщение #27


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(Семён @ Jul 24 2006, 16:07) *
Цитата(pokos @ Jul 24 2006, 16:43) *

Цитата(vesago @ Jul 24 2006, 13:53) *
PORTD &= ~(1<<blabla);

Когда-то я придумал то же самое.... товарищи даже спрашивали, мол, зачем так сложно. Потом попробовал, во что превращают это разные компиляторы с разными опциями оптимизации. Интересно было!

Всегда считал, что битовые операции с портами в AVR компилятор преобразует в что-то типа:
sbi DDRB,1

А разве не так?
Go to the top of the page
 
+Quote Post
Семён
сообщение Jul 24 2006, 13:28
Сообщение #28


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

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Цитата(_Bill @ Jul 24 2006, 17:14) *
Цитата(Семён @ Jul 24 2006, 16:07) *

Цитата(pokos @ Jul 24 2006, 16:43) *

Цитата(vesago @ Jul 24 2006, 13:53) *
PORTD &= ~(1<<blabla);

Когда-то я придумал то же самое.... товарищи даже спрашивали, мол, зачем так сложно. Потом попробовал, во что превращают это разные компиляторы с разными опциями оптимизации. Интересно было!

Всегда считал, что битовые операции с портами в AVR компилятор преобразует в что-то типа:
sbi DDRB,1

А разве не так?

товарищ pokos утверждает что НЕТ. Кстати если у меня в проекте есть не используемая аппаратура их порты и регистры (если можно) стараюсь использовать в виде глобальных флагов.
typedef struct SYSTEM
{
unsigned char data1:1;
unsigned char data2:1;
unsigned char data3:1;
unsigned char data4:1;
}SYSTEM;
__no_init volatile SYSTEM system@0x40;

значительно увеличивается скорость работы установки флага system.data1=1;, сброса флага и проверки флага.


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
pokos
сообщение Jul 24 2006, 14:11
Сообщение #29


Местный
***

Группа: Участник
Сообщений: 270
Регистрация: 29-06-06
Пользователь №: 18 445



Цитата(Семён @ Jul 24 2006, 17:28) *
товарищ pokos утверждает что НЕТ.

Кстати, не утверждал, просто осадочек остался. И проверил в имеющихся ЦодеВижн и ИАР - нормально компилируют. Потом нашёл-таки проект, где чудеса. Дык, там опечатка - как раз PORTD &= (1<<blabla) вместо PORTD &= ~(1<<blabla);
Так что, пардоньте, товарищи.
Go to the top of the page
 
+Quote Post
Woodoo
сообщение Jul 24 2006, 19:31
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 26-05-05
Из: Севастополь
Пользователь №: 5 391



Цитата(_Bill @ Jul 24 2006, 15:14) *
Цитата(Семён @ Jul 24 2006, 16:07) *

Цитата(pokos @ Jul 24 2006, 16:43) *

Цитата(vesago @ Jul 24 2006, 13:53) *
PORTD &= ~(1<<blabla);

Когда-то я придумал то же самое.... товарищи даже спрашивали, мол, зачем так сложно. Потом попробовал, во что превращают это разные компиляторы с разными опциями оптимизации. Интересно было!

Всегда считал, что битовые операции с портами в AVR компилятор преобразует в что-то типа:
sbi DDRB,1

А разве не так?


Если речь идет только о портах с адресом 0...0x1F (0x20...0x3F) то это так, но не забудем что к другим портам, с адресом 0x20...0x3F (0x40...0x5F) это не применимо, и компилятор всегда скомпилет чтото типа
in r16, abc
andi r16, ~(1<<bit_name)
out abc, r16
Go to the top of the page
 
+Quote Post

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

 


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


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