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

 
 
> ATtiny 2313
indi_88
сообщение May 6 2010, 13:10
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 6-05-10
Пользователь №: 57 112



Добрый день, возникли трудности с работой с МК. Это мой первый практический опыт в паянии и работе с МК.
Есть схема ультразвукового дальномера, пока собрал кусок: питание, кнопки управление, МК и 7сегм индикатор.

Столкнулся с проблемой, когда начал писать простенькую прошивку. Цель прошивки: просто отображать какие-то крякозяблы поочереди на 3х знакоместах (использую динамику). Пишу и шьюсь через винавр:

Код
#include <avr/io.h>
void delay_7s()
{
    unsigned int k, l;
    for(l=0; l<1; l++)
    {
        for(k=0;k<65000;k++){}
    }
}    
void main()
{
    DDRB = 0xFF;
    DDRD = 0xFF;
    for(;;)
    {
        PORTB = 0b00110011;
        PORTD = 0x40;
        delay_7s();
        PORTD = 0x0;
        //
        PORTB = 0b01010101;
        PORTD = 0x20;
        delay_7s();
        PORTD = 0x0;
        //
        PORTB = 0b11001100;
        PORTD = 0x10;
        delay_7s();
        PORTD = 0x0;
    }
}

Не могу понять почему, но информация отображается сразу на всех знакоместах. Проверял прошивку в Протеусе, там все работает. Следовательно, проблема со спаянной схемой.
Меня настараживает что моя тинька, когда на выводах лог 0, выдает 1,2-1,3 В !!!. Следовательно, напряжение после ограничивающих резюков перед транзисторами, колеблется от 0,74 В (когда на выводе PD6 (PD5 или PD4) лог 0) и до 0,82 В (когда лог 1). Думаю, что проблема в этом. То есть напряжения 0,74 и 0,82 способствуют постоянному открытию транзисторов.

Опыта мало, так что надеюсь на ваше помощь!

Сообщение отредактировал rezident - May 8 2010, 23:57
Причина редактирования: Оформление цитаты исходника.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
indi_88
сообщение May 12 2010, 21:29
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 6-05-10
Пользователь №: 57 112



А если использовать такой код:

Код
    for(unsigned char i = 25; i > 0; i--)
    {
        PORTD |= 0b00000001;
        //WAITING();
        _delay_us(12.5);
        PORTD &= 0b11111110;
        _delay_us(12.5);
        //WAITING();
    }


читаю док на функцию:
Код
void _delay_ms      (double        __ms)


В симмуляторе аврстудио не хочет делать паузу в 12,5 мкс, вместо этого получаю 12 мкс.

ЗЫ Еще возник вопрос по функции дилей:
Пытался по очереди выводить что-то на знакоместа, код:
Код
    PORTB = 0x01;
    PORTD = 0x10;
    _delay_ms(1000);    
    PORTD = 0x00;
        
    PORTB = 0x02;
    PORTD = 0x20;
    _delay_ms(1000);
    PORTD = 0x00;
        
    PORTB = 0x03;
    PORTD = 0x40;
    _delay_ms(1000);
    PORTD = 0x00;


Смотрю док:
Код
The maximal possible delay is 262.14 ms / F_CPU in MHz.

When the user request delay which exceed the maximum possible one, _delay_ms() provides a decreased resolution functionality. In this mode _delay_ms() will work with a resolution of 1/10 ms, providing delays up to 6.5535 seconds (independent from CPU frequency). The user will not be informed about decreased resolution.

Я так понял, 1 секунду оно мне все-таки выдаст...
Идем дальше... В мейкфайле ставлю частоту 4000000, задержка составляет 4 сек, а не 1 сек.
Ставлю 1000000 и, о чудо, задержка равна 1 сек. Кто может объяснить почему? Да-да, я думал, что понял в чем суть, но ошибался.

ЗЫ Забыл добавить, оптимизация -Os

Сообщение отредактировал indi_88 - May 12 2010, 21:51
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 13 2010, 06:50
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(indi_88 @ May 13 2010, 00:29) *
А если использовать такой код:
То вы не сможете в это время выводить что-то на индикатор. А если выводить на индикатор в прерываниях (что, в общем-то, грамотоно), то прерывания будут вносить искажения в ваши задержки. Изучите таймер - он может формировать такие импульсы железно на выводах OCx
Цитата(indi_88 @ May 13 2010, 00:29) *
Идем дальше... В мейкфайле ставлю частоту 4000000, задержка составляет 4 сек, а не 1 сек.
Ставлю 1000000 и, о чудо, задержка равна 1 сек. Кто может объяснить почему?
Потому что процессор с завода поставляется с фузами, прошитыми на тактирование от внутреннего RC генератора 8МГц и включенным делителем (CVDIV) на 8. Отсюда получается 1 МГц тактовой частоты.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- indi_88   ATtiny 2313   May 6 2010, 13:10
- - GDI   Все ноги питания и земли подключили? У биполярных ...   May 6 2010, 13:22
- - indi_88   Исправил ситуацию с принтскрином. Проблем с земле...   May 6 2010, 13:30
- - akl   Может поможет временное подключение лапы RESET к +...   May 6 2010, 13:37
- - AHTOXA   Цитата(indi_88 @ May 6 2010, 19:10) инфор...   May 6 2010, 13:45
- - Сергей Борщ   Используйте кнопку для оформления исходников. Ина...   May 6 2010, 14:06
- - indi_88   Я б изменил код в теме, но пропала кнопочка едит( ...   May 6 2010, 14:46
- - AHTOXA   Цитата(Сергей Борщ @ May 6 2010, 20:06) О...   May 6 2010, 15:00
- - indi_88   ЦитатаВы очень своеобразно трактуете понятие ...   May 6 2010, 15:08
|- - AHTOXA   Цитата(indi_88 @ May 6 2010, 21:08) Я пра...   May 6 2010, 15:41
- - Сергей Борщ   Цитата(indi_88 @ May 6 2010, 17:46) Что в...   May 6 2010, 16:24
- - indi_88   ЦитатаЗначит вы неясно выражаете свои мысли Прошу ...   May 6 2010, 17:58
|- - Сергей Борщ   Цоколевка похожа на правду, транзистор npn.Цитата(...   May 6 2010, 21:04
- - indi_88   Купил новый мк и транзисторы, попытаюсь сделать но...   May 7 2010, 14:50
- - -SANYCH-   Попробуйте вообще убрать транзисторы и индикатор с...   May 11 2010, 08:15
- - indi_88   Собрал кусок схемы на новом мк и транзисторах, с н...   May 12 2010, 12:42
- - -SANYCH-   Такие вещи лучше делать таймером. Если хотите узн...   May 12 2010, 13:14
- - -SANYCH-   ЦитатаВ симмуляторе аврстудио не хочет делать пауз...   May 13 2010, 07:58
- - indi_88   ЦитатаПотому что процессор с завода поставляется с...   May 13 2010, 09:23
|- - Сергей Борщ   Цитата(indi_88 @ May 13 2010, 12:23) но я...   May 13 2010, 09:44
- - indi_88   Хм, я начинаю понимать, то есть если я в мейкфайле...   May 13 2010, 09:57
|- - Сергей Борщ   Цитата(indi_88 @ May 13 2010, 12:57) Хм, ...   May 13 2010, 10:10
- - indi_88   Через понипрог убрал галочку с CKDIV и все заработ...   May 13 2010, 10:28
|- - Сергей Борщ   Цитата(indi_88 @ May 13 2010, 13:28) Чере...   May 13 2010, 10:53
- - indi_88   Спасибо, но я шью через винавр и использую com-про...   May 13 2010, 11:02


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

 


RSS Текстовая версия Сейчас: 4th August 2025 - 23:29
Рейтинг@Mail.ru


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