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

 
 
> Помогите с первой программой, Tiny2313
Chip115
сообщение Dec 30 2007, 12:05
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 28-12-07
Пользователь №: 33 709



Всем привет!!! Стал изучать програмирование МК на асемблере. Столкнулся с проблемой.
В симуляторе (AVR Studio 4) все работает как надо. но в контроллере работает не правильно.
Смысл в том чтобы при нажатии на кнопку 1 (PD0) (кнопка другой ногой висит на минусе) загорался на индикаторе 0, при отпускании- индикатор тух. При нажатии на кн 2 (PD1) на индикаторе загоралась бы 1-при отпускании кн 2 индикатор должен тухнуть.
При прошитой микре при ненажатых кнопках горит 0. При нажатии на кн1 (PD0) загорается 1. при отпускании-горит 0. На кн 2 (PD1) вообще нет реакции. Что сделать? Индикатор с общим катодом.
Вот исходник:

Код
.def   temp0 =r16
.def   temp1 =r17
.def   temp2 =r18

Init:
   ser temp0              ;Все выводы порта А  выход
   out DDRA,temp0
   ser temp0              ;Все выводы порта B  выход
   out DDRB,temp0
   ldi temp0,0b11111100     ;Вывод 0 и 1 порта D вход
   out DDRD,temp0

   ldi temp0,0b00000011     ;подтяжка порта D включена
   out PortD,temp0

Start:
   ldi temp1,0b11111100      ;0
   ldi temp2,0b01100000     ;1
   sbic PinD,0              ;Проверяем нажатие кнопки 1
   rjmp Loop_3
Loop_1:
   sbic PinD,1              ;Проверяем кнопку 2
   rjmp Loop_2
ALL_OFF:
   clr temp1              ;Гасим все светодиоды
   out PortB,temp1
   rjmp Start
Loop_2:
   out PortB,temp2           ;Зажигаем 1
   rjmp Start
Loop_3:
   out PortB,temp1           ;Зажигаем 0
   rjmp Start




почему в симуляторе (AVR Studio) работает как надо, а в реале как описано выше?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Chip115
сообщение Dec 30 2007, 13:22
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 28-12-07
Пользователь №: 33 709



Вот. Набросал по быстрому.


Заработала. Млин. А я голову ломал в чом дело. Вот еще не понятки. Зачем нужен подтягивающий резистор? Чтоб на PD был высокий уровень?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Aesthete Animus
сообщение Dec 30 2007, 21:34
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



Цитата(Chip115 @ Dec 30 2007, 16:22) *
Вот еще не понятки. Зачем нужен подтягивающий резистор? Чтоб на PD был высокий уровень?

Во-первых, когда порт включен на вход, он находится в z-состоянии. Если при этом ни к чему не подключен, то образует элементраную антену, на которую вы рискуете поймать помеху. Во-вторых, после размыкания контакта, изза внутреннего паразитного конденсатора, уровень напряжения будет падать сравнмительно медленно, что не есть хорошо. Поэтому порт нужно подтягивать большИм (50к...100к) сопротивлением к плюс питанию.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 2 2008, 22:28
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Aesthete Animus @ Dec 31 2007, 00:34) *
Во-первых, когда порт включен на вход, он находится в z-состоянии.
...
Поэтому порт нужно подтягивать большИм (50к...100к) сопротивлением к плюс питанию.

И это можно сделать не внося лишних элементов в схему, а просто включив внутренний pull-up резистор - записав в PORTxx "1".
Go to the top of the page
 
+Quote Post
DASM
сообщение Jan 3 2008, 06:12
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(defunct @ Jan 3 2008, 01:28) *
И это можно сделать не внося лишних элементов в схему, а просто включив внутренний pull-up резистор - записав в PORTxx "1".

Что автор и сделал в первом посте
"ldi temp0,0b00000011 ;подтяжка порта D включена
out PortD,temp0"
Впрочем для кнопок, удаленных хоть на полметра такая подтяжка уже слабовата
Go to the top of the page
 
+Quote Post
Chip115
сообщение Jan 3 2008, 11:17
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 28-12-07
Пользователь №: 33 709



Цитата(DASM @ Jan 3 2008, 12:12) *
Впрочем для кнопок, удаленных хоть на полметра такая подтяжка уже слабовата

А что надо для этого?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Chip115   Помогите с первой программой   Dec 30 2007, 12:05
- - DASM   Торможу спросянья, но по-моему Вам надо sbis а не ...   Dec 30 2007, 12:30
- - Chip115   А почему в таком виде в симуляторе работает, а на ...   Dec 30 2007, 12:50
- - DASM   ну я не знаю, как Вы там в симуляторе кнопки нажим...   Dec 30 2007, 12:51
- - Chip115   Если прописать sbis то кнопки на +5 В надо вешать?   Dec 30 2007, 12:54
|- - Yura_K   Цитата(Chip115 @ Dec 30 2007, 17:54) Если...   Dec 30 2007, 13:06
- - Yura_K   Может схемку набросаете?   Dec 30 2007, 12:55
- - DASM   У Вас - sbic PinD,0 ;Проверяем нажа...   Dec 30 2007, 12:57
- - Yura_K   Цитата(DASM @ Dec 30 2007, 17:57) У Вас -...   Dec 30 2007, 13:01
- - DASM   Вторая команда тоже sbis должна быть   Dec 30 2007, 13:01
|- - DASM   Цитата(Chip115 @ Jan 3 2008, 14:17) А что...   Jan 3 2008, 11:47
- - DASM   да. и резисторы омов 470 последовательно со светод...   Dec 30 2007, 14:46
- - __nik__   Рискну предложить оптрон.   Jan 3 2008, 11:37
- - Chip115   А как сделать временую задержку в тини 2313 програ...   Jan 6 2008, 03:53


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:37
Рейтинг@Mail.ru


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