конешно не забыл, контроллер пашет, прост хотел с ИОНа напругу на контраст ЖК подать, т.к. питание плавает и контраст вместе с ним. кстати нагрузочная способность у ИОНа какая? ps мерил без нагрузки
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт июл 09, 2010 13:13:48
Потрогал лапой паяльник
Зарегистрирован: Сб сен 06, 2008 12:56:13 Сообщений: 326
Рейтинг сообщения:0
Dj_Alex писал(а):
пробовал так ADMUX=0b11000000; но все равно на выводе 0, кондер вешал, толку нет
Так вы хотели использовать внутренний ИОН 2,56 В, и это значение разрядов REFSx ADMUX для такого случая. При этом на выводах AVCC и AREF не должно быть внешних напряжений. А если хотите с вывода AVCC, то REFS1=0; REFS0=1; Да, есть еще один момент. По датшиту: "Работа АЦП разрешается путем установки бита ADEN (разрешение АЦП) в ADCSRA. Выбор опорного источника и канала преобразования невозможно выполнить до установки ADEN". Затем только выбор источника. Преобразование в АЦП можете не запускать, если оно не нужно, т. е. бит ADSC=0; Результатом разрешения АЦП, будет немного большее потребление тока МК.
При этом на выводах AVCC и AREF не должно быть внешних напряжений.
На AVCC всегда должно быть напряжение питания:
Даташит писал(а):
The ADC has a separate analog supply voltage pin, AVCC.
И раз уж обратились к ДШ, продолжаем. 2 Dj_Alex,
Даташит писал(а):
In either case, the external AREF pin is directly connected to the ADC, and the reference voltage can be made more immune to noise by connecting a capacitor between the AREF pin and ground. VREF can also be measured at the AREF pin with a high impedant voltmeter. Note that VREF is a high impedant source, and only a capacitive load should be connected in a system.
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт июл 09, 2010 18:22:11
Потрогал лапой паяльник
Зарегистрирован: Сб сен 06, 2008 12:56:13 Сообщений: 326
Рейтинг сообщения:0
AI_Disable писал(а):
ValBag писал(а):
При этом на выводах AVCC и AREF не должно быть внешних напряжений.
На AVCC всегда должно быть напряжение питания:
Согласен - в отношении AVCC дал "маху". Оно должно быть, если АЦП используется или, как в данном конкретном случае, питание служит только для получения напряжения опорного источника, которое Dj_Alex собирается использовать по другому назначению.
Согласен - в отношении AVCC дал "маху". Оно должно быть, если АЦП используется или, как в данном конкретном случае, питание служит только для получения напряжения опорного источника, которое Dj_Alex собирается использовать по другому назначению.
никакого ИЛИ - AVCC должно подаваться ВСЕГДА! во многих микроконтроллерах от этого вывода запитаны выходные буферы портов ввода-вывода, так что без него не будут работать даже цифровые линии.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт июл 09, 2010 21:05:21
Потрогал лапой паяльник
Зарегистрирован: Сб сен 06, 2008 12:56:13 Сообщений: 326
Рейтинг сообщения:0
ARV писал(а):
никакого ИЛИ - AVCC должно подаваться ВСЕГДА! во многих микроконтроллерах от этого вывода запитаны выходные буферы портов ввода-вывода, так что без него не будут работать даже цифровые линии.
Не все, - отдельные линии портов, питающиеся от AVCC и не использующиеся в конкретном случае. ...Встречается практика такого использования.
MCUCR=0x03; // прерывание по нарастающему фронту GIMSK=0x40; // разрешаем INT0
#asm("sei")
while (1) { //PORTB.1 = PINB.0; // повторяем на PB1 то, что на PB0 (он же INT0) } }
На вход INT0 подаю импульсы от внешнего генератора - меандр частотой 100 - 200 Гц. В обработчике прерывания на выходе PB2 формируется импульс, совпадающий с передним фронтом импульса на входе PB0 (он же INT0). Если в теле цикла while (1) нет ничего, т.е. строка PORTB.1 = PINB.0 закомментирована, то нифига не работает. Т.е. на выходе PB2 ничего нет - строгий 0. Первая мысль - надо пить поменьше валерьянки - простые вещи делать разучился. А потом решил в основном цикле повторить на PB1 то, что на входе PB0. И произошло чудо, прерывания заработали! Что это за нах? Кто-нибудь встречался с подобным?
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс июл 11, 2010 21:51:32
Потрогал лапой паяльник
Зарегистрирован: Сб сен 06, 2008 12:56:13 Сообщений: 326
Рейтинг сообщения:0
Барсик, вероятно ошибка в компиляторе. Он генерирует код, предполагая, что INT0 на PB0. У меня 2.04.4а, получается то же самое. Но, дело в том, что INT0 на PB1, а не на PB0. Если завести сигнал на "нужное" место - то все в порядке.
Как Вы меня напугали... Сказали бы сразу, что имели в виду "CodeVizardAVR". Я как раз в нём код и генерил. Лишнее выкинул. Остальное 10 раз перепроверил по даташиту...
...Но, дело в том, что INT0 на PB1, а не на PB0. Если завести сигнал на "нужное" место - то все в порядке.
Хуясе Я уже все седые волосы из собственной задницы выдрал! Я же по даташиту смотрел. Там английским по белому написано, что PCINT0 это нога номер 5, она же PB0 !!! Это же первое, что стал проверять! Правильно ли подаю сигнал. Из-за этого и родилась эта идиотская идея повторить на PB1 то, что подаётся на PB0. Всё... пойду приму 300 капель валерьянки. Надо стресс снять...
Так... После снятия стресса подал сигнал на ногу номер 6 (где PB1) И всё заработало. ValBag, я навеки Ваш должник. Вы спасли меня от дурдома. Я уже подумывал вызывать санитаров - думал, что сошёл с ума от жары...
Т.е. дело не в компиляторе, а в даташите!
Так... Оказалось, что я сам дурак. В даташите всё правильно. Около 6 ноги английским по белому написано: PB1 (MISO/AIN1/OC0B/INT0/PCINT2) Блин, ну какое коварство !!!
Последний раз редактировалось Барсик Вс июл 11, 2010 22:18:56, всего редактировалось 1 раз.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения