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

 
 
 
Reply to this topicStart new topic
> CVAVR 1.24.6 Ошибка
Stepanich
сообщение Jun 19 2005, 20:44
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 8-06-05
Из: Москва
Пользователь №: 5 847



CVAVR 1.24.6
При попытке записать бит или проделать какую-либо операцию с отдельным битом портов F или G возникает ошибка «left side of ‘.’ requires struct/union».
Пример: PORTG.2=1 – ошибка,
PORTF.0=~PORTF.0 – ошибка.
Пробовал реализовывать последнюю операцию при помощи асм. вставки – возникает ошибка ассемблирования; с портами А-Е проблем не возникает.
При указании компилятору использовать порт F для ЖКИ также возникает ошибка ассемблирования.
Режим совместимости с MEGA 103 не включен.
В чём дело?
Спасибо.
Go to the top of the page
 
+Quote Post
Igor26
сообщение Jun 20 2005, 05:21
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата(Stepanich @ Jun 19 2005, 23:44)
CVAVR 1.24.6
При попытке записать бит или проделать какую-либо операцию с отдельным битом портов F или G возникает ошибка «left side of ‘.’ requires struct/union».
Пример: PORTG.2=1 – ошибка,
PORTF.0=~PORTF.0 – ошибка.
Пробовал реализовывать последнюю операцию при помощи асм. вставки – возникает ошибка ассемблирования; с портами А-Е проблем не возникает.
При указании компилятору использовать порт F для ЖКИ также возникает ошибка ассемблирования.
Режим совместимости с MEGA 103 не включен.
В чём дело?
Спасибо.
*

К этим портам нужно обращаться как к ячейкам памяти. Я делаю так:

PORTG=PING&0xfe;
#asm("nop")
PORTG=PING|0x01;
#asm("nop")

В этом примере формирую отрицательный импульс.
Go to the top of the page
 
+Quote Post
ANT
сообщение Jun 20 2005, 09:08
Сообщение #3


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

Группа: Свой
Сообщений: 187
Регистрация: 22-06-04
Пользователь №: 127



Цитата(Stepanich @ Jun 19 2005, 23:44)
CVAVR 1.24.6
При попытке записать бит или проделать какую-либо операцию с отдельным битом портов F или G возникает ошибка «left side of ‘.’ requires struct/union».
Пример: PORTG.2=1 – ошибка,
PORTF.0=~PORTF.0 – ошибка.
Пробовал реализовывать последнюю операцию при помощи асм. вставки – возникает ошибка ассемблирования; с портами А-Е проблем не возникает.
При указании компилятору использовать порт F для ЖКИ также возникает ошибка ассемблирования.
Режим совместимости с MEGA 103 не включен.
В чём дело?
Спасибо.
*

В хелпе CVAVR написано:
It is important to note that bit selector access to I/O registers located in internal SRAM above address 5Fh (like PORTF for the ATmega128 for example) will not work, because the CBI, SBI, SBIC and SBIS instructions can’t be used for SRAM access.
Т.е. прямые битовые операции не поддерживаются для портов F и G.
Управление светодиодом, не трогая остальных бит регистра, можно сделать так:

#define LED_RED_OUT PORTG // Red LED output PORTG PIN0

LED_RED_OUT = (LED_RED_OUT & ~0x01) | (led_red_flag ? 0x00 : 0x01);
Go to the top of the page
 
+Quote Post

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

 


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


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