Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
kyryk444
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 67
1

Не заводится DS2480B от AtMega32a

14.02.2012, 00:52. Просмотров 2677. Ответов 2
Метки нет (Все метки)

Всем доброго времени суток!
Чтобы завести эту микросхему, даташит рекомендует послать следующую последовательность: С1, 17, 45, 5B, 0А, 91. На это должен придти ответ, но его нет. Код вот такой:

Код
//#define F_CPU 8000000L

#include <avr/io.h>
#include <util/delay.h>
#include "other.h"

//Инициализирующая последовательность
volatile char InsomingBuffer[5];

void main()
{

//DDRA = 0xFF; //Выход
//DDRC = 0xFF; //Выход
//DDRD = 0xFF; //Выход

UCSRC = (1 << URSEL) | (1 << UCSZ2) | (1 << UCSZ1) | (1 << UCSZ0);
UCSRB = (1 << RXEN) | (1 << TXEN);
UBRRL = 0x51;

while ( !( UCSRA & (1<<UDRE)) ) ;
UDR = 0b000000000;
_delay_ms(2);
UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0);
_delay_ms(2);

//Ждём очистку буфера
while ( !( UCSRA & (1<<UDRE)) ) ;
//Пишем байт синхронизации
UDR = 0xC1;

//Ждём очистку буфера
while ( !( UCSRA & (1<<UDRE)) ) ;
//Пишем байт установки PDSRC
UDR = 0x17;

//Ждём очистку буфера
while ( !( UCSRA & (1<<UDRE)) ) ;
//Пишем байт установки W1LT
UDR = 0x45;

//Ждём очистку буфера
while ( !( UCSRA & (1<<UDRE)) ) ;
//Пишем байт установки DSO/W0RT
UDR = 0x5B;

//Ждём очистку буфера
while ( !( UCSRA & (1<<UDRE)) ) ;
//Пишем байт чтения RBR
UDR = 0x0F;

//Ждём очистку буфера
while ( !( UCSRA & (1<<UDRE)) ) ;
//Пишем бит 1wire
UDR = 0x91;

for (int i = 0; i<5; ++i)
{
while ( !(UCSRA & (1<<RXC)) );
InsomingBuffer[i] = UDR;
}

DDRA = 0xFF; //Выход
DDRC = 0xFF; //Выход
}
Программа замирает на
Код
while ( !(UCSRA & (1<<RXC)) );
И больше не двигается.

Подскажите, пожалуйста, где ошибка?
PS. Обнаглею: а может кто-нибудь сишным кодом поделится? :-)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2012, 00:52
Ответы с готовыми решениями:

ATmega8a, ATmega32a и т.д.
Доброго времени суток! Компания атмель вместо родных нам мег восьмых, шестнадцатых и т.д. стала...

atmega32A Timer1
возможно ли получить две разных частоты (меиндр) на выводах OC1A и OC1B? чего-то туплю, как для...

Atmega32A и АЦП
Подскажите, где у меня ошибка в инициализации? Пытаюсь настроить АЦП в режим непрерывного...

Заводится, выключается, заводится. Чудо ASUS p7h55-m si
Помогите люди которые добрые. Курил гугл, различные форумы в т. ч. и cyberforum, не нашел ничего...

Проблема с DS2480B
Всем доброго вечера! Возможно кто-то сталкивался с похожей проблемой и сможет мне помочь? ...

2
kyryk444
0 / 0 / 0
Регистрация: 23.06.2011
Сообщений: 67
14.02.2012, 01:00 2
Наткнулся на сие - http://itistromyx.ru/forum/lofiversion/index.php/t39273.html
0
suhidk
0 / 0 / 0
Регистрация: 30.06.2011
Сообщений: 45
14.02.2012, 02:32 3
Код
while (!(UCSRA & (1 << UDRE)));
а если так?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2012, 02:32

Atmega32A - чем программировать?
Всем привет! Имею программатор USB ASP, Amego32A, AVR Studyo 4.19. При создании проекта Atmega с...

Atmega32a перестал отзываться
Собственно, суть в теме. Прошиваю самодельным программатором APU-2, тот, который на FT232. На ПК...

Atmega32A, где ошибка?
Есть вот такая схема, на Atmega8 порт В нормально работал, но здесь,на Atmego32A, почему-то не...


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

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

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