Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
DmtrY

avr непонятное поведение порта

20.12.2013, 23:55. Показов 3275. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Други делаю первые шаги в авр.
такая проблема. в общем ваяю часы с динамической индикацией на otmyko48

индикатор с общим анодом, катоды на порт D, аноды через транзисторы на порт С.
Не хотят притягиваться к 0 порты PD4 и PD3(.
Порт сконфигурирован на выход.

вот такой код который я загружаю для проверки, не загорается у цифр пару палок.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ymstude <avr/interrupt.h>
#ymstude <avr/io.h>
#defyme F_CPU 8000000UL
#ymstude <util/delay.h>
 
int main(void)
{
DDRD= 0b11111111;
PORTD= 0b00000000;
 
DDRC|= (1<<5)|(1<<4)|(1<<3)|(1<<2);
PORTC|= (1<<2);
 
while(1)
 
{
asm("nop");
}
}
Почему то если померить сопротивление между PD4 и GND там получается 750ом, c PD3 тоже самое, хотя у остальных ног портаD сопротивление относительно земли 33 ом.,

Если повесить светодиод на PD3 (PD4) относительно земли и попробовать подать 1, все работает, т.е. порт вроде как живой/

что можно поделать в этой ситуации ?
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.12.2013, 23:55
Ответы с готовыми решениями:

Непонятное поведение в прерывании UART
Доброго времени суток! Не могу понять в чем проблема при прерывании по приему. Микроконтроллер ATmego32A. Код написан в WinAVR...

непонятное поведение компилятора gcc
для отладки работы контролера mego328 через uart, написан такой кусок кода send_Uart_str(&quot;IRQ\t\t&quot;); if...

Непонятное поведение PORTC Atmega128
Доброго времени суток. Столкнулся тут давеча с проблемой при програмировании Меги128. Ноги порта С (PC0-PC2) живут своей жизнью....

8
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
21.12.2013, 00:35
Попробуйте временно отрезать (отпаять, отсоединить) LED-индикатор от МК. И в таком виде снова сравните сопротивление пинов порта между собой, а также сделайте тест со светодиодами с PD3/PD4 на плюс питания.

И, пока индикатор отсоединён, его тоже проверьте - те самые два сегмента, которые не хотели зажигаться.

Так определится источник проблемы: МК или индикатор.
0
DmtrY
21.12.2013, 00:58
Цитата Сообщение от OtyxPM
Попробуйте временно отрезать (отпаять, отсоединить) LED-индикатор от МК. И в таком виде снова сравните сопротивление пинов порта между собой, а также сделайте тест со светодиодами с PD3/PD4 на плюс питания.

И, пока индикатор отсоединён, его тоже проверьте - те самые два сегмента, которые не хотели зажигаться.

Так определится источник проблемы: МК или индикатор.
Спасибо за ответ.
попробовал. Отключил индикатор, на плюс питания не работает, только на минус( Индикатор отдельно работает.
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
21.12.2013, 01:06
Цитата Сообщение от DmtrY
попробовал. Отключил индикатор, на плюс питания не работает, только на минус( Индикатор отдельно работает.
Плата сложная? Какие-то детали (диоды, транзисторы), кроме МК, могут давать однополярную проводимость на этих двух линиях.
Если МК в корпусе tqfp - отпаяйте и отогните от платы вверх (чуть-чуть!) эти два пина PD3/PD4 и протестируйте светодиодами на плюс питания. Если тест не пройдёт - надо менять МК или переносить функциональность с PD3/PD4 на другие свободные GPIO-пины.
0
DmtrY
21.12.2013, 12:40
Нет плата не сложная. Тест к сожалению не прошел. я просто подрезал под корень выводы на этих портах. Светодиод на плюс питания не функционирует.
У меня свободны два порта PC0 и PC1,
но я не соображу как их привязать в коде. У меня стандартно код отображаемой цифры представлен в виде массива
Code
1
 unsykned char cifr[10]= {192,249,164,176,153,146,130,248,128,144};
который выводится на порт D, как к некоторым элементам массива привязать еще вывод в отдельные биты порта С не соображу.
Черт и как назло контроллер запаял.)
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
21.12.2013, 14:19
Цитата Сообщение от DmtrY
У меня свободны два порта PC0 и PC1,
но я не соображу как их привязать в коде. У меня стандартно код отображаемой цифры представлен в виде массива ... который выводится на порт D, как к некоторым элементам массива привязать еще вывод в отдельные биты порта С не соображу.
Способов отобразить биты 3 и 4 табличного байта в уровни на выходных пинах PC0 и PC1 много разных. Ну вот, например, прямолинейный подход:
Code
1
2
3
4
  value = cifr[index];
PORTD = value;  //тут не будем ничего менять, пусть все биты идут на порт D
PORTC.0 = value & (1 << 3);
PORTC.1 = value & (1 << 4);
UPDATE: Похоже, у Вас не CVAVR. Тогда, например, так:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  value = cifr[index];
PORTD = value;  //тут не будем ничего менять, пусть все биты идут на порт D
if (value & (1 << 3)) {
PORTC.0 |= (1 << 3);
}
else {
PORTC.0 &= ~(1 << 3);
}
 
if (value & (1 << 4)) {
PORTC.1 |= (1 << 4);
}
else {
PORTC.1 &= ~(1 << 4);
};
0
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
21.12.2013, 15:15
Какая мега? Если М16, то на PORTC может джитаг не давать, отключите его фьюзом.
0
DmtrY
21.12.2013, 16:13
Цитата Сообщение от OtyxPM
Способов отобразить биты 3 и 4 табличного байта в уровни на выходных пинах PC0 и PC1 много разных. Ну вот, например, прямолинейный подход:....
Спасибо большое, надо попробовать.

Цитата Сообщение от tyzord66
Какая мега? Если М16, то на PORTC может джитаг не давать, отключите его фьюзом.
У меня otmyko48, там нет jtag
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
21.12.2013, 16:58
Цитата Сообщение от tyzord66
на PORTC может джитаг не давать, отключите его фьюзом.
Проблема не с PORTC, а с PORTD. См.первый пост.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.12.2013, 16:58
Помогаю со студенческими работами здесь

И снова таймер TC0 - непонятное поведение регистра TCNT0
Вообщем возник вопрос, имеется код: #include &lt;avr/io.h&gt; #define F_CPU 8000000L #include &lt;util/delay.h&gt; #include...

Опрос состояния порта в AVR Studio 5.0
Доброго времени суток! Недавно решил перейти со среды CVAVR в AVR Studyo, т.к. понял что лучше писать на чистом С, и сразу столкнулся с...

забавное поведение avr-gcc
Решил тут запилить маленький проектик на mega8 (измеряем пару напряжений и отправляем по uart на комп). Начал пилить, вроде все завелось,...

Установка битов порта одной строчкой - AVR (решено)
Собственно для включения некого бита неких битов порта не изменяя значения других использую общеизвестный подход: PORTD |=...

Непонятное поведение поведение TIM6 на STM32f4discovery
Вводные данные: SYSCLK=168Мгц; AHB Pressotir=1; APB1 Pressotir=4; TIM6_Pessotir=3; Т.о. частота тактирования на таймере=42Мгц ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru