Прошу помощи)))
Разработал схему, собрал устройство, а не работает!
В общем подключаю 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"/>
Помогите с Attiny2313 и DS2408 разобраться!
-
kevinlexus
- Родился
- Сообщения: 10
- Зарегистрирован: Сб апр 25, 2015 09:48:54
Помогите с Attiny2313 и DS2408 разобраться!
- Вложения
-
- temp1.png
- (18.08 КБ) 344 скачивания
- Реклама
-
Alkul
- Держит паяльник хвостом
- Сообщения: 933
- Зарегистрирован: Ср апр 13, 2011 11:09:20
- Откуда: Екатеринбург
Re: Помогите с Attiny2313 и DS2408 разобраться!
Вы точно правильно понимаете, что такое микросхема DS2408?kevinlexus писал(а):В общем подключаю Attiny 2313 к 1-Wire DS2408,
хочу чтобы DS2408 читал биты на своём порту.
Как Вы определили, что микросхема "не видит"? У Вас вывод I/O микросхемы висит в воздухе.kevinlexus писал(а): Так вот, не фига она не видит изменения лог 0 и 1.
-
kevinlexus
- Родился
- Сообщения: 10
- Зарегистрирован: Сб апр 25, 2015 09:48:54
Re: Помогите с Attiny2313 и DS2408 разобраться!
Спасибо что ответили!Alkul писал(а):Вы точно правильно понимаете, что такое микросхема DS2408?kevinlexus писал(а):В общем подключаю Attiny 2313 к 1-Wire DS2408,
хочу чтобы DS2408 читал биты на своём порту.
Как Вы определили, что микросхема "не видит"? У Вас вывод I/O микросхемы висит в воздухе.kevinlexus писал(а): Так вот, не фига она не видит изменения лог 0 и 1.
Так вот, вывод I/O не висит в воздухе конечно, на нём Label 1W, в Eagle этот вывод соединён с другим, которого нет на этой части схемы.
Как определил что DS не видит? Читаю состояние её пинов с помощью библиотеки OWFS.
К слову сказать эта микросхема у меня отлично работает в других проектах. А вот соединить с микроконтроллером не удалось.
Re: Помогите с Attiny2313 и DS2408 разобраться!
Вообще-то Вы сконфигурировали на вход, а не на выход. В биты DDB запишутся нули. Поэтому в цикле Вы просто включаете и выключаете подтягивающие резисторы.kevinlexus писал(а): В контроллере, естественно включаю порт B на выход,
Pull-up конечно не выставляю, так как выход.
Делаю вот так:
//Сконфигурировать выход
DDRB &= ~((1 << DDB0) | (1 << DDB1) | (1 << DDB2));
DDRB &= ~((1 << DDB3) | (1 << DDB4) | (1 << DDB5));
DDRB &= ~((1 << DDB6) | (1 << DDB7));
На выход будет так: DDRB |= (1 << DDB0) - это для отдельных пинов (в соответствующий бит DDB запишется единица). Если нужно весь порт, то проще так: DDRB = 0xFF, не надо перечислять каждый пин в отдельности.
Оффтоп (позанудствую немного): Биты у вас перечислены "не по канону", нумерация идёт справа налево: 7 6 5 4 3 2 1 0, в Вашем случае это конечно ни на что не влияет, но как-то непривычно и глаз "зацепился"...
-
kevinlexus
- Родился
- Сообщения: 10
- Зарегистрирован: Сб апр 25, 2015 09:48:54
Re: Помогите с Attiny2313 и DS2408 разобраться!
ТОЧНО! я извиняюсь за ламерство, чёт глаз замылился, правильно, надо было писать в ddrb=1,Jeka_M писал(а): Вообще-то Вы сконфигурировали на вход, а не на выход. В биты DDB запишутся нули. Поэтому в цикле Вы просто включаете и выключаете подтягивающие резисторы.
На выход будет так: DDRB |= (1 << DDB0) - это для отдельных пинов (в соответствующий бит DDB запишется единица). Если нужно весь порт, то проще так: DDRB = 0xFF, не надо перечислять каждый пин в отдельности.
Оффтоп (позанудствую немного): Биты у вас перечислены "не по канону", нумерация идёт справа налево: 7 6 5 4 3 2 1 0, в Вашем случае это конечно ни на что не влияет, но как-то непривычно и глаз "зацепился"...
а я всякую чушь туда пишу (где то скопипастил, надо разобраться что это).
Спасибо большое!!!!
А "занудству" отдельное спасибо, так как есть большое желание писать грамотный код.
- Реклама
Re: Помогите с Attiny2313 и DS2408 разобраться!
Ну почему же чушь, такая запись правильная и используется для конфигурирования пинов на вход.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


