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

kool

Свой
  • Постов

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

  • Посещение

Весь контент kool


  1. ATxmega

    См. раздел 29.2 Alternate Pin Functions в ATxmega64A1/128A1/192A1/256A1/384A1 Preliminary (rev.I). Там в виде таблицы все сведено
  2. В DS1307 вывод батарейки случайно не в воздухе висит? Еще часовой кварц очень просто перегреть паяльником. Ну, и стандартный вопрос. В меге TQFP все ноги питания, земли (в т.ч. AGND и AVcc) разведены и припаяны?
  3. ATxmega

    А чего тут отлаживать? работу nop()? Если в прерывание заходит - значит работает. Только вот не пойму, зачем столько мороки с таймером в прерывании. Во-первых останавливать таймер при смене CNT не обязательно. А во-вторых в данном случае логичнее было бы использовать Period Register Тогда void iv_TCE0_OVF_isr(void) { TCE0.CTRLA=0x00; // stop Timer 1 порта Е TCE0.CNT.i=0xFF8C; // установка значения для счета 115 значений - 0x73 T=T+1; TCE0.CTRLA|=0x06; //start Timer 1 порта Е } Превращается в T++;
  4. AVR и блютуз

    Без указания конкретного устройства вашу ссылку можно считать спамом. Тем более, что на заглавной странице ни слова bluetooth, ни rs232, не встречается
  5. ПРоблема решилась или нет? IMHO, ошибку "Could not synchronize with the hardware. Turn power off and try again." программатор может выдавать тогда, когда отладчик повысил скорость на порту (соответственно и в эмуляторе) и не вернул ее обратно. Или не вышел из режима отладки. У меня также подобные ошибки возникали из-за того, что "отваливался" переходник USB-COM (на FT232BM). Я его подключал к USB на "морде" компа. замена так называемой "витой пары" внутри компа на нормальную экранированную решила проблему. Но теперь все равно стараюсь не делать лишних соединений "кабель-кабель" на пути ЮСБ и подключаюсь к задней стенке. З.Ы. Без оптронов пробовали или нет? На какой скорости общаетесь с программатором? На мой взгляд оптроны, HCPL-0701 не лучший выбор. На скорости 115200 они вообще работать не будут. На нагрузке 1к время фронта/спада у них равно соответственно 20/10 мкс. Посмотрите в сторону оптронов H11L1,H11L2,H11L3. Они с гистерезисом и на скорость до 1MБита Каждая программа обычно настраивает скорость ком-порта под себя, так что на настройки скорости ком-порта в винде (свойствах оборудования) можно не смотреть. Единственное, что пожно сделать, это в расширенных настройках (Advanced) *виртуального* ком-порта выставить Latency Timer поменьше (только для преобразователей ftdi). Его стандартное значение равно 16 мс.
  6. А в окне "Processor" поменять название тоже нельзя? Думаю, намного удобнее использовать окно watches. Пишеш название - и тебе "по барабану", регистр это или переменная в памяти Р.S. А что за кристаллы добавили в СП1 к студии 4,16 (Хмега серии D)?? На сайте описаний вроде не нашел... Р.Р.S. Это глюк версии 4.16, который в СП1 не исправили "Unfortunately no mention of a fix for the register windows bugs"(http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=78424)
  7. Смотря что Вы имеете ввиду под словом "переменный". . Если это сигнал переменного тока (т.е. каждых пол-периода меняется направление тока), то нельзя. В этом случае сигнал нужно "поднимать", т.е. вносить в него постоянную составляющую, равную 1/2 от AVDD (2.5В). И следить. чтобы амплитуда входного сигнала (до "поднятия") не превышала 2,5В . Если меняется только амплитуда сигнала (но не направление тока/полярность), т.е. сигнал однополярный, то можно. Для однополярного синуса, "прижатого" к 0, амплитуда равна размаху сигнала, поэтому - не более 5В
  8. для уменьшения емкостной нагрузки поставьте на SCK последовательно резистор (100+ Ом) последовательно между мегой и TMS. P.S. TMS случаем SCK'ем не пытается управлять?
  9. питание при программировании лучше взять поближе к 4,5В, Чтобы программируемый контроллер (мега16) нормально воспринимал уровни лог."1" от программатора. Так быть не должно. Проверяйте схему, полярность питания... Все ножки GND (и 11, и 31) должны быть подсоединены к общему проводнику. AVcc - питание порта А. Если используется АЦП, то на нее подается отфильтрование питание. Если нет - то можно подключить напрямую к питанию процессора (Vcc, 10 нога). На пин разъема программирования VTG так же обычно заводится питание программируемого микроконтроллера. Разными программаторами он используется по-разному: 1) с него берется питание для прорамматора (напр, программатор AVR910) 2) с него берется опора для преобразователя уровней на выходе программатора (AVRDragon, JTAG ICE MKII т.п) 3) программатором вообще никак не используется (здесь как раз этот вариант ) NC = No Connect (3-й пин) - не подсоединять. В большинстве случаев он не нужен
  10. Достаточно очистить бит RXEN: Может, вместо TXEN, RXEN нужно писать TXEN0, RXEN0? А вместо этого следовало бы описать, что для Вас означает "не работает". Т.е. что Вы хотели получить в результате выполнения кода и что получили.
  11. 2-красных - потому что при меньшей стоимости позволяет увеличить прорисовку деталей, сгладить изображение (если используется технология виртуального пиксела) овальные - для того, чтобы бОльшая часть излучениякристалла была направлена в сторону зрителя, а не в небо(потолок)
  12. Можно попробовать так: Пусть температура равна Т = F * U. В общем случае F тоже зависит от температуры (для иначе бы ГОСТа не было), поэтому Т = F(T) * U. По таблице из ГОСТа строим график зависимости переменной F(T) от температуры на диапазоне [0..1360]. (см. вложение) Видим, что в диапазоне температур от 260 до 1360 его можно аппроксимировать квадратичной функцией. Подбираем коэффициенты так, чтобы и близко к ГОСТ, и контроллеру считать было удобно: или F(T) = 41,6 - [ (T - 760)2 * 75 ] >>24 Если устраивает точность +/-20 градС в области "низких" температур (0...260'C), то пользуемся данной формулой для всего диапазона. Иначе выделяем еще 1 или 2 области из графика и аппроксимируем их своими функциями F2(T), F3(T). Запишем F(T) как F(T) = FF - FT, где FF = 41.6, FT = [ (T - 760)^2 * 75 ] >>24. Тогда T = (FF - FT)*U = (FF*U) - (FT*U), при чем (FT*U) <<(FF*U). Так как у нас на входе только напряжение, то сначала грубо оцениваем температуру: Тгр = FF*U = 41,6*U По результату грубой оценки вычисляем значение FT = [ (Tгр - 760)^2 * 75 ] >>24. Далее вычисляем Т: T = Tгр - FT*U P.S. Это все для диапазона плюсовых температур. Возможно, в данном подходе есть и какие-то мои промахи. На практике я его не проверял, так как с термопарами никогда не работал, да и сам ГОСТ первый раз увидел позавчера вечером. Поэтому прошу сильно не пинать, если что не так. Во вложении zip-файл с расчетом в excel и рисунок с графиками k_type.zip
  13. Atmega128+Planar 640x480

    Посмотрите в исходниках (http://electronix.ru/forum/index.php?showtopic=10934) Напр., пост #11, может оттуда что-то почерпнете.
  14. Может это вам поможет устранить нелинейность: ГОСТ Р 208.585-2001 Государственная система обеспечения единства измерений. Термопары. Номинальные статические характеристики преобразования (http://www.complexdoc.ru/lib/ГОСТ%20Р%208.585-2001)
  15. Контроллеры-то можно соединить. Но есть ли смысл тогда в их использовании? Связь ведь получится точка-точка. И как тогда Ваша плата будет общаться с другими устройствами системы?
  16. А что плохого или неудобного в CAN AVR? Сам понемного приглядываюсь к авр с CAN на борту, поэтому хотелось бы знать ньюансы применения и возможные проблемы
  17. Ну так вроде сигнал VBus и определяет состояние сигнала VUSB. Подозреваю, что VBus - это 5В с usb-кабеля. В таком случае и замыкать ничего не надо, и бубен можно отложить :)
  18. twi atmega 128

    Ну, тогда уж и не знаю :( Инициализацию TWAR убрали? Проверьте тестером (или лучше осциллографом) уровень на ножках SDA,SCL перед выполнением первой строки TWCR = HARD_START_CONDITION; Может, еще раз выложите проект с изменениями, включая секцию инициализации TWI. Только или вложенным файлом, или используя теги вставки кода
  19. twi atmega 128

    А что у Вас в TWAR?? случайно не адрес устройства, к которому Вы обращаетесь? Судя по всему, случай TWSR = 0x00 возникает в режиме slave (т.е. когда адрес на шине совпал с TWAR) при ошибочном обнаружении (не генерации) на линии старта/стопа Так что инициализцию TWAR лучше уберите. Можно попробовать. Но в данном случае, думаю, это ничего не даст. Хотя могу и ошибаться. Кстати, при отладке I2C после сброса контроллера нужно как-то сбрасывать и слейв-устройства (вернее, состояние ихнего интерфейса) Наиболее простой способ - снятие питания. Или же програмным способом. Причина и методы решения - в http://www.analog.com/static/imported-file...7414AN686_0.pdf Лично я делаю ДО включения аппаратного TWI так (правда, на асме): TWI_Master_Initialise: ;* ;- RESET I2c cbi SCL_PORT,SCL cbi SDA_PORT,SDA cbi SCL_DDR,SCL cbi SDA_DDR,SDA // SDA = high call Wait5us ldi Cnt,10 i2cNextSCL: sbi SCL_DDR,SCL // push SCL low call Wait5us // wait 5 us cbi SCL_DDR,SCL // release SCL high ii2cWt1: sbis SCL_PIN,SCL // wait SCL rjmp ii2cWt1 call Wait5us // wait 5 us dec Cnt brne i2cNextSCL И еще. В даташите на атмегу128, стр. 201 указано, что нельзя посылать стоп сразу после старта или повторного старта: ATMega128, pg201: A transmission basically consists of a START condition, a SLA+R/W, one or more data packets and a STOP condition. An empty message, consisting of a START followed by a STOP condition, is illegal. Поэтому TWCR = HARD_STOP_CONDITION в строках if ((TWSR & 0xF8) != _START) {TWCR = HARD_STOP_CONDITION; return ERROR_START;} и if ((TWSR & 0xF8) != _START_REPEAT) {TWCR = HARD_STOP_CONDITION; return ERROR_START;} я бы убрал. У меня появились еще вопросы: Ошибка возникает при первом проходе данного участка (после сброса) или при последующих?
  20. twi atmega 128

    А что находится в TWSR при этом? P.S. Частая ошибка при работе с TWi - подача СТАРТ сразу после подачи СТОП. Возникает оттого, что при инициации выдаче на шину условия СТОП бит TWINT в TWCR выставляется сразу, не дожидаясь завершения формирования данного сигнала на шине. По этой причине перед подачей очередного старта нужно проверять, завершена ли формировка ни шине условия "стоп", т.е. проверкой бита TWSTO в TWCR P.P.S. Пересмотрел даташит - вроде бы контроллер после записи в TWCR условия "старт" дожидается освобождения линии и подает старт. Т.е. поссле этого контроллер может либо "зависнуть" на строке while (!(TWCR & 0x80)); либо в TWSR может быть 2 кода - подан старт (0x08) или подан repeated start (0x10).
  21. twi atmega 128

    Проверьте на всякий случай, все ли ножки питания/массы мег128 подсоединены Частоты 16 и 128 мег одинаковые? В каком месте? там, где start или repeated start?
  22. twi atmega 128

    Внешние подтяжки присутствуют? SDA, SCL на землю не засажены? З.Ы. если Ваше устройство работает только как мастер и не переключается в режим slave, то TWAR Вам не нужен.
  23. Soft RS-232

    1. В прерывании по int0 вместо in temp, GIMSK;* Запрет INT0 cbr temp, 0b10111111;* out GIMSK, temp;* нужно in temp, GIMSK;* Запрет INT0 cbr temp, 0b01000000;* out GIMSK, temp;* а еще лучше cbr temp,1<<Int0 2. 1/период переполнения таймера в режиме СТС равен ZQ/PSK/(OCRA+1), поэтому длительности в 1 бит будет соответствовать значение в ОСRA == 144-1. Соответственно, 1/2 бита == 144/2-1=70 P.S. В качестве счетчика битов можно использовать и сам регистр input0, если по приходу старт-бита (по инт0) в загружать в него 0x80. Признаком окончания приема будет появление "1" в бите переноса при прокрутке регистра input0 вправо Тогда код RX0:;* Приём inc count0;* Увеличить на 1 значение счётчика битов lsr input0;* сдвинуть вправо регистр данных clt;* сбросить бит Т sbic PinD,2 set;* Установить бит Т если на входе 1 bld input0,7;* Скопировать бит Т в 7-й бит регистра данных cpi count0,8;* Если принятых бит не 8, то выход brne Exit0 sbi flags0,6;* в противном случае устанавливаем флаг приёма байта данны нужно заменить на clc;Входящий бит записываем через бит переноса sbic PinD,2 sec; ror input0; Записываем входящий бит, признак последнего бита - в флаг С brcc Exit0; sbi flags0,6; Если на выходе С==1, то принятый бит - последний. Дальше принимаем стоп-бит
  24. У Вас есть чем прошивать?? Тогда выложу схему в обмен на прошивки к обеим контролерам :). Шутка. А если серьезно, то дракон дешевле/проще купить, чем клонировать.
  25. А можно "шпрот" открыть и выложить в pdf, gif, jpg или другом более доступном формате
×
×
  • Создать...