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

 
 
> Разница CodeVision и WinAVR
virtuality
сообщение Jul 22 2006, 10:15
Сообщение #1


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

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



Гребаные идентификаторы....

Как просто было в CodeVision : PORTD.1=1; DDRD=1;
Пытаюсь в WinAVR сделать - достал примерно следующий код:

Код
  DDRD  &= ~(_BV(PD2));                            // Назначаем 2-ю линию порта D на вход
  PORTD |=  (_BV(PD2));                            // подключаем "подтягивающий" резистор


Нельзя ли попроще как-нибудь?


И еще вопрос - инициализирую АЦП - выдает беспорядочные хаотичные цифры. Понятно, что дело в том, что ловятся шумы. Вылечил резистором 4,7 кОм на питание. А как-нить программно нельзяли?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
tiasur
сообщение Jul 25 2006, 22:16
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 24-05-06
Пользователь №: 17 392



AVRGCC 4.1.1

При любой оптимизации:
Код

        PORTD |= ( 1 << 1 );  
  d2:    91 9a           sbi    0x12, 1           ; 18


При отключеной оптимизации:
Код

        PORTD |= ( 1 << 1 );  
  de:    a2 e3           ldi    r26, 0x32; 50
  e0:    b0 e0           ldi    r27, 0x00; 0
  e2:    e2 e3           ldi    r30, 0x32; 50
  e4:    f0 e0           ldi    r31, 0x00; 0
  e6:    80 81           ld    r24, Z
  e8:    82 60           ori    r24, 0x02; 2
  ea:    8c 93           st    X, r24



CodeVision

При любой оптимизации:
Код

;PORTD |= ( 1 << 1 );  
00007e 9a91          SBI  0x12,1


А также:
Код

;PORTD.1 = 1;  
00007f 9a91          SBI  0x12,1


Как видно тут разницы нет никакой. Однако для следующего кода CodeVision обходится всего одним регистром в отличии от AVRGCC 4.1.1:

Код

PORTD = ( 1 << 0 );  
PORTD = ( 1 << 1 );
PORTD = ( 1 << 2 );  
PORTD = ( 1 << 3 );
PORTD = ( 1 << 4 );  
PORTD = ( 1 << 5 );
PORTD = ( 1 << 6 );  
PORTD = ( 1 << 7 );


AVRGCC 4.1.1:
Код
int main(void)
{
  ce:    71 e0           ldi    r23, 0x01; 1
  d0:    62 e0           ldi    r22, 0x02; 2
  d2:    54 e0           ldi    r21, 0x04; 4
  d4:    48 e0           ldi    r20, 0x08; 8
  d6:    30 e1           ldi    r19, 0x10; 16
  d8:    20 e2           ldi    r18, 0x20; 32
  da:    90 e4           ldi    r25, 0x40; 64
  dc:    80 e8           ldi    r24, 0x80; 128

    while(1)
    {
        PORTD = ( 1 << 0 );  
  de:    72 bb           out    0x12, r23; 18
        PORTD = ( 1 << 1 );
  e0:    62 bb           out    0x12, r22; 18
        PORTD = ( 1 << 2 );  
  e2:    52 bb           out    0x12, r21; 18
        PORTD = ( 1 << 3 );
  e4:    42 bb           out    0x12, r20; 18
        PORTD = ( 1 << 4 );  
  e6:    32 bb           out    0x12, r19; 18
        PORTD = ( 1 << 5 );
  e8:    22 bb           out    0x12, r18; 18
        PORTD = ( 1 << 6 );  
  ea:    92 bb           out    0x12, r25; 18
        PORTD = ( 1 << 7 );
  ec:    82 bb           out    0x12, r24; 18


CodeVision:
Код
        ;      34         PORTD = ( 1 << 0 );  
00007a e0e1          LDI  R30,LOW(1)
00007b bbe2          OUT  0x12,R30
        ;      35         PORTD = ( 1 << 1 );
00007c e0e2          LDI  R30,LOW(2)
00007d bbe2          OUT  0x12,R30
        ;      36         PORTD = ( 1 << 2 );  
00007e e0e4          LDI  R30,LOW(4)
00007f bbe2          OUT  0x12,R30
        ;      37         PORTD = ( 1 << 3 );
000080 e0e8          LDI  R30,LOW(8)
000081 bbe2          OUT  0x12,R30
        ;      38         PORTD = ( 1 << 4 );  
000082 e1e0          LDI  R30,LOW(16)
000083 bbe2          OUT  0x12,R30
        ;      39         PORTD = ( 1 << 5 );
000084 e2e0          LDI  R30,LOW(32)
000085 bbe2          OUT  0x12,R30
        ;      40         PORTD = ( 1 << 6 );  
000086 e4e0          LDI  R30,LOW(64)
000087 bbe2          OUT  0x12,R30
        ;      41         PORTD = ( 1 << 7 );                 
000088 e8e0          LDI  R30,LOW(128)
000089 bbe2          OUT  0x12,R30
Go to the top of the page
 
+Quote Post
pitt
сообщение Jul 26 2006, 01:04
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



WinAVR size:
Код

PORTD = ( 1 << 0 );
  fc:    81 e0           ldi    r24, 0x01; 1
  fe:    8b b9           out    0x0b, r24; 11
PORTD = ( 1 << 1 );
100:    82 e0           ldi    r24, 0x02; 2
102:    8b b9           out    0x0b, r24; 11
PORTD = ( 1 << 2 );
104:    84 e0           ldi    r24, 0x04; 4
106:    8b b9           out    0x0b, r24; 11
PORTD = ( 1 << 3 );
108:    88 e0           ldi    r24, 0x08; 8
10a:    8b b9           out    0x0b, r24; 11
PORTD = ( 1 << 4 );
10c:    80 e1           ldi    r24, 0x10; 16
10e:    8b b9           out    0x0b, r24; 11
PORTD = ( 1 << 5 );
110:    80 e2           ldi    r24, 0x20; 32
112:    8b b9           out    0x0b, r24; 11
PORTD = ( 1 << 6 );
114:    80 e4           ldi    r24, 0x40; 64
116:    8b b9           out    0x0b, r24; 11
PORTD = ( 1 << 7 );
118:    80 e8           ldi    r24, 0x80; 128
11a:    8b b9           out    0x0b, r24; 11
PORTD |= ( 1 << 0 );
11c:    58 9a           sbi    0x0b, 0; 11
PORTD |= ( 1 << 1 );
11e:    59 9a           sbi    0x0b, 1; 11
PORTD |= ( 1 << 2 );
120:    5a 9a           sbi    0x0b, 2; 11
PORTD |= ( 1 << 3 );
122:    5b 9a           sbi    0x0b, 3; 11
PORTD |= ( 1 << 4 );
124:    5c 9a           sbi    0x0b, 4; 11
PORTD |= ( 1 << 5 );
126:    5d 9a           sbi    0x0b, 5; 11
PORTD |= ( 1 << 6 );
128:    5e 9a           sbi    0x0b, 6; 11
PORTD |= ( 1 << 7 );


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- virtuality   Разница CodeVision и WinAVR   Jul 22 2006, 10:15
- - ksv198   Цитата(virtuality @ Jul 22 2006, 14:15) Г...   Jul 22 2006, 12:30
- - niccom   Цитата(virtuality @ Jul 22 2006, 14:15) Г...   Jul 22 2006, 12:34
- - xemul   Код#define bitset(var,bitno) ((var...   Jul 22 2006, 14:20
- - pitt   Разница CodeVision и WinAVR в том, что один пакет ...   Jul 22 2006, 16:13
|- - vesago   Цитата(pitt @ Jul 22 2006, 19:13) Разница...   Jul 23 2006, 06:41
|- - defunct   Цитата(vesago @ Jul 23 2006, 09:41) Недос...   Jul 23 2006, 20:15
|- - Serg79   Цитата(defunct @ Jul 24 2006, 00:15) Цита...   Jul 24 2006, 04:59
|- - defunct   Цитата(Serg79 @ Jul 24 2006, 07:59) Ну эт...   Jul 24 2006, 06:31
|- - vet   Цитата(Serg79 @ Jul 24 2006, 08:59) Писат...   Jul 24 2006, 07:52
|- - Serg79   Цитата(vet @ Jul 24 2006, 11:52) Цитата(S...   Jul 24 2006, 08:55
- - Laksus   Цитатаxemul #define bitset(var,bitno) ((var) |= 1 ...   Jul 22 2006, 16:39
|- - xemul   Цитата(Laksus @ Jul 22 2006, 20:39) Понят...   Jul 22 2006, 17:38
- - pitt   Во-первых, PORTD.1 = 1 эквивалентно PORTD |= ( 1 ...   Jul 23 2006, 21:32
|- - vesago   Цитата(pitt @ Jul 24 2006, 00:32) Во-перв...   Jul 24 2006, 07:14
|- - pokos   Цитата(vesago @ Jul 24 2006, 11:14) PORTD...   Jul 24 2006, 09:21
|- - vesago   Цитата(pokos @ Jul 24 2006, 12:21) Цитата...   Jul 24 2006, 09:53
|- - pokos   Цитата(vesago @ Jul 24 2006, 13:53) PORTD...   Jul 24 2006, 12:43
|- - _Bill   Цитата(pokos @ Jul 24 2006, 15:43) Цитата...   Jul 24 2006, 12:57
|- - Семён   Цитата(pokos @ Jul 24 2006, 16:43) Цитата...   Jul 24 2006, 13:07
|- - _Bill   Цитата(Семён @ Jul 24 2006, 16:07) Цитата...   Jul 24 2006, 13:14
|- - Семён   Цитата(_Bill @ Jul 24 2006, 17:14) Цитата...   Jul 24 2006, 13:28
||- - pokos   Цитата(Семён @ Jul 24 2006, 17:28) товари...   Jul 24 2006, 14:11
|- - Woodoo   Цитата(_Bill @ Jul 24 2006, 15:14) Цитата...   Jul 24 2006, 19:31
|- - pitt   Цитата(Woodoo @ Jul 24 2006, 15:31) Если ...   Jul 24 2006, 22:42
- - vet   Serg79 Ручками совершенно необязательно; лично я и...   Jul 24 2006, 09:05
|- - Семён   Цитата(vet @ Jul 24 2006, 13:05) Serg79 Р...   Jul 24 2006, 09:37
|- - Serg79   Цитата(vet @ Jul 24 2006, 13:05) Serg79 Р...   Jul 24 2006, 10:01
- - WHALE   дел на 5 минут,к тому-же я обычно свои библиотечны...   Jul 24 2006, 11:24
|- - Serg79   Цитата(WHALE @ Jul 24 2006, 15:24) дел на...   Jul 24 2006, 11:55
|- - Семён   Цитата(Serg79 @ Jul 24 2006, 15:55) Цитат...   Jul 24 2006, 12:23
|- - defunct   Цитата(Serg79 @ Jul 24 2006, 14:55) А Cod...   Jul 24 2006, 23:06
- - beer_warrior   ЦитатаИ правильно. Хотя: А IAR еще лучше, но по 5....   Jul 25 2006, 06:44
|- - osnwt   Цитата(beer_warrior @ Jul 25 2006, 09:44)...   Jul 25 2006, 10:59
- - Serg79   ЦитатаWinAVR не хуже, он просто сложнее в освоении...   Jul 25 2006, 09:04
- - beer_warrior   ЦитатаНасколько слышал, у него есть проблемы с адр...   Jul 25 2006, 11:09
|- - osnwt   Цитата(beer_warrior @ Jul 25 2006, 14:09)...   Jul 25 2006, 11:22
|- - pitt   Цитата(beer_warrior @ Jul 25 2006, 07:09)...   Jul 25 2006, 15:31
- - beer_warrior   ЦитатаЕсли писать со знанием особенностей конкретн...   Jul 25 2006, 11:31
|- - osnwt   Цитата(beer_warrior @ Jul 25 2006, 14:31)...   Jul 25 2006, 17:37
- - beer_warrior   Цитатаего стоит хотя бы отсутствие прагмы управлен...   Jul 25 2006, 17:35
|- - pitt   Цитата(beer_warrior @ Jul 25 2006, 13:35)...   Jul 25 2006, 18:50
|- - tiasur   pitt, а какая у Вас версия?   Jul 26 2006, 01:43
|- - pitt   Цитата(tiasur @ Jul 25 2006, 21:43) pitt,...   Jul 26 2006, 14:04
|- - Сергей Борщ   О! Может тут кто-нибудь скажет: 1) как застави...   Jul 26 2006, 17:16
|- - aesok   Цитата(Сергей Борщ @ Jul 26 2006, 21:16) ...   Jul 26 2006, 21:03
- - beer_warrior   Цитата2) объявляю две функции (putstring, putstrin...   Jul 26 2006, 21:53
|- - pitt   Цитата(beer_warrior @ Jul 26 2006, 17:53)...   Jul 26 2006, 23:01
|- - pitt   Цитата(beer_warrior @ Jul 26 2006, 17:53)...   Jul 27 2006, 12:58
|- - pitt   Цитата(beer_warrior @ Jul 26 2006, 17:53)...   Jul 27 2006, 13:21
- - Seasonf   Прошу прощения за глупый вопрос, но как заставить ...   Aug 11 2006, 08:07
- - pitt   Код#include <avr/pgmspace.h> ... char cali...   Aug 11 2006, 11:15
- - Seasonf   Или так: #include <avr/pgmspace.h> ... pro_...   Aug 11 2006, 12:34


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

 


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


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