Jump to content

    

Petka

Свой
  • Content Count

    1438
  • Joined

  • Last visited

Everything posted by Petka


  1. Проблема с TWI

    1) Адреса должны совпадать. 2) В прерывании вы ДОЛЖНЫ обрабатывать все события, не только $60. у меня, например сеть висла, если я не обрабатывал $F8 и $00. 3) успехов!
  2. Проблема с TWI

    Зачем? А TWINT не надо сбрасывать(в слэйве) при настройке, и в процессе работы (а также при выходе из обработчика прерывания)? Пока что у меня мастер зависает при попытке что-либо передать на любой из слэйвов... А слэйвы работают. 1) конктретизуй вопрос. Зачем адрес записывать или зачем сдвигать на бит его. 2) мастер зависает скорее всего НЕ дожидаясь ACK от устройства. 3) TWINT надо сбрасывать только в обработчике прерываний, после того, как необходимая реакция на прерывание будет выполнена.
  3. Проблема с TWI

    НАСТОЯТЕЛЬНО рекомендую перечитать информацию о I2C и TWI в частности. в неккоторых AVR'ках присутствует АППАРАТНЫЙ I2C~TWI. это обозначает что большинство действий с протоколом возложено на плечи железа, например генерация NACK(а точнее отсутствие генерации ACK) если адрес не совпал... т.е. ваши действия по работе с TWI (slave): 1) на каждое устройство придумать УНИКАЛЬНЫЙ адрес из диапазона 1-127. (0 адрес используется для массовых сообщений его выставлять НЕ надо). 2) записать адрес в регистр TWAR выбранный адрес сдвинутый на один бит влево. 3) настроить контрольный регистр TWI (TWСR) TWIE=1, TWEN=1, TWEA=1. 4) ждать прерывание. 5) при прирывании в зависимости от регистра TWSR выполнить соответствуюшие действия (какие именно расписано в даташите) 6) поблагодарить меня за то что научил уму-разуму =) 7) получить пилюлей от IgorKossak за п. 6) :twak:
  4. Проблема с TWI

    сделайте как полагается, по своим прерываниям. а потом можете говорить что TWI не работает. Мне кажется из-за этих разрешений-запрещений шина и виснет.
  5. Проблема с TWI

    ИМХО вы не разобрались с протоколм I2C. Зачем вы ведёте линии разрешения если в протокол заложена АДРЕСАЦИЯ? вероятно у вас с этим и глюки связаны. Слэйв, адрес которого не совпадает, с адресом, который передаётся по шине НИЧЕГО С ШИНОЙ ДЕЛАТЬ НЕ ДОЛЖЕН.
  6. А я смоделировал ск. ср-мне понравилось.А можно ли у него сдвигать частоту среза? Частота среза не совсем верное понятие для "ск.ср." т.к. это является режекторным фильтром. Как я раньше говорил этот фильрт "вырезает" частоты, период которых кратен длине окна.
  7. AVRvs PIC

    Оффтопик и разжигание межнациональной розни! а если серьёзно, пользуйтесь поиском по форуму. тема избита.
  8. Пишем сразу в три ячейки (причем разнесенные в пространстве памяти), читаем из трех ячеек, принимаем решение - прочитали три одинаковых числа - ОК, прочитали два одинаковых, одно неодинаковое - принимаем решение в пользу двух одинаковых. Прочитали все три неодинаковых - кричим "караул!" а ещё лучше мажорировать побитно!
  9. AVR GCC

    Ни с одним из ключей c89/c99/gnu89/gnu99 ссылки и анонимные объединения не работают...Полччается что же, WinAvr на работает по стандарту С++? Ржу =) убери ";" в строке с #define а то компилятор пытается скомпилировать "Var1; = 45.8;"!
  10. Идея-то хорошая, но не совсем прозрачная... где ты будешь хранить информацию о сбойных ячейках? а если и эти ячейки будут сбоить? много неочевидного =) у меня идея проще: писать во все ячейки по очереди, например 1 байт пишием, а за ним порядковый номер записи, таким образом можно увеличить количество перезаписей в (объём_eeprom/2) раз.
  11. AVR GCC

    Как это не работает?! Такого быть не может, потому-что такого не может быть! при компиляции везде после самого #define все "Var2" ЗАМЕНЯЮТСЯ на Var1. Если не работает Var2, значит и не работает Var2! Привнедите полный код, вероятно у вас ошибка.
  12. В общем случае медианный случай не поможет. Медианка помогает избавиться от импульсных помех, но от насаженного синуса она не выручит. Больше того, синус она наоборот оставит =)
  13. Математики на эту тему говорят что интеграл синуса по периоду(а так же кратным периоду) равен нулю!!! отсюда вывод: 1) что если усреднить значения сигна по времени 20мс, то вы избавитесь от наводок 50Гц, 100 Гц, 200Гц и.т.д. 2) количество выборок за период 20мс надо сделать минимум 2 а лучше 4 (это против 100Гц). =). Математика полезная штука, особо в нашей работе =)
  14. Причём тут RXD и TXD?! открой даташит на мегу 64 найди где там SPI порт и подключай, и прот ресет не забудь Перед тем, как писать ерунду - может быть стоит даташит прочесть? Это кому?! дай вырезку из даташита, ни одна мега по UARTу не программируется, без дополнительных на то причин а имено програматора. Для программирования SPI и JTAG (также для отладки) интерфейсы. Мега128 и скорее всего М64 программируются через пины: Table 128. Pin Mapping SPI Serial Programming Symbol Pins I/O Description MOSI (PDI) PE0 I Serial data in MISO (PDO) PE1 O Serial data out SCK PB1 I Serial clock читаем еще даташит: • PDO/TXD0 – Port E, Bit 1 PDO, SPI Serial Programming Data Output. During Serial Program Downloading, this pin is used as data output line for the ATmega128. TXD0, UART0 Transmit pin. • PDI/RXD0 – Port E, Bit 0 PDI, SPI Serial Programming Data Input. During Serial Program Downloading, this pin is used as data input line for the ATmega128. RXD0, USART0 Receive Pin. Receive Data (Data input pin for the USART0). When the USART0 receiver is enabled this pin is configured as an input regardless of the value of DDRE0. When the USART0 forces this pin to be an input, a logical one in PORTE0 will turn on the internal pull-up. вывод: ISP ещё не значит SPI =)
  15. Адреса в EEPROM

    Конечно можно, если вам действительно это нужно (например для чтения калибровочного байта, записанного в конкретный адрес, например с помошью AVREAL, с последующей записью его в OSCCAL). Делается это так: eeprom unsigned char dummy; // заводим переменную, зарезервировав память. (на всяк случай =) ) unsigned char eeprom *ep; .......... .......... .......... ep=0; // сюда записываем собственно адрес. OSCCAL=ep[0];
  16. Да, согласен, за 1,5$ впечатляет. Но это все если надо все сделать железно. На МК, мое мнение, все же гибче реализовать. Если, конечно, эта гибкость востребована в проекте. интересно и где вы ЭТО собираетесь за 1,5$ купить?
  17. Проблема с TWI

    Помоему, после передачи третьего байта Вам нужно давать STOP. Не обязательно выдавать STOP, необходимо выдать новый START+SLA-R. недавно боролся с slave-mode TWI. после того, как сделал всё по datasheet, всё прекрасно заработало. если надо могу поделиться кодом на CV для m16.
  18. общее решение: подаёшь питание через диод, так же заводишь его на прерывание. как только сработало шлёшь пакет что отрубился.
  19. twi

    TWI это I2C. Ищи в хэлпе эти слова и будет тебе Щастье =) Появятся вопросы по существу спрашивай.
  20. 1. Скорее всего в "5 проводках" причина несовпадения прочитанных данных. решить проблемму можно попробовав уменьшить скорость программирования (см. ключи AVREALа). или спаяв нормальный программатор. 2. Хекс файл содержит информайию в ХЕКС представлении,т.е. на один байт МИНИМУМ 2 символа, не считая контрольных сумм, адресов. переносов строк, и т.п.
  21. Нееее! Ты не понял, хочешь производственного процесса, покупай за мегабабки мегапрограмматоры, а для дома, можно "самопальным", но дешёвым и удобным, пусть и глючным пользоваться =) Сам же предлагал не путать тёплое с мягким. Очевидно, что нужно предусмотреть возможность настроить программатор как "стандартный". Глупо покупать несколько программаторов, которые схемотически почти совпадают, но прошивают разные вещи. Как раз в этой теме и развивается мысль, создания с минимальными затратами программатора, который покрывает достаточно большой круг СХЕМОТЕХНИЧЕСКИХ АНАЛОГОВ (во всех есть МК, выходные буфера, интерфейс с ПК, пара светодиодиков, и т.д.).
  22. Целью как раз является сделать программатор, который можно будет использовать в домашних условиях, простой и расширяемый!. Зачем иметь 10 различных программаторов, когда можно обойтись одним? Кроме того, на сегодняшний день нет чёткого ответа на вопрос любителя "с какого программатора мне стоит начать, что бы недорого и всё что мне понадобиться он умел-бы шить?" (раньше ответ более-менее существовал: "байтбластер", но производители материских плат уже расстаются с LPT портом, LPT порт геморно использовать под виндой, мощность и надёжность уже не те. и т.д.). Теперь про фирменное: сколько ОНО стоит? Конечно же лучше собрать своё, но что? По поводу корпуса: 1) согласен что тесниться не имеет смысла. 2) пришла интересная мысль, самый дешёвый и более менее стандартный корпус - бытовая мыльница, любой любитель может без проблем в любом захолустье его найти. соответственно размеры должны быть не более 50*80.
  23. Не путайте паралельный режим с последовательным: В паралельном есть жёсткие требования на "одновременность" прохождения ВСЕХ сигналов по кабелю, иначе значение может "защёлкнуться" раньше прихода последнего бита. Поэтому длина кабелей для паралельной передачи на порядок меньше =(
  24. Решил "приподнять" тему. Все послеотпускные авралы давно закончились =) из пожеланий: 1) возможность поместить плату в какой-нибудь стандартный корпус 2) когда программатор подцеплен, что бы можно было мониторить ножки контроллера, к которым он подцеплен. как-никак некоторая полезность при отладке =)
  25. Собственно вопрос: какие недостатки есть у этой микросхемы? какие особенности? И вообще хоть кто-нибудь её использовал?