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

Drozd2

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

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

  • Посещение

Сообщения, опубликованные Drozd2


  1. Ссылка уводит в небеса

    PS в общем понял. Но не все.

    А случайно нету здесь привычной идиотской простоты, двинул мышку, нажал кнопку, и счастье привалило?

  2. Не то, чтобы я вообще ничего не понял, но карта дальнейших действий пока не складывается. Чайник. Наверное, вопрос неправильно спросил. Мне бы получить файл с числами от quartus, потом quartus вообще закрыть и работать только с этим файлом. По меню quartus полазил, все пункты, связанные с сохранением, повыбирал, ожидаемого результата не получил.

  3. С добрым!

    Вопрос чайника. Среда - quartus 9.1. Вытянул из прошлого, чтоб пошустрее ворочалась. Делаю вычислитель. Работаю с симулятором, который не modelsim. Названия его, виноват, даже не знаю, ключевое слово waveform. Который рисует диаграммы и пишет под ними числа. Есть возможность все эти числа сохранить в файле, чтобы потом использовать для построения своих диаграмм?

  4. Вот это тоже надо бы сразу понять. Тактовый сигнал касается всех логических вентилей, или только избранных? Могу я спроектировать три (или больше) независимых логических схемы на одной ПЛИС?

  5. Вы меня переоцениваете. До языков мне пока далеко. Схема поближе.

    Пока понял и осознал:

    Выводы практически равнозначны кроме специального назначения они могут быть только вход или только выход. Но их мало и на них ещё нужно умудриться попасть.

    Полная аналогия. Но есть нюанс. На россыпи основная задержка на логике. Тут на связях.

    От себя делаю вывод : если вывод без специального назначения, то можно делать с ним что угодно, если он INPUT/OUTPUT

    тактирование можно не прикладывать, и ПЛИС отработает выходные сигналы в ответ на входные

    так?

  6. Я предполагал, что будет один ответ на уровне да/нет. В своем Hello world проекте выводы я таки назначил. Редактор их принял. Только запустить на выполнение пока стремновато. Там рядом еще запчасти есть. И в них тоже есть синий дым. Я правильно думаю, что по выводам никаких ограничений нет? Ну и про тактирование. Оно обязательно? Или как рассыпуха?

    И вот еще. Неназначенные выводы остаются в третьем состоянии?

  7. И эту статью, и много подобных я, естественно, прочитал. Одинаково скользко обходят правила назначения выводов. Может, слишком придираюсь, но очень не хочется, чтобы из спартана синий дым ушел. И про тактирование тоже информации нет.

  8. Здрасьте!

     

    Пара нубских воросов.

    Перед глазами прибор со SPARTAN-3E. Руками пока боюсь трогать.

    В качестве Hello, world в схемном редакторе нарисовал буфер. Просто передача с пина на пин. Теперь вопросы.

    1. Надо назначить выводы. Смотрю на двунаправленные. При выборе какая-то разница есть?

    2. Тактирование нужно? Или схема будет работать аналогично собранной на рассыпухе?

  9. Здравствуйте!

    Добавляю пакеты в buildroot. По мануалу. Застрял на пакете, который собирается не в корневом каталоге, а в одном из подкаталогов. Причем сборка начинается с cmake. В качестве шаблона просматривал правила сборки gcc и ulibc. Не сработало. Не осилил. Есть какой-то hello_world по этой теме? Или готовый шаблон на подобный случай.

  10. называются "кооперативные" ?

    Чтоб запустить на MK достаточно откомпилировать, портирование не требуется ?

    Точно. Стек протопотоков общий. Переполнение одно на всех. Отработка протопотоков асинхронная. Для 8-битников, на мой субъективный взгляд, очень удобно.

  11. Подключаю плату к компьютеру посредством g_serial. g_serial запускаю без параметров. ttyGS0 в качестве консоли не использую, открываю в программе как порт. termios заполняю так:

     

    ios.c_iflag = 0;

    ios.c_oflag = 0;

    ios.c_cflag = CLOCAL | CREAD | CS8;

    ios.c_lflag = 0;

     

    Через два аппаратных com работает. Собственно, на них программа была отлажена. Передаются бинарные файлы.

     

    Через g_serial текст передается без проблем, а бинарные данные с большой задержкой и с потерями. Пробовал разные размеры блоков. Корректно стало передаваться по 2 байта, но с потерей каждых последующих 2 байтов.

     

    В крайнем случае можно на uu перейти, но пока не хочется. Решаемо? Или g_serial не для бинарных данных?

  12. + 5 копеек.

    Загляните на http://newhavendisplay.com. Выберите нужний дисплей. Через неделю он будет у Вас. И он будет не китайским. За это время успеете детально изучить описание. Но работают только с юридическими лицами. Мой первый заказ на физическое лицо с таможни вернулся обратно. Пришлось попросить в магазине через дорогу от дома принять заказ. Это была Галантерея, но этого оказалось достаточно. Работаю с менеджером Энни Навроцки. Это на всякий случай. У нее уже богатый опыт общения через гуглеводчик.

     

    P.S. Через контору покупка происходит прозрачно. Халтура...

  13. Спасибо за информацию. Она породила еще один вопрос. Это связано с тарифными планами, или Билайн так поступает со всеми?

     

    Не так просто с этим столкнуться. Для подобных разработок контора выдает корпоративные sim карты с несгораемой суммой. У юридических кустомеров скорее всего будут такие же карты. А вот у физических может всплыть подобная ситуация. Перешел на свою персональную карту. Целенаправленно сжигаю баланс. Надо это увидеть. А выход похоже такой. Запрашивать периодически баланс, если чего запрашивать доверительный платеж, и если хозяин так и не пополнил счет, отправлять ему угрожающее сообщение. Как Вам идейка?

  14. при начальном 14руб SMS улетают только при закрытом GPRS

    Озадачило. Удалось разобраться? За 10 дней.

    И про других опраторов что Вам известно в этом плане? Если не сложно.

  15. Да, у них будут другие индексы, ну сделайте список define'ов под них.

    А вот насчет других индексов то я и не подумал. Начинаю понимать. Хотя с define пока довольно туманно. Попробую додуматься сам. Спасибо!

  16. Да не вопрос. Можно и в ОЗУ. Тогда и одной таблицы достаточно. И адрес нужного обработчика записать туда я в состоянии. Как два разных обработчика с одинаковыми атрибутами прописать?

  17. Сути вопроса никто не понял. Попробую поэтапно.

    1. Хочу ДВЕ(!!!) таблицы векторов во flash. Не важно, какой плотности. Таблицы должны быть с разными векторами и вызывать разные обработчики прерываний. При старте с помощью ebase должна выбираться одна из них со своим набором привязанных к ней обработчиков.

    2. Тогда в тексте программы появляются соответственно ДВА разных обработчика ОДНОГО вектора, на что компилятор ругается. Не хочет он сразу и

     

    void __attribute__((interrupt(X), vector(Y))) foo {};

     

    и

     

    void __attribute__((interrupt(X), vector(Y))) bar {};

     

    К тому же нужно связать первый обработчик с первой таблицей, а второй, соответственно, со второй. И уже при старте в ebase писать адрес нужной таблицы.

     

    3. Даже если одну таблицу разместить в озу и при старте менять вектора, то проблема одинаковых атрибутов разных обработчиков остается.

     

    Догадываюсь, что штатно это не реализуемо. Но надеюсь, что решение есть.

    Пока приходится в одном обработчике в зависимости от режима вызывать разные функции. Лишние расходы на сохранение/восстановление регистров.

  18. Микроконтроллер - PIC32MX. Прибор должен работать в двух разных режимах в зависимости от переключателя. Режим выбирается перед включением. Обработчики прерываний тоже должны быть разными. Возможно ли штатными методами создать две таблицы векторов прерываний и два набора обработчиков? В крайнем случае можно сделать одну таблицу в ОЗУ, но 4 КБ flash не так жалко, как ОЗУ. И компилятор ругается на разные обработчики одного вектора.

  19. Использую порт MSVC-MingW. Пытаюсь приподнять точность таймера с помощью функции rdtsc вместо Sleep. Текст оригинальный, только закомментированы Sleep в бесконечном цикле и добавлен вызов wait_ms.

     

    void wait_ms(unsigned long ms)
    {
    unsigned long long t2 = _rdtsc() + (unsigned long long)ms * 3000000;
    while (_rdtsc() < t2);
    }
    
    
    /*-----------------------------------------------------------*/
    
    static DWORD WINAPI prvSimulatedPeripheralTimer( LPVOID lpParameter )
    {
    TickType_t xMinimumWindowsBlockTime;
    TIMECAPS xTimeCaps;
    
    /* Set the timer resolution to the maximum possible. */
    if( timeGetDevCaps( &xTimeCaps, sizeof( xTimeCaps ) ) == MMSYSERR_NOERROR )
    {
    	xMinimumWindowsBlockTime = ( TickType_t ) xTimeCaps.wPeriodMin;
    	timeBeginPeriod( xTimeCaps.wPeriodMin );
    
    	/* Register an exit handler so the timeBeginPeriod() function can be
    	matched with a timeEndPeriod() when the application exits. */
    	SetConsoleCtrlHandler( prvEndProcess, TRUE );
    }
    else
    {
    	xMinimumWindowsBlockTime = ( TickType_t ) 20;
    }
    
    /* Just to prevent compiler warnings. */
    ( void ) lpParameter;
    //Sleep(1);
    
    for( ;; )
    {
    	/* Wait until the timer expires and we can access the simulated interrupt
    	variables.  *NOTE* this is not a 'real time' way of generating tick
    	events as the next wake time should be relative to the previous wake
    	time, not the time that Sleep() is called.  It is done this way to
    	prevent overruns in this very non real time simulated/emulated
    	environment. */
    	/*if( portTICK_PERIOD_MS < xMinimumWindowsBlockTime )
    	{
    		Sleep( xMinimumWindowsBlockTime );
    	}
    	else
    	{
    		Sleep( portTICK_PERIOD_MS );
    	}*/
    	wait_ms(portTICK_PERIOD_MS);
    
    	configASSERT( xPortRunning );
    
    	WaitForSingleObject( pvInterruptEventMutex, INFINITE );
    
    	/* The timer has expired, generate the simulated tick event. */
    	ulPendingInterrupts |= ( 1 << portINTERRUPT_TICK );
    
    	/* The interrupt is now pending - notify the simulated interrupt
    	handler thread. */
    	if( ulCriticalNesting == 0 )
    	{
    		SetEvent( pvInterruptEvent );
    	}
    
    	/* Give back the mutex so the simulated interrupt handler unblocks
    	and can	access the interrupt handler variables. */
    	ReleaseMutex( pvInterruptEventMutex );
    }
    
    #ifdef __GNUC__
    	/* Should never reach here - MingW complains if you leave this line out,
    	MSVC complains if you put it in. */
    	return 0;
    #endif
    }

     

    Программа зависает намертво. Причем если в wait_ms добавить Sleep, то начинает работать. Или хотя бы закомментированный Sleep перед for(;;) раскомментировать, то один раз выводится Task 1 is running. И тоже зависает. Как починить?

×
×
  • Создать...