Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
3 / 3 / 0
Регистрация: 13.05.2012
Сообщений: 98
1

Atmega6490. Работа с портами в CVAVR

14.03.2014, 23:59. Показов 1262. Ответов 8
Метки нет (Все метки)

для CVAVR последняя версия:

так работает:
C
1
PORTA.1=1;
и так работает:
C
1
PORTA=(1<<1);
так не работает:
C
1
PORTJ.1=1;
а так работает:
C
1
PORTJ=(1<<1);
так работает:
C
1
while (PINA.1) {};
а вот так уже нет:
C
1
while (PINJ.1) {}; // так как PINJ это уже union или struct
как правильно записать PINJ.1?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2014, 23:59
Ответы с готовыми решениями:

Работа с портами
Добрый день. Стоит задача дипломного проекта - сканирование портов локальных пк. Вроде бы нашел...

Работа с COM портами в VB????
Подскажите, пожалуйста возможные способы программирования работы с СОМ портами!!! Использование...

Работа с портами
Нужна библиотека на подобии inpout32 чтоб подключаться непосредственно к регистрам (точнее 888 и...

Работа с COM портами
Всем привет! Начал работу с com-портами на php. Попытка открыть порт: $file = fopen (&quot;COM1&quot;,...

8
Модератор
Эксперт по электронике
8471 / 6300 / 852
Регистрация: 14.02.2011
Сообщений: 21,847
15.03.2014, 00:03 2
Цитата Сообщение от user75 Посмотреть сообщение
// так как PINJ это уже union или struct
ну так привел бы её
Цитата Сообщение от user75 Посмотреть сообщение
как правильно записать PINJ.1?
попробуй так
C++
1
while(PINJ&0x02)
бит установлен
C++
1
while(!(PINJ&0x02))
бит не установлен
1
3 / 3 / 0
Регистрация: 13.05.2012
Сообщений: 98
15.03.2014, 00:07  [ТС] 3
спасибо, но видимо и так тоже работает, по крайней мере компилируется :

C
1
while (PINJ1)
смешно...
0
Модератор
Эксперт по электронике
8471 / 6300 / 852
Регистрация: 14.02.2011
Сообщений: 21,847
15.03.2014, 00:14 4
Цитата Сообщение от user75 Посмотреть сообщение
спасибо, но видимо и так тоже работает, по крайней мере компилируется
так в h файл бы залез и посмотрел как реализовано
скорее всего это кастрированый порт и посему по другому программируется
с Atmega6490 дело не имел, но где то встречался с такой бякою, обходил как и показал, при помощи битовых масок
0
1917 / 1233 / 123
Регистрация: 04.01.2010
Сообщений: 4,418
15.03.2014, 00:21 5
Цитата Сообщение от user75 Посмотреть сообщение
для CVAVR последняя версия:
замечательное начало. А какая она, последняя? У меня последняя 2.05 ... А у вас? (делитесь, если есть новее )
Второе: что значит "не работает"? Не компилится? Условие не реагирует? Что?

Третье: Покажите скомпиленый ассемблер кода. Для этого можно включить его генерацию в IDE и посмотреть что по факту наасемблил компилятор.

4) PINJ1 - это просто объявления битов (1<<0).. (1<<7), если мне не изменяет память. То есть код компилиться будет, но в условии у вас константа...
1
3 / 3 / 0
Регистрация: 13.05.2012
Сообщений: 98
15.03.2014, 02:45  [ТС] 6
я скачал бесплатную версию, у них сейчас до 4кб...

по поводу работает или нет, все же не работает... никак ... компилируется- да, работать - нет...

какие еще варианты как правильно записать?

про ассемблер попробую сейчас

Добавлено через 8 минут
галиматья в коде:

Assembler
1
2
3
4
5
; 0000 0185     while (PINJ&0x03)
_0x10:
    LDS  R30,219
    ANDI R30,LOW(0x3)
    BREQ _0x12
а должно быть:

Assembler
1
2
SBIS 0x0,0
....
Добавлено через 1 час 29 минут
таки ктобы мог подумать...
правильный ответ:

C
1
while (PINJ&(1<<3)) {};
1
966 / 593 / 97
Регистрация: 15.05.2012
Сообщений: 3,503
15.03.2014, 09:33 7
Лучший ответ Сообщение было отмечено raxp как решение

Решение

Цитата Сообщение от user75 Посмотреть сообщение
галиматья в коде: Код ASM1
2
3
4
5
; 0000 0185 * * while (PINJ&0x03)
_0x10:
* * LDS *R30,219
* * ANDI R30,LOW(0x3)
* * BREQ _0x12а должно быть: Код ASM1
2
SBIS 0x0,0
Увы, не галиматья. Увы, не должно быть. Доступ к битам портов, старше Е, возможен только на уровне байта, но не бита.
1
1917 / 1233 / 123
Регистрация: 04.01.2010
Сообщений: 4,418
15.03.2014, 11:44 8
user75, интересное замечание и очередная "шишка" . Спасибо, что поделились.
Цитата Сообщение от pyzhman Посмотреть сообщение
Доступ к битам портов, старше Е, возможен только на уровне байта, но не бита.
Вам тоже спасибо. А можно номер странички об этом из ДШ? Вообще, как вы это обнаружили?

Добавлено через 4 минуты
...сорри, сам нашел: стр.21, Пункто I/O Memory.
0
966 / 593 / 97
Регистрация: 15.05.2012
Сообщений: 3,503
15.03.2014, 19:02 9
Цитата Сообщение от Voland_ Посмотреть сообщение
как вы это обнаружили?
Так же, как и user75. А потом так же как и вы:
Цитата Сообщение от Voland_ Посмотреть сообщение
нашел
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2014, 19:02

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Работа с COM-портами.
Необходимо написать программу, получающую время с ком-порта (вообще не представляю как это сделать)...

работа с портами
Контролер ЕЛТ имеет порт адреса 3д4 в который записывает номер регистра элт которому будет...

Работа с COM портами
Здравствуйте. Облазил много различных ресурсов в сети но не могу найти решение своей задачи. ...

Работа с несколькими COM портами
В компе есть плата расширения с 16 сом портами. Надо в реальном времени следить за ними. Оправлять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.