wasp 0 22 апреля, 2008 Опубликовано 22 апреля, 2008 · Жалоба Прошу прощения за глупый вопрос. Пытаюсь разобраться с программой для РIС(пример передачи пакета данных для RF-модуля FSK-передатчика http://www.hoperf.com/pdf/RF02B.pdf ). Сама программка находится здесь: http://www.hoperf.com/pdf/RF02_code.pdf стр. 11-16. И там на стр. 15 вот такой фрагмент кода: Не подскажите зачем там эти две строчки: ........ while (!nIRQ); while (nIRQ); ......... что бы это значило? :05: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 22 апреля, 2008 Опубликовано 22 апреля, 2008 · Жалоба Видимо автор таким образом пытался импульс какой-то отследить, переход 0->1->0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wasp 0 22 апреля, 2008 Опубликовано 22 апреля, 2008 · Жалоба Видимо автор таким образом пытался импульс какой-то отследить, переход 0->1->0. спасибо за быстрый ответ! с СИ знаком поверхостно, поэтому не могу сообразить. Почему за обоими операторами стоит ";"? То есть условие в скобках выполняется, но за этим не следует ничего... Программа переходит на следующую строку так и так. Или я ошибаюсь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tazik 0 22 апреля, 2008 Опубликовано 22 апреля, 2008 · Жалоба спасибо за быстрый ответ! с СИ знаком поверхостно, поэтому не могу сообразить. Почему за обоими операторами стоит ";"? То есть условие в скобках выполняется, но за этим не следует ничего... Программа переходит на следующую строку так и так. Или я ошибаюсь? Синтаксис языка такой. Пока условие верно, перехода на следующую строку не происходит. То же самое, что и while(nIRQ) {чего-то делаем}; - просто скобки опущены, т.к. во время ожидания все равно ничего не выполняется Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wasp 0 22 апреля, 2008 Опубликовано 22 апреля, 2008 · Жалоба Синтаксис языка такой. Пока условие верно, перехода на следующую строку не происходит. То же самое, что и while(nIRQ) {чего-то делаем}; - просто скобки опущены, т.к. во время ожидания все равно ничего не выполняется Вот оно что! Ну тогда все становится на свои места, спасибо за ликбез! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arttab 0 22 апреля, 2008 Опубликовано 22 апреля, 2008 · Жалоба а nIRQ должны быть объявлены как изменяемые из вне. можете сами это указать, а именно эти указаны черех структуру тип регистр. так в iarе сделано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wasp 0 25 апреля, 2008 Опубликовано 25 апреля, 2008 · Жалоба в продолжение темы... прошил и подключил PIC16F676, что был под рукой к передатчику RF02. программа доходит как раз до этого места "while (!nIRQ); while (nIRQ);" и останавливается. симулировал программку с пом. Протеус, если посадить на эту ногу генератор импульсов, все работает... осциллографа под рукой нет, но видимо с RF02 не приходит этот самый пресловутый nIRQ. в каком случае он должен генерироваться, в даташите не нашел. да, в приведенной в даташите программе используется кварц на 10МГц, а у меня от внутреннего генератора - 4 МГц. Может от этого сбоит? понимаю что вопрос типа "кто бы за меня разобрался?", но ничего в голову не лезет... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vank 0 26 апреля, 2008 Опубликовано 26 апреля, 2008 · Жалоба Привет! И мне интересует этая програма. Я покупал из Китаии RFM12BP и RFM12B. Я работаю под ассемблера и не могу разобраться с програмой на C, каторая находиться сдесь во файле RFM12B_manual.pdf стр.32-43. Можно ли кто то компилировать это програма и выслать код на ASM? Спасибо вам! RFM12B_manual.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tazik 0 26 апреля, 2008 Опубликовано 26 апреля, 2008 · Жалоба в продолжение темы... прошил и подключил PIC16F676, что был под рукой к передатчику RF02. программа доходит как раз до этого места "while (!nIRQ); while (nIRQ);" и останавливается. симулировал программку с пом. Протеус, если посадить на эту ногу генератор импульсов, все работает... осциллографа под рукой нет, но видимо с RF02 не приходит этот самый пресловутый nIRQ. в каком случае он должен генерироваться, в даташите не нашел. да, в приведенной в даташите программе используется кварц на 10МГц, а у меня от внутреннего генератора - 4 МГц. Может от этого сбоит? понимаю что вопрос типа "кто бы за меня разобрался?", но ничего в голову не лезет... Сам не работал (. Но судя по документации IRQn выдается при приеме очередного бита данных в том случае, если при конфигурации был установлен бит ebs. (В примере он устанавливается - RFXX_WRT_CMD(0xC220)). Кстати, есть микросхема IA4222 - практически 1 в 1. Даже датащит совпадает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wasp 0 28 апреля, 2008 Опубликовано 28 апреля, 2008 · Жалоба Сам не работал (. Но судя по документации IRQn выдается при приеме очередного бита данных в том случае, если при конфигурации был установлен бит ebs. (В примере он устанавливается - RFXX_WRT_CMD(0xC220)). Кстати, есть микросхема IA4222 - практически 1 в 1. Даже датащит совпадает tazik, спасибо за ответ. Но не совсем понятно, если IRQn выдается при приеме очередного бита данных, то как пройдет самый первый бит? В приведенном выше фрагменте программа останавливается и ждет первого импульса IRQn. vank, как все налажу, вышлю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RCray 0 28 апреля, 2008 Опубликовано 28 апреля, 2008 · Жалоба Синтаксис языка такой. Пока условие верно, перехода на следующую строку не происходит. То же самое, что и while(nIRQ) {чего-то делаем}; - просто скобки опущены, т.к. во время ожидания все равно ничего не выполняется while(nIRQ) {;} Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tazik 0 28 апреля, 2008 Опубликовано 28 апреля, 2008 (изменено) · Жалоба Но не совсем понятно, если IRQn выдается при приеме очередного бита данных, то как пройдет самый первый бит? Микросхема так работает, что при передаче команд, синхронизация осуществляется от сигнала SCK контроллера. А при передаче данных - от IRQn передатчика (при установленном бите ebs). Еще в RF02.pdf на странице 16 помимо диаграмм есть фраза: "Do not send CLK pulses with TX data bits, otherwise they will be interpreted as commands". То есть при настройке передатчика импульса IRQ и не должно быть. в приведенной в даташите программе используется кварц на 10МГц, а у меня от внутреннего генератора - 4 МГц. Может от этого сбоит? Скорее всего, Вы правы и дело именно в этом. Длительность лог. 1 IRQn равна 1,6 мкс. 4МГц + PIC - получаем, что одна команда на asm (например, считывание состояния ножки) выполняется за 1мкс. А здесь программа вообще на Си - трудно гарантировать надежную фиксацию импульса. Видимо, без осциллографа не обойтись. Можно еще попробовать команду чтения статуса 0xCC00, во втором байте передатчик будет передавать свое состояние по линии IRQn, а синхронизация его передачи будет происходить от линии CLK контроллера Изменено 28 апреля, 2008 пользователем tazik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wasp 0 28 апреля, 2008 Опубликовано 28 апреля, 2008 (изменено) · Жалоба Микросхема так работает, что при передаче команд, синхронизация осуществляется от сигнала SCK контроллера. А при передаче данных - от IRQn передатчика (при установленном бите ebs). Еще в RF02.pdf на странице 16 помимо диаграмм есть фраза: "Do not send CLK pulses with TX data bits, otherwise they will be interpreted as commands". То есть при настройке передатчика импульса IRQ и не должно быть. Скорее всего, Вы правы и дело именно в этом. Длительность лог. 1 IRQn равна 1,6 мкс. 4МГц + PIC - получаем, что одна команда на asm (например, считывание состояния ножки) выполняется за 1мкс. А здесь программа вообще на Си - трудно гарантировать надежную фиксацию импульса. Видимо, без осциллографа не обойтись. Можно еще попробовать команду чтения статуса 0xCC00, во втором байте передатчик будет передавать свое состояние по линии IRQn, а синхронизация его передачи будет происходить от линии CLK контроллера Все верно 1.6 мкс при 4 МГц - нереально. Для начала надо попробовать с 10 Мгц, если не пойдет, тогда уже искать причину... и еще раз вопрос по диаграмме. из нее если я правильно понимаю, следует, что nIRQ включается при ebs=1, Ho после установки бита еа=1. но какое отношение имеет этот бит к nIRQ - непонятно... Power Management Command C000h: Изменено 28 апреля, 2008 пользователем wasp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tazik 0 28 апреля, 2008 Опубликовано 28 апреля, 2008 (изменено) · Жалоба из нее если я правильно понимаю, следует, что nIRQ включается при ebs=1, Ho после установки бита еа=1. Давайте, наверное, перепишем следующим образом: ... nIRQ включается при ebs=1, Ho после включения усилителя мощности (бит ea) Действительно, если усилитель передатчика отключен, то какой смысл передавать данные. По крайней мере мне так кажется. :07: Еще из описания не понятно, в каком случае работает передача по FSK, а в каком - по SDI. Вроде бы, никакого переключения не делается. Может сделать ход конем? - Поступить грубо и извращенно, удлинив IRQn с помощью интегрирующей RC цепочки? Зависит от степени азарта и нетерпения :) Изменено 28 апреля, 2008 пользователем tazik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wasp 0 28 апреля, 2008 Опубликовано 28 апреля, 2008 · Жалоба Давайте, наверное, перепишем следующим образом: ... nIRQ включается при ebs=1, Ho после включения усилителя мощности (бит ea) Действительно, если усилитель передатчика отключен, то какой смысл передавать данные. По крайней мере мне так кажется. :07: спасибо, немного прояснилось. Может сделать ход конем? - Поступить грубо и извращенно, удлинив IRQn с помощью интегрирующей RC цепочки? Зависит от степени азарта и нетерпения :) нетерпение уже притупилось попробую с кварцем на 10 МГц - отпишусь :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться