|
ATtiny 2313 |
|
|
|
May 6 2010, 13:10
|
Участник

Группа: Участник
Сообщений: 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
Причина редактирования: Оформление цитаты исходника.
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
May 13 2010, 09:57
|
Участник

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

|
Хм, я начинаю понимать, то есть если я в мейкфайле пишу частоты, то они автоматически делятся на 8? Но возникает другой вопрос: пишу: 1) 1000000 - задержка 1сек 2) 2000000 - задержка 2сек 3) 4000000 - задержка 4сек 4) 8000000 - задержка 8сек
Если я частоту увеличиваю, то период уменьшается, и, следовательно, задержка должна наоборот уменьшаться, а она увеличивается. Вообщем, я запутался. Мне необходимо настроит ьвнутренний тактовый на 4МГц или 10МГц, и чтобы когда я пишу _delay_ms(1000), оно ждало именно 1сек.
|
|
|
|
|
May 13 2010, 10:10
|

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

|
Цитата(indi_88 @ May 13 2010, 12:57)  Хм, я начинаю понимать, то есть если я в мейкфайле пишу частоты, то они автоматически делятся на 8? Нет. Вы указываете компилятору частоту, а он рассчитывает - сколько циклов надо сделать задержку для этой частоты. Допустим, вы указали частоту 1000000 и компилятор посчитал, что надо сделать (допустим) 100 циклов для указанного вами времени задержки 7 мкс. Теперь вы указываете ему вдвое бОльшую частоту - 2000000. Естественно, чтобы получить то же время задержки 7 мкс при удвоенной скорости процессора, процессору надо сделать вдвое больше пустых циклов. А если вы реальную частоту в железе оставили ту же, то вдвое больше пустых циклов будут исполняться в 2 раза дольше, что вы и наблюдаете. Цитата(indi_88 @ May 13 2010, 12:57)  Мне необходимо настроит ьвнутренний тактовый на 4МГц или 10МГц, и чтобы когда я пишу _delay_ms(1000), оно ждало именно 1сек. Отключите CKDIV. Внимательно прочитайте, какое состояние фузов CKSEL включает внутренний RC-генератор на 4 МГц и есть ли вообще возможность включить его на 4 МГц. Если нету - включайте его на 8 МГц. Главное - в makefile надо указать именно ту частоту, которой тактируется ядро. Тогда и только тогда _delay_ms(1000) даст вам задержку ровно 1 сек (при отсутствии прерываний).
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
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 indi_88 А если использовать такой код:
Код for(unsign... May 12 2010, 21:29 Сергей Борщ Цитата(indi_88 @ May 13 2010, 00:29) А ес... May 13 2010, 06:50 -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 Через понипрог убрал галочку с 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|