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

 
 
> Совместное использование ATMega128L и CS8900A-CQ3, При совместном включении CS8900A-CQ3 с ATMega128L микроконтроллер ATMe
jt777
сообщение Sep 18 2007, 12:27
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 18-09-07
Из: Украина
Пользователь №: 30 612



Решил подключить ATMega128 к локальной сети. Купил олимексовскую плату CS8900A-h, с установленным контроллером CS8900A-CQ3. ATMega128 без подключенной к ней плате CS8900A-h работает нормально, но при подключенни CS8900A-h, питание падает с 3.3 В до 3.1В и Mega выключается. Пробовал поднять питание до номинального уровня, но не помогло. Пробовал просто подать питание на плату CS8900A-h, от того же источника питания, что питается Mega, но Mega все равно выключается. Не могу понять в чем проблема. Кто знает подскажите.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jt777
сообщение Jan 5 2008, 14:50
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 18-09-07
Из: Украина
Пользователь №: 30 612



Подключил CS8900A к ATMega128, написал функции чтения/записи для работы с CS8900A, все работает нормально, удалось передать кадр в сеть и удачно получить на своем компьютере. Начал писать функции для того что бы прочитать принятый кадр из CS8900A, тут та и начались проблемы. Начинаю пинговать свое устройство, читаю регистр статуса RxEvent, устанавливается флаг RxOK и флаг Broadcast, сигнализирующий что принят широковещательный запрос. Читаю RxStatus Word, тоже нормально считывается (читаю с порта 0), а дальше, когда начинаю считывать с того же порта 0 длину принятого кадра считывается 0. Читаю как положено сначала старший байт потом младший. Пробовал обращаться непосредственно к регистру RxLength, через указатель регистра тоже самое. Может кто с подобной проблемой сталкивался подскажите пожалуйста. Ниже привожу функцию которой пытаюсь прочитать данные из порта 0:

#define dir_data DDRD //направление шины данных
#define read_data PIND //Для чтения данных с шины данных
#define IOR (0b00010000)
#define IOW (0b00100000)

unsigned int ReadHB1ST8900(unsigned char Address)
{
unsigned int ReturnValue;
ReturnValue=0;
data = 0;
dir_data = 0x00; // настройка порта данный на ввод
addr = IOR | IOW | (Address + 1); // установка адреса. Старший байт
addr &= ~IOR; // строб чтения
delay_us(100);
ReturnValue = read_data;// читаю данные с шины данных
delay_us(10);
addr = IOR | IOW | Address; // установка адреса. Младший байт
ReturnValue =ReturnValue<<8; // сдвиг влево
addr &= ~IOR; // строб чтения
delay_us(100);
ReturnValue |= read_data; // читаю данные с шины данных. Получение младшего байта
delay_us(10);
addr |= IOR; // Завершаю процедуру чтения
dir_data = 0xff; // настройка порта данный на вывод

return ReturnValue;
}
Go to the top of the page
 
+Quote Post



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

 


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


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