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

 
 
> Atmega128 и DS1307 через порт G
AndrewCIK
сообщение Jul 17 2017, 07:06
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 17-07-17
Из: Павлодар
Пользователь №: 98 198



Здравствуйте!
Решил поработать с микроконтроллерами фирмы ATMEL и чтобы не тратиться я решил найти какую-нибудь готовую плату с микроконтроллером. Поискав на работе среди хлама, нашёл плату с микроконтроллером atmega128-16au. Плата от какого-то анализатора и поэтому имеет дисплей (hd4478), кнопки (6шт.), светодиоды (11шт.), а так же впаяна микросхема реального времени ds1307 c которой и возникли проблемы.

С кнопками, светодиодами и экраном проблем не возникло - всё работает, а вот с микросхемой ds1307 проблемы - не могу запрограммировать.

Начну с того что пишу в CodeVisionAVR v3.12 и микросхема припаяна к порту G микроконтроллера (PORTG.3 и PORTG.4). В программном обеспечении CodeVisionAVR в визарде можно настроить всё пару кликами мыши, но проблема в том что там нет выбора порта G (PORTG)!!! Пробовал без визарда т.е. вручную забить порт G, но выходит ошибка что типа превышен диапазон.

#asm
.equ __i2c_port=0x65;
.equ __sda_bit=4;
.equ __scl_bit=3;
#endasm

Паяли это всё на заводе и прикол в том что эта плата работала на реальном оборудовании! Я же просто хотел перепрограммировать её чтоб поучиться)))

Ну и собственно вопрос: как можно реализовать работу ds1307 на порту G ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Ftron
сообщение Sep 26 2017, 12:31
Сообщение #2





Группа: Новичок
Сообщений: 2
Регистрация: 26-09-17
Пользователь №: 99 483



Memphis правильно писал-
В контроллере АТМега128 команды обращения к портам F и G немного отличается от обращения к остальным (А-Е) портам,
например команда ассемблера OUT заменяется на команду STS,
а команда IN на LDS (по информации от Atmel из-за удаленности в карте адресов этих портов)

Поэтому все обращения к этим портам F,G (даже инициализация выводов этих портов) команды IN и OUT не работают.
Ваша команда
.equ __i2c_port=0x65;
не разрешит обращаться по команде IN R16,0x65 , но разрешит по команде LDS R16,0x65
Это надо объяснить CodeVisionAVRу.
Сам стандартный порт I2C находится на D0(SCL), D1(SDA) порту.
Самое легкое - переназначить на них выводы



Go to the top of the page
 
+Quote Post



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

 


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


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