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

 
 
> проблемы с программировоние ATMega 1280, CodeVision не обращается к портам с G по L
morpheus
сообщение Oct 10 2008, 10:56
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 7-09-06
Пользователь №: 20 173



ДОброго всем времени суток
есть mega1280 и компилятор CodeVision 1.25.8 prof при попытке считаь пин на портах с G по L
if (PINL.2==0 или PORTL.2) выдает ошибку он это видит как структуру. Хотя на более младших портах все работает. Подскажите пожалеста в чем проблема
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Oct 10 2008, 17:29
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Аааа.. Вот как дела значат абстоят.
Значит 100 раз прав оказался компилятор IAR, который требует ко всем портам такого обращения. smile.gif

При этом он достаточно грамотный, чтобы чётко распознавать и компилироваться в "нужные" конструкции.

Вот объявления
Код
#define    OW_DQ            0                            // Шина данных для 1-wire устройств
#define    OW_PIN            PINB
#define    OW_DDR            DDRB
#define    OW_PORT            PORTB

#define    OW_PORT_SET        OW_PORT |=    (1<<OW_DQ)
#define    OW_PORT_CLR        OW_PORT &= ~(1<<OW_DQ)
#define    OW_DDR_SET        OW_DDR  |=    (1<<OW_DQ)
#define    OW_DDR_CLR        OW_DDR  &= ~(1<<OW_DQ)


А вот пример компиляции
Код
          uint8_t    OW_reset(void)
   \                     OW_reset:
     44          {
   \   00000000   938A               ST      -Y, R24
     45            uint8_t answer;
     46            
     47            OW_PORT_SET;                                    // Обеспечить питанием для двух проводного варианта
   \   00000002   9A28               SBI     0x05, 0x00
     48            OW_DDR_SET;                                    // На вывод
   \   00000004   9A20               SBI     0x04, 0x00
     49            DelayMs(10);                                    // 10 ms
   \   00000006   E00A               LDI     R16, 10
   \   00000008   ....               RCALL   DelayMs
     50            
     51            OW_PORT_CLR;                                    // Reset
   \   0000000A   9828               CBI     0x05, 0x00
     52            DelayMks(510);                                // 510 us
   \   0000000C   EF0E               LDI     R16, 254
   \   0000000E   E011               LDI     R17, 1
   \   00000010   ....               RCALL   DelayMks
     53          
     54            OW_DDR_CLR;                                    // Освободить шину
   \   00000012   9820               CBI     0x04, 0x00
     55            OW_PORT_SET;                                    // Подпорка
   \   00000014   9A28               SBI     0x05, 0x00
     56            DelayMks(90);                                    // ~90us
   \   00000016   E50A               LDI     R16, 90
   \   00000018   E010               LDI     R17, 0
   \   0000001A   ....               RCALL   DelayMks
     57          
     58            answer = ((OW_PIN & (1<<OW_DQ))!=0);
   \   0000001C   E080               LDI     R24, 0
   \   0000001E   9918               SBIC    0x03, 0x00
   \   00000020   E081               LDI     R24, 1
     59            DelayMks(400);                                 // ~420us для завершения цикла
   \                     ??OW_reset_0:
   \   00000022   E900               LDI     R16, 144
   \   00000024   E011               LDI     R17, 1
   \   00000026   ....               RCALL   DelayMks
     60            OW_DDR_SET;                                    // На вывод
   \   00000028   9A20               SBI     0x04, 0x00
     61            return (answer);                                // 0-есть устройства, 1-нет устройств
   \   0000002A   2F08               MOV     R16, R24
   \   0000002C   9189               LD      R24, Y+
   \   0000002E   9508               RET
   \   00000030                      REQUIRE _A_PORTB
   \   00000030                      REQUIRE _A_DDRB
   \   00000030                      REQUIRE _A_PINB
     62           }
     63
Go to the top of the page
 
+Quote Post



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

 


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


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