Перейти к содержанию
    

timex

Участник
  • Постов

    16
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о timex

  • Звание
    Участник
    Участник
  • День рождения 24.08.1982

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

944 просмотра профиля
  1. согласен, проглядял :unsure: однако кажется нашёл ошибку в avr-libc режимы сна по даташиту: a вот из WinAvr\avr\include\avr\sleep.h #elif defined(__AVR_ATtiny2313__) #define SLEEP_MODE_IDLE 0 #define SLEEP_MODE_PWR_DOWN (_BV(SM0) | _BV(SM1)) #define SLEEP_MODE_STANDBY _BV(SM1) #define set_sleep_mode(mode) \ do { \ _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1))) | (mode)); \ } while(0) в строке #define SLEEP_MODE_PWR_DOWN (_BV(SM0) | _BV(SM1)) устанавливают в "1" оба бита, но это режим Standby. стало быть, следует поменять их местами. куда рекламацию слать? ) это в версии, поставляемой с последним WinAVR (1.6.6) и в последней на офф.сайте (1.6.7).
  2. а какова функция сигнала SLEEP в схеме управления пина порта? он же связан с командой sleep.
  3. сразу оговорюсь я не схемотехник, поэтому и задаю вопрос по требованию к программе нужно при одевании перемычки на устройство держать две ноги в состоянии "вход с pull-up". это делать неограниченно долго, до отключения питания или сброса. это по заданию. так нужно. как я понимаю, для внешнего устройства они (ноги на вход с pullup) будут висеть как бы в воздухе. можно ли загнать контроллер в спящий режим для останова программы? что в таком случае будет с пинами портов и почему? даташит на стр. 53 и 35 смотрел, но понял мало (( понял только, что режим power_down отключает в том числе и тактирование i/o, а режим idle - только тактирование cpu и flash, остальное работает. или правильнее сделать (как сейчас) бесконечный цикл, не усыпляя мк?
  4. Сейчас проверил - появляется только при оптимизации -O1, -O2, -O3. При -Оs и -O0 такого нету... (WinAVR-20071221). Обновил до 20080512 - глюк перестал проявлятся! Упс, от созерцания прекращения выдачи варнингов незаметил :). Переправил на "(unsigned char*)". Но в данном случае, думается, между int и char нет разницы, т.к. в описании функции стоит "void"...?
  5. mdmitry, да, спасиб. при такой записи строки eeprom_write_block (current_sensor_code, (unsigned int*) EEPROM_SENSOR2_ADR, 8); варнинг не выдаётся. Вдогонку! Обратил внимание, что в окне сообщений компилятора при Rebuld All выдаётся следующее (помечено "!!!!!!!!>"): Build started 25.9.2008 at 17:14:51 avr-gcc.exe -I"C:\AVRlib" -mmcu=atmega16 -Wall -gdwarf-2 -std=gnu99 -fgnu89-inline -O2 -fsigned-char -MD -MP -MT main.o -MF dep/main.o.d -c ../main.c !!!!!!!!> C:\WINDOWS\Temp/ccFQajf5.s: Assembler messages: !!!!!!!!> C:\WINDOWS\Temp/ccFQajf5.s:2433: Warning: expression dangerous with linker stubs !!!!!!!!> C:\WINDOWS\Temp/ccFQajf5.s:2434: Warning: expression dangerous with linker stubs avr-gcc.exe -mmcu=atmega16 main.o -o sensor_ibutton.elf avr-objcopy -O ihex -R .eeprom sensor_ibutton.elf sensor_ibutton.hex avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex sensor_ibutton.elf sensor_ibutton.eep || exit 0 AVR Memory Usage ---------------- Device: atmega16 Program: 4506 bytes (27.5% Full) (.text + .data + .bootloader) Data: 158 bytes (15.4% Full) (.data + .bss + .noinit) Build succeeded with 0 Warnings... файлов таких в c:\windows\temp нету... где копать?
  6. Не, дык он же на 2-й аргумент функции ругается! Т.е. на EEPROM_SENSOR2_ADR, который выше обозначен как число 0x078. вот описание этой функции из доки:
  7. Добрый день! У меня WinAVR 20080512 + AVR Studio 4.14 выдаёт предупреждение ../main.c:890: warning: passing argument 2 of 'eeprom_write_block' makes pointer from integer without a cast на последнюю строку в этом примере: #define EEPROM_SENSOR2_ADR 0x078 // адрес хранения номера датчика unsigned char current_sensor_code[8]; //текущий код датчика ... eeprom_busy_wait(); eeprom_write_block (current_sensor_code, EEPROM_SENSOR2_ADR, 8); (функции - из eeprom.h того же WinAVR'a) т.е. ему не нравится то, что указатель на адрес записан в явном виде (конктетный адрес в EEPROM), хотя всё работает. как мне можно записать указатель на адрес ЕЕПРОМ чтобы компилятор не выдавал предупреждение? Можно ли при этом не расходовать RAM для хранения указателя? Или может существует какой-нибудь ключ для отмены выдачи предупреждения такой записи указателя?
  8. xemul, спасиб, нашёл кое-что у maxim, читаю... Harbour, тож спасиб, разберёмся. щас нашёл - оказывается, у DS24B08 есть команда для автоматизиции поиска. видимо эту команду и заюзаю...
  9. Всем привет! Прошу помочь в одном вопросе. Есть контроллер RS232>1-Wire DS2480B, подключённый к микроконтроллеру AVR. Компилятор - WinAVR (это к тому, что у него нет библиотеки для работы с 1-Wire). К нему подключён термодатчик (в принципе не важно какой) DS18B20 с уже известным серийным номером (который 8 байт). Сейчас понадобилось подключать к этой шине таблетку DS1990A для охранных функций. Но для её идентификации нужно сначала её запомнить в микроконтроллере для последующих сравнений. Но таблетка эта - не единственная. Т.е. серийный номер заранее не известен. Термодатчик для программирования таблетки отключать не предполагается. Алгоритм нужен примерно такой: периодически опрашивается термодатчик. Тут прикладывают таблетку. Микроконтроллер считывает её номер и что-то делает в зависимости от того, совпал он с уже хранящим е ЕЕПРОМ или нет, при этом возобновляется опрос термодатчика. В другом случае, когда нужно запомнить новую таблетку, предполагается так: периодически опрашивается термодатчик. Тут нажимают кнопку программирования и в течении 5 секунд микроконтроллер ждёт прикладывания новой таблетки. После того как её приложили и считали её номер или по прошествии 5 секунд возобновляется опрос термодатчика. Искал в документации на DS2480B и в описаниях стандартов 1-Wire команду для "временного отключения от шины с последующим включением", не нашёл. А она в данном случае очень пригодилась бы. Единственный вариант, который придётся использовать - поиск устройств на шине. Но как раз им не хочется заморачиваться, ибо plug&play на шине 1-Wire ещё не освоил и кажется будет много возни с ним. Вопрос: есть ли ещё варианты такой совместной работы кроме того, в котором придётся реализовывать поиск устройсв на шине? Например, может сущствует какия-то команда временного отключения известного устройства от шины?
  10. Всё-всё, пошёл читать "Программа управления компиляцией GNU make Версия 3.79"... Harbour, это получается, что для увеличения числа в текстовом файлике version.h можно обойтись и без .bat-файла, одним лишь скриптовым языком программы make.exe, так? (да/нет) (если что - у меня версия "GNU Make 3.80")
  11. наличие такого ключика я только предположил. подумал, что неплохо было бы иметь такой... я его тож не нашёл ) а "make-цель" билда - это что? Имеется ввиду файл "Makefile" (без расширения)? А тогда как ентот батник там прописать? какой синтаксис? можете пример привести (не самого батника, а только его "прописку")?
  12. Привет всем. есть WinAVR + AVRStudio хочу прикрутиь к проекту счётчик билдов, который тупо должен увеличиваться на 1 после каждого нажатия F7 подскажите как можно это сделать и можно ли вообще? идея пока пришла только одна: - есть файлик ver.h, состоящий из одной строчки: #define build_number 0 - есть батничек, который после каждого запуска увеличивает число после "build_number " на 1. - есть у компилера волшебный ключик, который перед компиляцией запускал бы этот батничик. Вот последнего и не нашёл в документации на WinAVR (gcc.pdf) Может есть другие варианты?
  13. юзал поиск, но ничего не нашёл. как в IAR записать бинарную константу без извращений? в WinAVR делал так: #define abc 0b11110000 /* 0xf0 */ или unsigned int abc2 = 0b1111000011110000; // 0xf0f0 неужели такой простой вещи нету в солидном IARe??
  14. Всем привет! Есть микросхема SN74LVCC3245ADW от Texas Instruments - "octal bus transceiver with adjustable output voltage", или, по нашему, 8-разряднй двунаправленный формирователь шины. Количество выводов - 24. Выбрана потому, что нужно преобразовывать двунаправленные сигналы из 5 В в 3.3 В (и обратно). К микрухе прикладываются обе напруги - VccA и VccB, причём VccB на микросхему подаётся вроде как "основное" напряжение - т.е. к противоположным краям рядов выводв (12 и 24) - как и у всех "порядочных" микрух. Хотя то, что оно основное - есть сомнения. VccA подаётся на выв. 1. Не понятно, какие уровни должны быть у управляющих сигналов DIR (указание направления) и /OE (разрешение работы м/с). Вот выдержки из даташита: The B port is designed to track VCCB, which accepts voltages from 3 V to 5.5 V, and the A port is designed to track VCCA, which operates at 2.3 V to 3.6 V. The SN74LVCC3245A is designed for asynchronous communication between data buses. The device transmits data from the A bus to the B bus or from the B bus to the A bus, depending on the logic level at the direction-control (DIR) input. The output-enable (/OE) input can be used to disable the device so the buses are effectively isolated. И всё. Про высокие уровни управляющих сигналов - ни слова. В документации внизу на стр. 5 есть табличка электрических характеристик, там есть столбик "тестовые условия", где есть такие строчки: ==== VI = VCCA-0.6 V, Other inputs at VCCA or GND, /OE at GND and DIR at VCCA VI = VCCA-0.6 V, Other inputs at VCCA or GND, DIR at VCCA VI = VCCA . 0.6 V, Other inputs at VCCA or GND, /OE at GND VI = VCCB . 2.1 V, Other inputs at VCCB or GND, /OE at GND and DIR at GND ==== Т.е. они подключают выводы либо к GND, либо к VCCA. А про подключение DIR или /OE к VCCB - ни слова! Так какие уровни у управляющих сигналов? 1) VccA - есть пример подключения вывода "DIR" в графе "тестовые условия" 2) VccB - в пользу этого говорит то, что это напряжение подключается как у остальных "порядочных"микрух - к противоположным краям рядов выводов.
  15. амплитуда на входе 0-5 В, на выходе 0-3,3 В. частота до 3 МГц для согласования уровней м/с выбрана - sn74lvcc3245a - octal bus transceiver with adjustable output voltage and 3-state outputs да, вот здесь имелось ввиду, что эти линии входят в коммутирующее устройство вместе с 32-мя линиями и выходят без изменений с 16-ю линиями. т.е. их не трогаем, по ним, как я понимаю, можно определить что делать - читать или писать. очень хотелось бы реализовать на логиге, без применения чего-то тактируемого... не совсем понял термины "двухпортовка" и "ИКМ-тракт". могли бы их пояснить, если это относится к теме? пасиб, попробую поискать...
×
×
  • Создать...