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

 
 
 
Closed TopicStart new topic
> ATMega16L не могу установить пин в 0 или 1, Или я спалил сикросхему?
Savrik
сообщение Jan 22 2010, 21:11
Сообщение #1


наблюдаю..
***

Группа: Свой
Сообщений: 291
Регистрация: 11-12-06
Из: Украина
Пользователь №: 23 369



Какие-то непонятки, бьюсь уже вторые сутки... В общем, сразу после монтажа устройство не заработало.. методом тыка обнаружил, что порты ведут себя довольно странно. Например, инициализирую МК только как порты на выход, по умолчанию 0. После инициализации устанавливаю пин в 1, при этом, если смотреть по схеме, на самом пине 4,6 В(при 5.1 на входе), а после резистора(который висит в воздухе!) 0.6 Вольта.. Взял другой порт, та же ситуация.. Если включить SPI, то можно установить 1, но после сброса в 0 на выходе будет 4.6 В... При этом в одном порте стоит светодиод, и он исправно работает, а другой пин не работает.. Я грешил на компилятор cavr, перешел на avr-gcc, все так же.. Выход один - перепаивать?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 22 2010, 21:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Как-то сумбурно очень.

Цитата(Savrik @ Jan 23 2010, 00:11) *
...После инициализации устанавливаю пин в 1, при этом, если смотреть по схеме, на самом пине 4,6 В(при 5.1 на входе)

После таких "чудес" надо сразу разбираться с резисторами (проверить, не оборван ли он, или не подключен ли к земле с другой стороны) и средствами измерения.
Go to the top of the page
 
+Quote Post
Savrik
сообщение Jan 22 2010, 22:23
Сообщение #3


наблюдаю..
***

Группа: Свой
Сообщений: 291
Регистрация: 11-12-06
Из: Украина
Пользователь №: 23 369



Кажется, нашел, откуда ноги растут..
Когда я делаю так:
Код
void main(void)
{
while (1)
      {
      if (KEY_MINUS == 0)
        {
            PORTC.6 = 0;
            PORTC.7 = 0;  
           PORTB = 0x00;
        }
      if (KEY_ENTER == 0)
        {
            PORTC.6 = 1;
            PORTC.7 = 1;
            PORTB = 0xFF;
        }
      };  
}

то все отлично, везде нули, после нажатия кнопки ентер везде 1. Но! как только включаю SPI
Код
void main(void)
{
SPCR=0x50;
SPSR=0x00;

while (1)
      {
      if (KEY_MINUS == 0)
        {
            PORTC.6 = 0;
            PORTC.7 = 0;  
           PORTB = 0x00;
        }
      if (KEY_ENTER == 0)
        {
            PORTC.6 = 1;
            PORTC.7 = 1;
            PORTB = 0xFF;
        }
      };  
}

Сразу же на PORTC.6 и PORTB.5 по 4.5 В. На плате эти контакты рядом, хотя видимого контакта нету.. Нет осциллографа, что-то в той области нечисто....

Сообщение отредактировал Savrik - Jan 22 2010, 22:25
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Jan 22 2010, 22:34
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



C6 и В5 не закорочены? В5 при включенном SPI - выход, который "сигналом" PORTB.5 не контролируется. Попробуйте независимо поуправлять этими портами при отключенном SPI, если нет рядом осциллографа. Хотя тут и тестера достаточно.
Go to the top of the page
 
+Quote Post
Savrik
сообщение Jan 22 2010, 23:02
Сообщение #5


наблюдаю..
***

Группа: Свой
Сообщений: 291
Регистрация: 11-12-06
Из: Украина
Пользователь №: 23 369



Господа, прошу прощения за беспокойство и спасибо за помощь, вопрос закрыт) между дорожками обнаружено инородное телоsmile.gif
К модераторам - тему можно закрыть или удалить.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 17th June 2025 - 19:47
Рейтинг@Mail.ru


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