0 / 0 / 0
Регистрация: 15.07.2016
Сообщений: 3
1

Не работает Tiny2313

15.07.2016, 15:54. Показов 841. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Схема в приложении.
Вот текст программы:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <tiny2313.h>
#include <delay.h>
 
void main(void)
{
CLKPR=0x80;
CLKPR=0x00;
 
PORTA=0x00;
DDRA=0x00;
 
PORTA=0x00;
DDRA=0x00;
 
PORTD=0xFF;
DDRD=0x00;
 
while (1)
 { 
  while(PIND==1) {}
  delay_ms(2000);
   if (PINB==1)
    {PORTB=0;} 
   else
    {PORTB=1;} 
  while(PIND==0) {}
  delay_ms(2000);
 }
}
Закидаваю ее в Proteus. Сначало переключается PB0 с 1 на 0, через 2 секунды, все остальные порты B. Потом следом каждый 4 секунды переключается только 0 порт B с 0 на 1, и с 1 на 0.
Не могу понять в чем проблема. Идет проверка портов D, они все с единицей, и включен Pull программа должна ждать, нажатия кнопки, чтобы 1 изменилась на 0. а он пропускает эту проверку и бесконечно крутит цикл while(1). Почему так объясните кто нибудь)
Миниатюры
Не работает Tiny2313  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2016, 15:54
Ответы с готовыми решениями:

делаю термометр на tiny2313 и lm335 не работает
файл проекта прикрепляю пока хотел чтоб что то показывал пусть даже в шестнадцатеричном виде чтоб...

tiny2313 и dW
Проблема у меня с тинькой 2313. Программатор AVR Dragon, работаю из студии 4...последнюю даже...

Возможности Tiny2313
Здравствуйте знатоки AVR! Насколько я понял из статьи и этой статьи, на одном корпусе можно...

Tiny2313 и TIMSK
Пишу ldi r17, 1 &lt;&lt; OCIE1A | 1 &lt;&lt; OCIE0A out TIMSK, r17 В r17 0x41 а в TIMSK 0x21 В чем...

9
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
15.07.2016, 16:35 2
у вас неправильно в коде настроены порты. Это как минимум. В логику программы еще не вдавался.
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
15.07.2016, 16:39 3
Цитата Сообщение от Renat1991 Посмотреть сообщение
PORTD=0xFF;
Цитата Сообщение от Renat1991 Посмотреть сообщение
hile(PIND==1) {}
а надо
C
1
while(PIND==126) {}
хочешь узнать больше, читай работу с портами
0
0 / 0 / 0
Регистрация: 15.07.2016
Сообщений: 3
15.07.2016, 17:27  [ТС] 4
C
1
2
3
4
5
6
7
8
PORTA=0x00;
DDRA=0x00;
 
PORTA=0x00;
DDRA=0x00;
 
PORTD=0xFF;
DDRD=0x00;
Ой точно. Это я поспешил просто. на самом деле в программа у меня

C
1
2
3
4
5
6
7
8
PORTA=0x00;
DDRA=0x00;
 
PORTB=0xFF;
DDRB=0xFF;
 
PORTD=0xFF;
DDRD=0x00;
 Комментарий модератора 
Выделяйте код и нажимайте тег "C"


Добавлено через 46 минут
Я уже много всего перерыл в инете, много не понимаю еще (так как новичок), а то что понимаю не отвечает на мои вопросы. прочитал книги Белова, по текстам его программ все идеально работает, тут без нареканий, но начинаю что либо менять, и получается хаотичный результат, на подобии этого. он "хитрец" такой не пытается подробно программу объяснять, а рассказывает чисто алгоритм. Эти хаотичные результаты совершенно не совпадают с моими выводами, по этому поводу, вот я и ищу ответы на форумах. Видимо я что то упускаю. По сути программа простейшая. как раз для таких как я. но последний ответ поставил меня в замешательство. что означает цифра 126. или может быть какую нибудь литературу посоветуете, где я смогу узнать это. потому что я в тупике.
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
15.07.2016, 17:41 5
Команды PIND, PORTD, DDR работают с портом D целиком, а не с отдельным пинами порта.
Порт D в данном МК имеет размер D0 - D6 то есть семь БИТ
Ваша команда
Цитата Сообщение от Renat1991 Посмотреть сообщение
PORTD=0xFF;
устанавливает в этом порту все резисторы подтяжки, другими словами на всех пинах порта D будет "1" и команда PIND вернет 1111111B или в десятичной системе 127
если нажать кнопку, то пин D0 станет 0 то есть 1111110B или в десятичной системе 126
1
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
15.07.2016, 18:56 6
Цитата Сообщение от Витальич Посмотреть сообщение
команда PIND вернет 1111111B или в десятичной системе 127
...в этом месте хорошо бы напомнить ТСу, что PORTD имеет только 7 пинов в tiny2313. Поэтому, результат в данном случае будет равен 127, то есть 7 выставленных бит вместо восьми, как для полного порта. Не выведенный пин по идее выдаст состояние "0" (об этом есть инфа в ДШ).
1
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
15.07.2016, 21:01 7
Цитата Сообщение от Voland_ Посмотреть сообщение
.в этом месте хорошо бы напомнить ТСу, что PORTD имеет только 7 пинов в tiny2313
Цитата Сообщение от Витальич Посмотреть сообщение
Порт D в данном МК имеет размер D0 - D6 то есть семь БИТ
Абсолютно верно, но я обратил на это внимания!
1
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
15.07.2016, 23:11 8
Цитата Сообщение от Витальич Посмотреть сообщение
я обратил на это внимания
а.. ну да, слона я и не приметил
0
0 / 0 / 0
Регистрация: 15.07.2016
Сообщений: 3
16.07.2016, 14:00  [ТС] 9
действительно)) Большое спасибо, теперь я понял) видимо мне еще читать и читать. может это конечно наглость с мой стороны, но подскажите пожалуйста в какой программе, я смогу увидеть пошаговое выполнение программы с текстом, результатом и значениями в регистрах. если такая конечно имеется.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
16.07.2016, 15:26 10
создай схему в протеусе, загрузи туда свою программу, и можешь пошагово проходить
наблюдая как меняются сигналы на ножках
0
16.07.2016, 15:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2016, 15:26
Помогаю со студенческими работами здесь

Tiny2313 + кнопка, проблемы
Только начал изучать и тут сразу затык( Есть Tiny2313, есть кнопка которая висит на порту A c...

АЦП из компаратора в tiny2313
Народ. Делаю поворотку с индикацией на светодиодах через регистры. В роли датчика -переменник с...

Проблема с термометром на TINY2313
Доброго времени суток! В процессе сборки данного термометра...

Таймеры счетчики tiny2313
Необходимо использовать таймер в программе. На выводе к которому он привязан обязательно ли будет...

Проблема с таймерами на tiny2313
Понадобилось мне собрать таймер обратного отсчёта для одной РИ, на 6 разрядов. За основу взял код...

Дохнут на раз tiny2313
Привет всем! Собрал тут свой первый программатор(Громова), и тутже вступил в гов грабли. Запускаю...

проблема(?) с чтением Fuses из tiny2313
У меня при нескольких чтениях Fuses могут выдаваться разные значения. Я пытаюсь разобраться с...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru