IEC
Свой-
Постов
260 -
Зарегистрирован
-
Посещение
Весь контент IEC
-
Не попадалось. Но мне удалось его заставить работать. Если интересно, могу выложить пример. Если возможно, перешлите пример на [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) в обработке прерывания.
-
Согласен! Такой вариант не продумал!
-
В таком случае первоначальной прошивкой будет прошивка бутлоадера!
-
Господа, теряем суть проблемы: Зачем вообще нужен BOOTLOADER? Ответ: для загрузки программного кода! Тогда сначало загружается BOOTLOADER, а затем загружается программный код столько раз сколько нужно! Зачем две независимые программы объеденять в один файл????
-
Да, это оно! Спасибо за подсказку!
-
Прошу прощения! Столкнулся с проблемой: данные с аттрибутом __eeprom читаются нормально, но не пишуться. Пишу данные в EEEPROM при помощи своей процедуры, но как-то это криво смотриться. Кажется Вы, ув. IgorKossak, где-то выкладывали исправленную библиотеку под ИАР для работы с EEPROM? Не могу никак найти на форуме ссылки. Если можно, выложите еще раз!
-
Подскажите кто знает. В Украине надо купить около 7 тыс светодиодов одной партии супер ярких (1,5...5 кД) красных 10 мм по нормальной цене.
-
Извините все! Проблема не в памяти. Контроллер КАМАК СС32 /wiener/ при блочном автосчитывании давал удвоенную посылку функции считывания, а в описании на контроллер немцы и слова об этом не сказали.... Пока докопал, думал, что крышу рвонет..
-
Может меня специалисты поправят, но RS протокол работает сносно и при 3% ошибки (где-то когда-то прочитал)! А от кварца требуется стабильность выдаваемой частоты. А для отладки обмена предлагаю следующий метод (сам периодически пользуюсь): Приемник и передатчик постоянно передает по своей линии байт 0х55 (или 0хАА) и двухлучевым осциллографом сравниваются длительности и количество стартовых и стоповых бит. Все наглядно!
-
Изготовление ПП в Украине
IEC ответил XsanyaX тема в Изготовление ПП - PCB manufacturing
XsanyaX [email protected] ( для Валерия Ивановича) -
Изготовление ПП в Украине
IEC ответил XsanyaX тема в Изготовление ПП - PCB manufacturing
Делаю 2 сторонние в СКБ-САУ ( Харьков) класс точности где то 3-4. Время изготовления 3-5 дней. Если заинтересует скину email. -
Двухпортовая память на ACEX
IEC опубликовал тема в Работаем с ПЛИС, области применения, выбор
Здравствуйте Все. Не могу понять в чем причина. Устроиство реализовано в КАМАК. Для рабаты устройства в АСЕХ-30-3 организовано два банка (512*16бит) двух портовой памяти. Скорость считывания разная - от 10 мкс/слово до 100 мкс/слово. При моделировании все нормально, а в реальном устройстве из 512 слов считывается 256 нормально, а остальные 256 какое-нибудь число, притом это число разное для 2 банков, и значание принимают разные значения в зависимости от включения питания( все время разные). -
У нас ВВII работает в нескольких местах на растояние около 2м. Применяем удлинитель 25 LPT -> 25 LPT. Кабель самопальный, просто клеяный жгут. Используем все 25 линий чтобы не прозванивать при пайке. Проводник, земля, проводник и т.д. Сбоев не замечали.
-
А можно подключить компаратор на контроль падения напряжения питания и при его срабатывании запрещать все прерывания и сохранять данные. Если контролировать питание до стабилизатора то времени хватит забить байт 100 (зависит от емкости конденсатора перед стабилизатором).
-
Постарайтесь включить внутренний супервизор! У меня были аналогичные проблемы, только улетали случайные биты. Причина: при медленном фронте наростания(или спада!?) напряжения питания камень кудато улетает и затерает EEPROM! Кажется я правильно понял объяснения ATMEL?
-
Только проконтролируй длительность выполения данной функции по времени. Может быть придётся переписать деление на вычитание!
-
Это называется двоично-десятичный формат чисел. Ищи по форуму. Недавно давался алгоритм преобразования.
-
Как я понимаю this идет для объекта класса. Задача: забить значение ссылки в регистр Z, или значение инициализированной переменной в регистр, обработка даннного значения в вставке ( __asm() ) и восстановление. Просто нехочется для написания ассемблерного кода (оптимизация куска программы) писать функцию. Т.Е. вопрос чисто реторический. Если есть возможность - хотелось бы ее использовать.
-
Может кто подскажет, как в С++ ссылку (например char* cp) загнать в регистр (например Z). Как я понимаю, можно через функцию с параметром: void а(сhar*) { asm( "mov r30,r16\n" "mov r31,r17\n" ) } А возможно ли без использования функции?