Страница 68 из 628

Добавлено: Чт окт 08, 2009 11:53:52
Vergilium
Спрошу еще вот что. Таймер в AVR настроен на 1800Hz, таймер 8-бит, то прерывание по переполнению произойдет когда будет достигнуто 255 в счетном регистре, следовательно 1800 / 256 = 7,031... Это значит будет 7 прерываний в секунду, я прав? А как сделать чтоб в секунду происходило одно прерывание (нужно для таймера). Хотелось бы посмотреть как это делается на С, а то все на "асм".

Добавлено: Чт окт 08, 2009 13:56:38
GP1
насчет 7 раз в сек так и будет, ну примерно.
раз в сек, можно организовать по-разному.
использовать Т1 в асинхронном режиме с кварцем 32768Гц, на Т0,Т2 считать кол-во переполнений, подобрав удобный коэф.пересчета/деления, и в нужный момент что-то делать

Добавлено: Пт окт 09, 2009 18:15:30
dymon
Мне нужно подрубить MMC/SD карту к контроллеру. Контроллер питается от 5В, а карта памяти от 3,3В. Т.к. из меня электрик плохой, подскажите плиз как с 5 до 3,3 сбавить напряжение и подать на MMC/SD. Схемку подпросте если можете.

Добавлено: Пт окт 09, 2009 18:39:40
Yellow Tiger
Питание на карту подать через любой стабилизатор на 3.3В, для простоты м. взять интегральный маломощный; а согласование уровней - либо через резисторы (самый простой в реализации, но самый "непарламентский" способ; Ом, этак, трехсот достаточно, если я правильно помню), в некоторых случаях к резисторам добавляют стабилитроны на 3.3В; либо выбрать что-то подходящее отсюда.

Но я предпочитаю питать м/к от 3.3 - это и проще, и надежнее, и дешевле одновременно; если конечно м/к на такое способен.

Добавлено: Пт окт 09, 2009 18:45:58
GP1
Yellow Tiger писал(а):... если конечно м/к на такое способен.
все современные AVRки способны работать, без снижения частоты, при Vcc до 2.7В, а низковольтного исполнения до 1.8В

Добавлено: Пт окт 09, 2009 19:32:20
Yellow Tiger
GP1 писал(а):все современные AVRки способны ...
А он ничего про AVR'ки не говорил, или мой браузер что-то от меня скрывает...?

Добавлено: Пт окт 09, 2009 19:37:38
dymon
Питание на карту подать через любой стабилизатор на 3.3В, для простоты м. взять интегральный маломощный; а согласование уровней - либо через резисторы (самый простой в реализации, но самый "непарламентский" способ; Ом, этак, трехсот достаточно, если я правильно помню), в некоторых случаях к резисторам добавляют стабилитроны на 3.3В; либо выбрать что-то подходящее отсюда.

Но я предпочитаю питать м/к от 3.3 - это и проще, и надежнее, и дешевле одновременно; если конечно м/к на такое способен.
1) Я не могу все запитывать 3,3В, т.к. есть другие устройства которые питаются только от 5В. SD-единственное устройство в моей системе которое требует 3,3 В.
2)А просто резистор нельзя впаять?
3)А названия конкретных интегральных стабилизаторов можешь привести?

Добавлено: Пт окт 09, 2009 20:03:51
Yellow Tiger
2) - если требований по надежности особых нет, то можно.

3) - ищи сразу в магазинах, например так...

Добавлено: Пт окт 09, 2009 20:09:11
GP1
например
LD2979M33TR

Добавлено: Сб окт 10, 2009 10:33:13
sachok
Как можно проверить состояние конкретного бита в переменной?

Добавлено: Сб окт 10, 2009 10:55:22
SII
sachok писал(а):Как можно проверить состояние конкретного бита в переменной?
Логическое И с константой. Что-нибудь вроде:

Код: Выделить всё

lds   R16, var
andi  R16, 0x10
brne  куда-то, если бит установлен

Добавлено: Сб окт 10, 2009 11:01:27
sachok
Збыл написать и пишу на Си. Щас буду пробовать с лог. "И"

Добавлено: Сб окт 10, 2009 11:03:38
Pooher
sbrc r16, 1 ;пропустить следующую команду, если бит 1 регистра r16 сброшен (Skip if Bit in Register is Cleared)
sbrs r16, 1 ;пропустить следующую команду, если бит 1 регистра r16 установлен (Skip if Bit in Register is Set)

Добавлено: Сб окт 10, 2009 16:11:20
sachok
Проблема решена! Вот как я это сделал: (может ещё кому то пригодится)

Код: Выделить всё

if (temp_2>max_2)                
{
led_status|=0b00000010; //установка второго бита в "1" не трогая остальных битов
}
else
{
     if ( ( (led_status & 0b00000010)>>1)==1) //провкрка состояния второго бита
     {
      led_status^=0b00000010; //установка второго бита в "0" не трогая остальных
      }
}

Добавлено: Сб окт 10, 2009 23:53:36
smac
sachok писал(а):Вот как я это сделал: ...
а чем вас вариант сброса бита в 0 не устраивает

Код: Выделить всё

led_status &=~(0b00000010);

Добавлено: Вс окт 11, 2009 12:13:15
ARV
sachok, то, что вы сделали, не сбрасывает бит, а меняет его состояние на противоположное - по-моему, это две большие разницы :)))

Добавлено: Вс окт 11, 2009 16:01:09
sachok
Посколько у меня это будет срабатывать только когда нужный бит "1" то инверсия мне тоже подойдет :) но за совет СПАСИБО буду знать.

Добавлено: Пн окт 12, 2009 20:44:20
dymon
У меня есть вопрос. По схеме сопряжения контроллера с картой памяти, которая приведена на
http://piclist.ru/S-64MMC-PIC-RUS/S-64MMC-PIC-RUS.html
видно, что используется делитель напряжения (резисторы по 3 и 1.8 кОм). Что меня настораживат - это отсутствие подтягивающих резисторов. Они что вообще не нужны??? В даташите они есть, правда у них вся схема питается от 3.3 вольт.....

Добавлено: Вт окт 13, 2009 16:07:49
Kots
Делаю AVR910, но неоказалось резисторов на 100ом. Есть на 111, такой подойдёт?

Добавлено: Вт окт 13, 2009 16:58:45
smac
Kots писал(а):Делаю AVR910, но неоказалось резисторов на 100ом. Есть на 111, такой подойдёт?
Число 111 - это Вы на корпусе SMD резистора прочитали? Если да, то это не 111 Ом, а 110. В любом случае, и 110 и 111 Ом подойдет.