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

lons83

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

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник

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

920 просмотров профиля
  1. WiZnet w5300

    Спасибо за ответы. Разобрался
  2. WiZnet w5300

    да это я знаю про 8 сокетов. То есть Вы хотите сказать что на один сокет я не могу подключить одновременно более одного соединения? и если допустим мне к TCP_Server нужно 9 подключений TCP_CLIENT, то данная микросхема уже не подойдет?
  3. WiZnet w5300

    Здравствуйте, у меня такая проблема: Имеется микросхема Wiznet w5300. Хочу сделать следующее: 1) беру сокет 0 -> открываю его как TCP SERVER ( ip 192.168.0.1 port 5000 ) -> и TCP CLIENT ( ip 192.168.0.2 port 5000 ) на другой стороне ко мне подключается. 2) Теперь я хочу к своему TCP SERVER одновременно подключить и второй TCP CLIENT ( ip 192.168.0.3 port 5000 ) -> подключение НЕ удаётся((( Вопрос: Кто-нибудь знает как на один сокет TCP SERVER подключить более одного TCP CLIENT ? или в w5300 такое не возможно и там соединение только точка-точка? Заранее спасибо за ответы.
  4. А можете еще раз мне обьяснить: Как произойдет вызов этого программного прерывания? с аппаратным все понятно... а вот с программным? ведь если я помещу func1() - в обработчик - это ни чем не будет отличаться от вызова обычной функции... а если в обычном цикле программы, то тогда как? по какому то флагу? Спасибо за книжку. Завтра скачаю и посмотрю... Кстати да... Вы правы... тут можно по разному это обыграть... надо подумать...
  5. Не могли бы Вы здесь по подробнее.... тогда как мне задать вектор прерывания программного для func1(); ??? Ведь аппаратные вектора все заняты, а подставить func1(); под вектор с 0-31 не получается... да и не получиться наверно... Вообщем не понятно как указать что func1() - это программное прерывание... и как я понял оно будет вызываться из IRQ тогда зачем его делать программным?..... на практике у меня зависало... особенно если func1() --- довольно приличная функция - например обработка видео массива... и тогда все храниться в стеке и через 2 минуты забивается.... а если func1() вынести в общий цикл то все нормально работает.... просто нужно чтобы func1() запускался прямо после IRQ , а во время выполнения func1() происходит 3-4 вызова IRQ....
  6. Можно и так... Только в этом случае Вы не выходите из прерывания. И если func1() не закончиться выполнятся до повторного входа в IRQ... то получиться рекурсия и через некоторое время контроллер зависает!!!! Поэтому я и хочу чтобы переход был после выхода из прерывания
  7. Здравствуйте, извините если такая тема уже повторялась. Но я никак не нашел ответа: Есть прога: #include func1 { .... } func2 { .... } func3 { .... } func4 { .... } IRQ // обработчик прерывания { .... } int main { while (1) { func1(); func2(); func3(); func4(); } } Предположим выполняется func3{} в этот момент срабатывает прерывание и передается обработчику IRQ после завершения IRQ, программа по адресу возврата возвращается к func3{}.... НО!!!!!! Как можно с помощью языка СИ сделать чтобы после возвращения из IRQ -> выполняться стала func1{} !!! ( поменять адрес возврата ) и уже после выполнения func1{} -> вернуться к func3{}; ?????????? Делал такое на ассмеблере, а тут как-то завис.... не понятно как в этом случае использовать ассемблерные вставки... а чтение программных прерываний ( SWI и SVC ) завели меня в тупик... Заранее спасибо. P.S. среда программирования Keil 4 . МК: stm cortex-m3
  8. Здравствуйте, у меня такая проблема. Есть датчик фирмы Analog devices - ADT7310. Он работает по интерфейсу SPI. Датчик - Slave. Микроконтроллер ( далее МК) - Master. Диаграмма работы с режиме чтения приведена. Также выложен datasheet. Проблема: Ни как не могу прочитать данные с датчика!!! Если я правильно понимаю SPI в режиме Master у МК работает следующим образом: Записываются данный в регистр для передачи и одновременно(!!!) идет прием и передача данных по сигналу SCLK который генерирует мой МК в момент передачи. Судя по диаграмме датчика в режиме чтения, данные для чтения он выдает только после запроса на чтение данных. А как я могу тактировать SCLK для чтения данных если я в этот момент ничего не передаю. Была попытка слать на линию DIN ( всякий мусор) в момент когда на DOUT выставляются данные ( ну чтобы тактирование обеспечить)... но результа никакого нет((((( Кто-нибудь сталкивался с такой проблемой? Заранее спасибо)) уже подсказали. надо было передовать 0xFF; ADT7310.pdf
  9. Большое спасибо))) заработало))) блин так стыдно стало(((
  10. проблема с SPI

    Здравствуйте, у меня такая проблема. Есть датчик фирмы Analog devices - ADT7310. Он работает по интерфейсу SPI. Датчик - Slave. Микроконтроллер ( далее МК) - Master. Диаграмма работы с режиме чтения приведена. Также выложен datasheet. Проблема: Ни как не могу прочитать данные с датчика!!! Если я правильно понимаю SPI в режиме Master у МК работает следующим образом: Записываются данный в регистр для передачи и одновременно(!!!) идет прием и передача данных по сигналу SCLK который генерирует мой МК в момент передачи. Судя по диаграмме датчика в режиме чтения, данные для чтения он выдает только после запроса на чтение данных. А как я могу тактировать SCLK для чтения данных если я в этот момент ничего не передаю. Была попытка слать на линию DIN ( всякий мусор) в момент когда на DOUT выставляются данные ( ну чтобы тактирование обеспечить)... но результа никакого нет((((( Кто-нибудь сталкивался с такой проблемой? Заранее спасибо)) ADT7310.pdf
  11. разобрался. все работает. вопрос не актуален.
  12. Здравствуйте, заранее извиняюсь если тема не в той ветке. Проблема с Wiznet 5300 и с реализацией keep alive в нем. Открыл сокет TCP (клиент). Все хорошо. Обмен данными идет. Все прекрасно. Настроил keep alive. Но Кеер alive не работает. Отключаешь кабель и ничего не происходит, как-будто все нормально. Ни одной ошибке ни во флагах ни в состояниях. И Send keep тоже самое. Кто-нибудь с этим сталкивался. И как решить эту проблему? Заранее спасибо))))
  13. Здравствуйте, у меня такая проблема: хочу организовать программное прерывание. С аппаратном нет проблем, а вот как сделать программное? Программное прерывание - функция, которая также вызывается как аппаратное прерывание только вызывается по флагу из главной программы. Я нашел что-то: #include "sys/alt_exceptions.h" -- Вопрос то ли это то что мне надо или нет? Если это то, тогда: Правильно я понимая что параметр CAUSE в функции alt_exception_result handler ( alt_exception_cause cause alt_u32 addr alt_u32 bad_addr ); равен 3 - Инструкция системного прерывания. Тогда чему равен параметр addr? и bad_addr ? И как вообще например вызвать программное прерывание, если допустим в главной программе какая-то переменная получила нужное значение? Буду очень признателен если кто-нибудь скинет какой-нибудь кусок прогаммы Заранее спасибо))))
  14. а это как-то можно изменить? настройки где-то?
  15. выкладываю скрины двух реализаций: 1) память 49Кбайт 2) память 50Кбайт P.S. сделан только SOPC. никаких остальных схем. Процессор самый слабый. Последние 2 фото - resource utilization by entity - для 50Кбайт
×
×
  • Создать...