Перейти к содержанию

Маленький Вопрос Про Тини2313...


gc986

Рекомендуемые сообщения

Здравствуйте! :)

У меня маленький и наверно глупый вопрос.

Запрограммировал микроконтроллер AtTiny2313, и теперь он должен выполнять простую программу - в зависимости от подключенной земли (на порт ввода), должен загораться соответствующий светодиод. Но тут небольшая проблемка. Если подключаю пятый порт ввода к земле, то загорается нулевой светодиод (порт вывода нулевой), а если подключаю четвёртый (PD4) или третий(PD3), то выполняется код который включает первый (PB1) и второй (PB2) светодиоды. Но если подключить второй порт к земле (PD2), то включается правильный третий(PB3) светодиод (как и должно быть).

У меня из этого вопрос - порты ввода PD4 и PD3 равнозначны??? или я чтото не то делаю... (на двух микроконтроллерах пробовал и всё один результат).

Пользуюсь системой генерации кода CodeVisionAVR.

Полный текст программы (без шапки):

#include <tiny2313.h>

#include <delay.h>

// Declare your global variables here

void main(void)

{

// Declare your local variables here

// Crystal Oscillator division factor: 1

#pragma optsize-

CLKPR=0x80;

CLKPR=0x00;

#ifdef _OPTIMIZE_SIZE_

#pragma optsize+

#endif

// Input/Output Ports initialization

// Port A initialization

// Func2=In Func1=In Func0=In

// State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1

PORTB=0xFF;

DDRB=0xFF;

// Port D initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State6=P State5=P State4=P State3=P State2=P State1=P State0=P

PORTD=0x7F;

DDRD=0x00;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0A output: Disconnected

// OC0B output: Disconnected

TCCR0A=0x00;

TCCR0B=0x00;

TCNT0=0x00;

OCR0A=0x00;

OCR0B=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// Interrupt on any change on pins PCINT0-7: Off

GIMSK=0x00;

MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

// Universal Serial Interface initialization

// Mode: Disabled

// Clock source: Register & Counter=no clk.

// USI Counter Overflow Interrupt: Off

USICR=0x00;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

while (1)

{

// Place your code here

//1

if (PIND.5==1)

{PORTB.0=1;}

else

{

PORTB.0=1;

delay_ms(200);

PORTB.0=0;

delay_ms(200);

};

//2

if (PIND.4==1)

{PORTB.1=1;}

else

{

PORTB.1=1;

delay_ms(200);

PORTB.1=0;

delay_ms(200);

};

//3

if (PIND.3==1)

{PORTB.2=1;}

else

{

PORTB.2=1;

delay_ms(200);

PORTB.2=0;

delay_ms(200);

}

//4

if (PIND.2==1)

{PORTB.3=1;}

else

{

PORTB.3=1;

delay_ms(200);

PORTB.3=0;

delay_ms(200);

}

};

}

Изменено пользователем gc986
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

ответ бы упростил исходник (код)

Это сообщение поставляется "как есть", без каких либо гарантий. Автор сообщения не несёт какой либо ответственности

за материальный, либо моральный ущерб причиненный данным сообщением напрямую или косвенно.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выводы подтянуты через резисторы к +Пит ? В режиме входа выводжы обладают огромным входным сопротивлением, даже паразитная утечка тока - и напряжение будет действовать на соседние выводы.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

На каждом выводе стоит по резистор на 270 ом. Может резисторы побольше нужно поставить??

P.S.

Когда подключаю пятый порт ввода (PD5) к земле, то мигают тихо все светодиоды, но нулевой мигает сильнее всех (а должен мигать только он один - PB0). Аналогичная ситуация при подключении земли к любому запрограммированному порту ввода. В качестве питания использую батарею из трёх батареек типа - АА.

Ссылка на комментарий
Поделиться на другие сайты

270 Ом это не проблема, если ток через "контакты" остается допустимым.

Проверь для начала программу в симуляторе(протеус, или отдельный отладчик), если там таких проблем нет - значит проблема аппаратная, попробуй контролировать напряжение питания при коммутациях. Потом, убедись прибором что те резисторы именно 270Ом, а не 2.7МОм...

И еще есть одна возможная причина почему светодиоды горят слегка - напряжение на них подается не всегда но с большой частотой. Если нет осциллографа, помочь может обыкновенный 4-х разрядный счетчик на 155ИЕ5.

Было бы еще интересно посмотреть зафиксированное состояние порта D в начале каждого цикла.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Монтаж нормальный (тоже сначала на него стал грешить :)

Видимо всётаки придётся протеус начать изучать для проверки прошивки...

А кто нибудь знает кружки или общества (для любителей) где занимаются микроконтроллерами в Екатеринбурге??? хочется в живую пообщаться!

Ссылка на комментарий
Поделиться на другие сайты

Для начала можно просто в отладчике, авось просто программа неправильно работает. С протеусом тоже не столь удобно, после каждого обновления прошивки, нужно заново цеплять HEX-файл, обновить типа. Он автоматом не подхватывает новую версию...

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

попробуйте поставить ; там, где я добавил

//3

if (PIND.3==1)

{PORTB.2=1;}

else

{

PORTB.2=1;

delay_ms(200);

PORTB.2=0;

delay_ms(200);

} ;

//4

if (PIND.2==1)

{PORTB.3=1;}

else

{

PORTB.3=1;

delay_ms(200);

PORTB.3=0;

delay_ms(200);

} ;

не всё золото, что на контактах...

Ссылка на комментарий
Поделиться на другие сайты

Компилятор не может быть виноват, может ты просто неправильно с ним общаешься.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

... С протеусом тоже не столь удобно, после каждого обновления прошивки, нужно заново цеплять HEX-файл, обновить типа. Он автоматом не подхватывает новую версию...

Вот это новость.. :o Откуда дровишки?..

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Ссылка на комментарий
Поделиться на другие сайты

практика-с, это если использовать только HEX-файл, без исходников и компиляции средствами протеуса перед запуском. Почему-то, после изменения файла протеус всеравно использует ту версию что последний раз загружалась. Если убрать файл и привязать его снова - только тогда новая версия начинает работать.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Вот оказывается как. А я по наивности не перелинковывал... И все изменялось и работало. От того что не знал, наверное... :ph34r:

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Ссылка на комментарий
Поделиться на другие сайты

практика-с, это если использовать только HEX-файл, без исходников и компиляции средствами протеуса перед запуском. Почему-то, после изменения файла протеус всеравно использует ту версию что последний раз загружалась. Если убрать файл и привязать его снова - только тогда новая версия начинает работать.

Сохранять проект не пробовали! К тому же при перекомпиляции обычно HEX файл перезаписывается, так откуда же браться старому. Протеус конечно не панацея, но на нем можно даже отлаживать программу.

Ссылка на комментарий
Поделиться на другие сайты

Когда подключаю пятый порт ввода (PD5) к земле, то мигают тихо все светодиоды, но нулевой мигает сильнее всех (а должен мигать только он один - PB0).

Гасящий резистор один на все светодиоды? Если нет, проверьте питание.

Изменено пользователем loox
Ссылка на комментарий
Поделиться на другие сайты

Сохранять проект не пробовали! К тому же при перекомпиляции обычно HEX файл перезаписывается, так откуда же браться старому.

Файл-то перезаписывается, но протеус не утрудает себя проверкой изменился ли файл если перекомпиляцияя происходила извне - в MPlab например.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

...но протеус не утрудает себя проверкой изменился ли файл если перекомпиляцияя происходила извне..

Непонятно, зачем говорить то, что не соответствует действительности. У протеуса, конечно, глюки есть, но такого точно нет...

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Ссылка на комментарий
Поделиться на другие сайты

Он автоматом не подхватывает новую версию...

Поддержу: то ли у меня Протеус неправильный то ли у вас. Всегда перекомпилирую (AVR Studio если важно) хексину и запускаю в протеусе. И все он нормально обрабатывает. О такой ошибке слышу впервые.

А можно схему всего подключения Тиньки?

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...