Помогите с Attiny2313 и DS2408 разобраться!

Обсуждаем контроллеры компании Atmel.
Ответить
kevinlexus
Родился
Сообщения: 10
Зарегистрирован: Сб апр 25, 2015 09:48:54

Помогите с Attiny2313 и DS2408 разобраться!

Сообщение kevinlexus »

Прошу помощи)))

Разработал схему, собрал устройство, а не работает!
В общем подключаю Attiny 2313 к 1-Wire DS2408,
хочу чтобы DS2408 читал биты на своём порту.

В контроллере, естественно включаю порт B на выход,
Pull-up конечно не выставляю, так как выход.
Делаю вот так:
//Сконфигурировать выход
DDRB &= ~((1 << DDB0) | (1 << DDB1) | (1 << DDB2));
DDRB &= ~((1 << DDB3) | (1 << DDB4) | (1 << DDB5));
DDRB &= ~((1 << DDB6) | (1 << DDB7));

//бесконечный цикл))
while(1) {
PORTB = 0b00000000;
_delay_ms(250);
PORTB = 0b11111111;
_delay_ms(250);

}



В DS2408 я так понимаю открытый коллектор(open drain), судя по документации.
Так вот, не фига она не видит изменения лог 0 и 1.
НО когда прицепляешь к пинам мультимер, то DS-ка сразу начинает видеть переключение
контроллером битов,..

Никак не могу понять, почему схема сама по себе не работает?


Схему приаттачил.

<img src="http://savepic.ru/6915448.png" border="0"/>
Вложения
temp1.png
(18.08 КБ) 344 скачивания
Реклама
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Re: Помогите с Attiny2313 и DS2408 разобраться!

Сообщение Alkul »

kevinlexus писал(а):В общем подключаю Attiny 2313 к 1-Wire DS2408,
хочу чтобы DS2408 читал биты на своём порту.
Вы точно правильно понимаете, что такое микросхема DS2408?
kevinlexus писал(а): Так вот, не фига она не видит изменения лог 0 и 1.
Как Вы определили, что микросхема "не видит"? У Вас вывод I/O микросхемы висит в воздухе.
Реклама
kevinlexus
Родился
Сообщения: 10
Зарегистрирован: Сб апр 25, 2015 09:48:54

Re: Помогите с Attiny2313 и DS2408 разобраться!

Сообщение kevinlexus »

Alkul писал(а):
kevinlexus писал(а):В общем подключаю Attiny 2313 к 1-Wire DS2408,
хочу чтобы DS2408 читал биты на своём порту.
Вы точно правильно понимаете, что такое микросхема DS2408?
kevinlexus писал(а): Так вот, не фига она не видит изменения лог 0 и 1.
Как Вы определили, что микросхема "не видит"? У Вас вывод I/O микросхемы висит в воздухе.
Спасибо что ответили!

Так вот, вывод I/O не висит в воздухе конечно, на нём Label 1W, в Eagle этот вывод соединён с другим, которого нет на этой части схемы.
Как определил что DS не видит? Читаю состояние её пинов с помощью библиотеки OWFS.
К слову сказать эта микросхема у меня отлично работает в других проектах. А вот соединить с микроконтроллером не удалось.
Аватара пользователя
Jeka_M
Встал на лапы
Сообщения: 101
Зарегистрирован: Пт окт 03, 2014 14:50:06

Re: Помогите с Attiny2313 и DS2408 разобраться!

Сообщение Jeka_M »

kevinlexus писал(а): В контроллере, естественно включаю порт B на выход,
Pull-up конечно не выставляю, так как выход.
Делаю вот так:
//Сконфигурировать выход
DDRB &= ~((1 << DDB0) | (1 << DDB1) | (1 << DDB2));
DDRB &= ~((1 << DDB3) | (1 << DDB4) | (1 << DDB5));
DDRB &= ~((1 << DDB6) | (1 << DDB7));
Вообще-то Вы сконфигурировали на вход, а не на выход. В биты DDB запишутся нули. Поэтому в цикле Вы просто включаете и выключаете подтягивающие резисторы.
На выход будет так: DDRB |= (1 << DDB0) - это для отдельных пинов (в соответствующий бит DDB запишется единица). Если нужно весь порт, то проще так: DDRB = 0xFF, не надо перечислять каждый пин в отдельности.

Оффтоп (позанудствую немного): Биты у вас перечислены "не по канону", нумерация идёт справа налево: 7 6 5 4 3 2 1 0, в Вашем случае это конечно ни на что не влияет, но как-то непривычно и глаз "зацепился"...
Реклама
Эиком - электронные компоненты и радиодетали
kevinlexus
Родился
Сообщения: 10
Зарегистрирован: Сб апр 25, 2015 09:48:54

Re: Помогите с Attiny2313 и DS2408 разобраться!

Сообщение kevinlexus »

Jeka_M писал(а): Вообще-то Вы сконфигурировали на вход, а не на выход. В биты DDB запишутся нули. Поэтому в цикле Вы просто включаете и выключаете подтягивающие резисторы.
На выход будет так: DDRB |= (1 << DDB0) - это для отдельных пинов (в соответствующий бит DDB запишется единица). Если нужно весь порт, то проще так: DDRB = 0xFF, не надо перечислять каждый пин в отдельности.

Оффтоп (позанудствую немного): Биты у вас перечислены "не по канону", нумерация идёт справа налево: 7 6 5 4 3 2 1 0, в Вашем случае это конечно ни на что не влияет, но как-то непривычно и глаз "зацепился"...
ТОЧНО! я извиняюсь за ламерство, чёт глаз замылился, правильно, надо было писать в ddrb=1,
а я всякую чушь туда пишу (где то скопипастил, надо разобраться что это).
Спасибо большое!!!!

А "занудству" отдельное спасибо, так как есть большое желание писать грамотный код.
Реклама
Аватара пользователя
Jeka_M
Встал на лапы
Сообщения: 101
Зарегистрирован: Пт окт 03, 2014 14:50:06

Re: Помогите с Attiny2313 и DS2408 разобраться!

Сообщение Jeka_M »

kevinlexus писал(а): а я всякую чушь туда пишу (где то скопипастил, надо разобраться что это)
Ну почему же чушь, такая запись правильная и используется для конфигурирования пинов на вход.
DDRB &= ~(1<<DDB0); в бит DDB0 записываем 0 (устанавливаем пин PB0 на вход)
DDRB |= (1<<DDB0); в бит DDB0 записываем 1 (устанавливаем пин PB0 на выход)

А разобраться в этом желательно, потом ещё пригодится. Гуглите битовые операции и битовый сдвиг.
Вот ещё несколько полезных ссылок:
http://easyelectronics.ru/avr-uchebnyj- ... ast-4.html
https://www.youtube.com/watch?v=IUBQqY5 ... -pUa9x6O8Y
https://www.youtube.com/watch?v=hKdNUO7 ... -pUa9x6O8Y
https://www.youtube.com/watch?v=IUWTWqsi1rc
Реклама
Ответить

Вернуться в «AVR»