Страница 1 из 1

TiNy15L управление выводом PB5 на С?

Добавлено: Вт дек 15, 2009 13:42:29
FUZZY_
Fuses=0x00 (PB5 - open darain)
DDRB=0x20; // направление выход
PINB=1; // компилятор генерит asm : out 16 1 (все в HEX)
// где 0x16 - PINB5

При старте PINB5 всегда находится в нуле т.е. выв 1 - 0В
хотя должно бить 1

кода идет переконфигурация DDRB=0; то появляется 1 - 5 в


В чем проблема?

Re: TiNy15L управление выводом PB5 на С?

Добавлено: Вт дек 15, 2009 14:50:56
smac
FUZZY_ писал(а): В чем проблема?
Как уже говорилось - не стоит записывать значения в PINB. В данной модели микроконтроллера регистр PINB- только для чтения, он не может управлять выходами. Т.е. в вашем случае, чтобы установить 1 на PINB5 при DDRB-0xff нужно сделать следующее:

Код: Выделить всё

DDRB=0x20; // направление  выход
PORTB=1;  // 

Re: TiNy15L управление выводом PB5 на С?

Добавлено: Вт дек 15, 2009 14:55:59
AI_Disable
FUZZY_ писал(а): PINB=1;
Зачем писать в PINB?(и вообще можно ли?) Пишите в PORT.
Если на PB5 надо единицу, то:
DDRB|=(1<<5); // PB5 на выход
PORTB|=(1<<5); // пришем "1" в 5-й бит регистра
При этом другие порты остаются не тронутыми...

Добавлено: Вт дек 15, 2009 15:26:14
ARV
осмелюсь напомнить, что в тини15 отсутствует ОЗУ и программирование на Си весьма и весьма затруднено для этого микроконтроллера... чем-то напоминает запихивание зубной пасты обратно в тюбик

Добавлено: Вт дек 15, 2009 15:39:30
AI_Disable
Дак такие тини обычно для серьёзных задач и не используют... Мне тини13 очень нравится, такая низкая цена и такая богатая переферия! постоянно её юзаю там, где ног не надо много...

Добавлено: Вт дек 15, 2009 19:14:27
FUZZY_
Для тех кто не любит читать доку привожу картинку

Добавлено: Вт дек 15, 2009 19:21:53
AI_Disable
FUZZY_ писал(а):Для тех кто не любит читать доку привожу картинку
Для самого себя что ли? :))

Добавлено: Вт дек 15, 2009 19:50:45
FUZZY_
AI_Disable писал(а):
FUZZY_ писал(а):Для тех кто не любит читать доку привожу картинку
Для самого себя что ли? :))

При DDRB=0x20; PORTB=0xFF; на 1 ноге 0 !

Добавлено: Вт дек 15, 2009 19:54:00
FUZZY_
В чем проблема ? по идее должно быть 1 вывод подключен 5 в через резистор 4к7 откуда берется 0

Добавлено: Вт дек 15, 2009 20:10:33
AI_Disable
PB5 это RESET по дефолту. У вас же есть документ, дак в чём проблема?
Цитата из ДШ на тини15:
When the RSTDISBL Fuse is unprogrammed, this pin serves as External Reset. When
the RSTDISBL Fuse is programmed, this pin is a general input pin or a open-drain output
pin. If DDB5 is cleared (zero), PB5 is configured as an input pin. If DDB5 is set
(one), the pin is a open-drain output.
Запрограммируйте фьюз RSTDISBL и будет вам щастье. И нерабочий SPI.

Добавлено: Вт дек 15, 2009 23:25:50
FUZZY_
Если бы RSTDISBL был не запрограммирован то как на этом выводе
1 -> PB5 всегда держится 0 ?

Процессор должен был находиться в состоянии RESET т. е. на всех выводах пота В должна присутствовать логическая 1 программа не должна выполняться.

У меня работают прерывания ТС0 и watchdog
в цикле сбрасывается.

(Я с SPI не работаю и биты защиты снимаются легко ;) )

Добавлено: Ср дек 16, 2009 19:04:07
FUZZY_
Тема закрыта это баг TINY15L
При конфигурации PB5 как выход на нем всегде присутствует 0 - это баг топологии кристалла и всякие манипуляции преденные выше не работают!!! При записи в порт PORTB в 3 старших разрядах всегда присутствует 0 чтобы вы туда не писали.

При необходимости установить лог 1 на PB5 его конфигурируют как вход