|
Разница CodeVision и WinAVR |
|
|
|
Jul 22 2006, 10:15
|
Частый гость
 
Группа: Свой
Сообщений: 83
Регистрация: 17-05-06
Пользователь №: 17 190

|
Гребаные идентификаторы.... Как просто было в CodeVision : PORTD.1=1; DDRD=1; Пытаюсь в WinAVR сделать - достал примерно следующий код: Код DDRD &= ~(_BV(PD2)); // Назначаем 2-ю линию порта D на вход PORTD |= (_BV(PD2)); // подключаем "подтягивающий" резистор Нельзя ли попроще как-нибудь? И еще вопрос - инициализирую АЦП - выдает беспорядочные хаотичные цифры. Понятно, что дело в том, что ловятся шумы. Вылечил резистором 4,7 кОм на питание. А как-нить программно нельзяли?
|
|
|
|
|
 |
Ответов
|
Jul 25 2006, 22:16
|
Участник

Группа: Новичок
Сообщений: 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
|
|
|
|
|
Jul 26 2006, 01:04
|
Местный
  
Группа: Участник
Сообщений: 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 );
--------------------
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|