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

IEC

Свой
  • Постов

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

  • Посещение

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


  1. Модуль UART в ADUC7026

    Не попадалось. Но мне удалось его заставить работать. Если интересно, могу выложить пример. Если возможно, перешлите пример на [email protected], а то никак не могу завести. Прерывания по приему идут, а ответ не передается. Кстати вот код, может кто что-нибудь подскажет: /*--------------------------------------------------------------------------*/ void UART_IRQ(void) { unsigned char comiid0 = COMIID0&0x06; if( comiid0==0x02 ) { // Орбаботка прерывания по передаче if ( buf[0]<=len ) COMTX = buf[len++]; else { COMIEN0 |= (1<<ELSI); // разрешение обработки прерываний len = 0x00; } } else { if( comiid0==0x04 ) { // Обработка прерывания по приему buf[len] = COMRX; if ( (buf[0]&0x0f)==len ) { // завершение приема команды COMIEN0 &=~ (1<<ELSI); // запрет обработки прерываний clocUart = 0x00; // запрет обработки тайм-аута обмена // FullUART = 0x55; // установка флага приема посылки ActiveTX(); } else { len++; clocUart = 10; } } else { // сброс необрабатываемых прерываний comiid0 = COMSTA0; comiid0 = COMSTA1; } } } /*--------------------------------------------------------------------------*/ void UART_Init(void) { unsigned short baund = 0x92; //Инициализация COM-порта COMCON0 = (1<<DLAB); COMDIV1 = (baund>>8); COMDIV0 = baund&0xff; COMCON0 = (1<<STOP)|(3<<WLS); // 8-бит + 2 стоповых COMIEN0 = (1<<ELSI)|(1<<ETBEI);//Радрешение прерываний по приему и передаче baund = COMIID0; // контрольный сброс прерываний len = 0x00; } //-------------------------------------------------------------------------- void ActiveTX(void) { COMTX = buf[len=0]; len++; } /*--------------------------------------------------------------------------*/ в UART_IRQ попадает при анализе флага (IRQSIG&UART_BIT) в обработке прерывания.
  2. Согласен! Такой вариант не продумал!
  3. В таком случае первоначальной прошивкой будет прошивка бутлоадера!
  4. Господа, теряем суть проблемы: Зачем вообще нужен BOOTLOADER? Ответ: для загрузки программного кода! Тогда сначало загружается BOOTLOADER, а затем загружается программный код столько раз сколько нужно! Зачем две независимые программы объеденять в один файл????
  5. Да, это оно! Спасибо за подсказку!
  6. Прошу прощения! Столкнулся с проблемой: данные с аттрибутом __eeprom читаются нормально, но не пишуться. Пишу данные в EEEPROM при помощи своей процедуры, но как-то это криво смотриться. Кажется Вы, ув. IgorKossak, где-то выкладывали исправленную библиотеку под ИАР для работы с EEPROM? Не могу никак найти на форуме ссылки. Если можно, выложите еще раз!
  7. ADUC7024

    За ответы всем спасибо! Информации море-теперь буду разбираться! Еще раз спасибо за ответы!
  8. Подскажите кто знает. В Украине надо купить около 7 тыс светодиодов одной партии супер ярких (1,5...5 кД) красных 10 мм по нормальной цене.
  9. Извините все! Проблема не в памяти. Контроллер КАМАК СС32 /wiener/ при блочном автосчитывании давал удвоенную посылку функции считывания, а в описании на контроллер немцы и слова об этом не сказали.... Пока докопал, думал, что крышу рвонет..
  10. ADUC7024

    А как их различить? Что-то в описании я этого не нашел. Может плохо читал?
  11. ADUC7024

    Интересная ссылка! Большое спасибо!
  12. ADUC7024

    А чем его шить через СОМ? Какой прогой? На какой скорости? Какие настройки порта? ЗЫ: А Wiegler возможно "сростить" с IAR?
  13. ADUC7024

    Работал ли кто нибудь с ADUC7024? Чем его программировать, и на каком пакете.
  14. USART на ATMega 16

    Может меня специалисты поправят, но RS протокол работает сносно и при 3% ошибки (где-то когда-то прочитал)! А от кварца требуется стабильность выдаваемой частоты. А для отладки обмена предлагаю следующий метод (сам периодически пользуюсь): Приемник и передатчик постоянно передает по своей линии байт 0х55 (или 0хАА) и двухлучевым осциллографом сравниваются длительности и количество стартовых и стоповых бит. Все наглядно!
  15. Делаю 2 сторонние в СКБ-САУ ( Харьков) класс точности где то 3-4. Время изготовления 3-5 дней. Если заинтересует скину email.
  16. Здравствуйте Все. Не могу понять в чем причина. Устроиство реализовано в КАМАК. Для рабаты устройства в АСЕХ-30-3 организовано два банка (512*16бит) двух портовой памяти. Скорость считывания разная - от 10 мкс/слово до 100 мкс/слово. При моделировании все нормально, а в реальном устройстве из 512 слов считывается 256 нормально, а остальные 256 какое-нибудь число, притом это число разное для 2 банков, и значание принимают разные значения в зависимости от включения питания( все время разные).
  17. У нас ВВII работает в нескольких местах на растояние около 2м. Применяем удлинитель 25 LPT -> 25 LPT. Кабель самопальный, просто клеяный жгут. Используем все 25 линий чтобы не прозванивать при пайке. Проводник, земля, проводник и т.д. Сбоев не замечали.
  18. А можно подключить компаратор на контроль падения напряжения питания и при его срабатывании запрещать все прерывания и сохранять данные. Если контролировать питание до стабилизатора то времени хватит забить байт 100 (зависит от емкости конденсатора перед стабилизатором).
  19. Постарайтесь включить внутренний супервизор! У меня были аналогичные проблемы, только улетали случайные биты. Причина: при медленном фронте наростания(или спада!?) напряжения питания камень кудато улетает и затерает EEPROM! Кажется я правильно понял объяснения ATMEL?
  20. Глупый вопрос

    Только проконтролируй длительность выполения данной функции по времени. Может быть придётся переписать деление на вычитание!
  21. Глупый вопрос

    Это называется двоично-десятичный формат чисел. Ищи по форуму. Недавно давался алгоритм преобразования.
  22. Вопрос по С++

    Большое спасибо за ответы! Очень жаль!
  23. Вопрос по С++

    Как я понимаю this идет для объекта класса. Задача: забить значение ссылки в регистр Z, или значение инициализированной переменной в регистр, обработка даннного значения в вставке ( __asm() ) и восстановление. Просто нехочется для написания ассемблерного кода (оптимизация куска программы) писать функцию. Т.Е. вопрос чисто реторический. Если есть возможность - хотелось бы ее использовать.
  24. Вопрос по С++

    Может кто подскажет, как в С++ ссылку (например char* cp) загнать в регистр (например Z). Как я понимаю, можно через функцию с параметром: void а(сhar*) { asm( "mov r30,r16\n" "mov r31,r17\n" ) } А возможно ли без использования функции?
×
×
  • Создать...