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

 
 
 
Reply to this topicStart new topic
> 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
Jury093
сообщение Jul 17 2017, 07:49
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 827
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(AndrewCIK @ Jul 17 2017, 10:06) *
Ну и собственно вопрос: как можно реализовать работу ds1307 на порту G ?

вытащите даташит на m128 и посмотрите для чего предназначены G3/G4..
в вашем случае работу можно реализовать программным i2c-gpio, т.е. управлять контактами эмулируя TWI шину..
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Jul 17 2017, 12:45
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Из: Киев
Пользователь №: 18 409



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


Порт G находится в области оперативной памяти, поэтому обращение к нему через команды работы с оперативкой (lds/sts кажется). Ну и адреса соответствующие. Смотрите в доке - там всё написано.
Go to the top of the page
 
+Quote Post
AndrewCIK
сообщение Jul 19 2017, 12:36
Сообщение #4





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



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



Сообщение отредактировал AndrewCIK - Jul 19 2017, 12:37
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jul 20 2017, 08:48
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 2 718
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



CodeVisionAVR в топку! Используйте avr-gcc.

Для начала лучше:
https://sourceforge.net/projects/winavr/files/

потом, когда вдруг потребуется что-то свеженькое:
http://www.microchip.com/development-tools/atmel-studio-7
+
http://www.atmel.com/ru/ru/tools/ATMELAVRT...FORWINDOWS.aspx


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Ftron
сообщение Sep 26 2017, 12:31
Сообщение #6





Группа: Новичок
Сообщений: 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 Текстовая версия Сейчас: 21st November 2017 - 19:27
Рейтинг@Mail.ru


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