Сергей Борщ 119 27 ноября, 2008 Опубликовано 27 ноября, 2008 · Жалоба но может вместо одного можно как-то использовать BSL? Или это глупая версия?Нет, почему же. Вот в соседней ветке ссылка на пример реализации. Только не сам BSL (BSL-это программа внутри процессора), а программный UART (точно такой же, какой используется и в BSL). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 28 ноября, 2008 Опубликовано 28 ноября, 2008 · Жалоба А вот такой вопрос - для еще одной версии недоделанного девайса, получается нужно три uart :05: Т.е. будет три адресата. таких кристаллов не нашла, но может вместо одного можно как-то использовать BSL? Или это глупая версия? многопроцессорный формат разбирать сейчас не очень хочется... :05:Если интерфейс внешний, то для не слишком высокой скорости приемопередачи возможно сделать программно-аппаратный на TimerA или чисто программный UART. Сергей Борщ, уже выше привел ссылку на тему где это обсуждается. В той теме я давал ссылки и на соответствующий application note и на его перевод. Если же интерфейс у вас чисто внутренний для связи внутри платы/устройства, то рассмотрите возможность применения синхронного интерфейса (SPI, например). Потому что в модуле USCI (который имплементирован в МК серии MSP430F2xxx) имеется возможность одновременного использования двух интерфейсов одного модуля: одного асинхронного (UART/IrDA) и одного синхронного (SPI/I2C) или двух синхронных (SPI/I2C). Аппаратная реализация интерфейса I2C что в модуле USART, что в USCI довольно заморочена, к тому же я сам его ни разу на деле не использовал (в смысле аппаратную поддержку I2C в MSP430, чисто программный I2C-master делал) поэтому из синхронных интерфейсов, имеющихся в MSP430, могу рекомендовать пока только SPI. :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aag 0 28 ноября, 2008 Опубликовано 28 ноября, 2008 · Жалоба в MSP430F2617 четыре уарта на борту, можно его попробовать. Причем распиновка у 64-пинового корпуса такая же как в F149 или F169 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 28 ноября, 2008 Опубликовано 28 ноября, 2008 · Жалоба в MSP430F2617 четыре уарта на борту, можно его попробовать. Причем распиновка у 64-пинового корпуса такая же как в F149 или F169Вы ошибаетесь. В даташите конечно написано, что там четыре USCI модуля, но именно как UART (Universal Asynchronous Receiver / Transmitter) можно использовать только два, как я и описал в своем предыдущем сообщении. И вообще деление на четыре модуля весьма условное. Я бы классифицировал их скорее как два модуля, каждый из которых содержит один USCI и один USI. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
msalov 0 28 ноября, 2008 Опубликовано 28 ноября, 2008 · Жалоба А вот такой вопрос - для еще одной версии недоделанного девайса, получается нужно три uart :05: Т.е. будет три адресата. таких кристаллов не нашла, но может вместо одного можно как-то использовать BSL? Или это глупая версия? многопроцессорный формат разбирать сейчас не очень хочется... :05: Возможно в тему http://tech.groups.yahoo.com/group/msp430/message/33745 Re: MSP430F417 UART You can call the asynchronous serial Receive-a-Character and Transmit-a-Character subroutines in the BSL of a MSP430F417 under the following conditions: (a) You must set up and use P1.0 as the serial output. (B) You must set up and use P1.1 as the serial input. © MCLK must be faster than 100*BAUD. For example, to use 9600b/s, you need to have MCLK>0.96MHz. (d) You need to set up the word at RAM 0x0202-0x0203 to [MCLK/BAUD]. For example, if MCLK=1MHz and BAUD=9600b/s, this word need to be 100 (0x0064). (e) You need to set up the word at RAM 0x0204-0x0205 to [(MCLK/BAUD)/2-30]. For example, if MCLK=1MHz and BAUD=9600b/s, this word need to be 20 (0x00). (f) You must set up TimerA to count in Continuous Mode. The counting rate should be the same as MCLK. (g) You can do either serial input or serial output. You cannot do both at the same time. (h) You cannot handle interrupts while doing either serial input or serial output. (i) You must use Even Parity. You have none, 1-byte or 2-byte block-checksum options. For the checksum options, do one of the followings: (1) If you do not want checksum, set R9 to 0x1000 or 0x1001 before you call the subroutines. The subroutines will change R9 from 0x1000 to 0x1001 and from 0x1001 to 0x1000. Thus subsequent calls do not need to set R9 again. (2) If you want a 1-byte XOR checksum, set R9 to 0 every time you call the subroutines. The subroutines will update a 1-byte checksum at 0x0212 and change R9 to 1. You need to initialize and read the checksum yourself. (3) If you want a 2-byte XOR checksum, set R9 to 0 when you initialize the checksum. The subroutines will update a 2-byte checksum at 0x0212-0x0213 and change R9 from 0 to 1 or from 1 to 0 to select which byte to update. You need to initialize and read the checksum yourself but you should not change R9. In addition to the above, to Receive-a-Character, you do the following: CLR R11 CALL #0x0F56 The character will be returned in R12. R11:BIT1 is an error flag. R5 is destroyed. RAM 0x0209 is destroyed. To Transmit-a-Character, you do the following instead: MOV.B [Character], R12 CALL #0x0EEA R11 is destroyed R5 is destroyed RAM 0x0207 is destroyed. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 29 ноября, 2008 Опубликовано 29 ноября, 2008 · Жалоба Потому что в модуле USCI (который имплементирован в МК серии MSP430F2xxx) имеется возможность одновременного использования двух интерфейсов одного модуля: одного асинхронного (UART/IrDA) и одного синхронного (SPI/I2C) или двух синхронных (SPI/I2C). Позанудствую:) i2c - не синхронный:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 29 ноября, 2008 Опубликовано 29 ноября, 2008 · Жалоба Позанудствую:) i2c - не синхронный:)Оба-на! Вносите определение синхронного интерфейса и вместе посмотрим, где I2C этому определению не соответствует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 29 ноября, 2008 Опубликовано 29 ноября, 2008 · Жалоба Позанудствую:) i2c - не синхронный:)Да-а-а? :07: А какой же тогда по-вашему? :cranky: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Daria 0 29 ноября, 2008 Опубликовано 29 ноября, 2008 (изменено) · Жалоба Если интерфейс внешний, то для не слишком высокой скорости приемопередачи возможно сделать программно-аппаратный на TimerA или чисто программный UART. Сергей Борщ, уже выше привел ссылку на тему где это обсуждается. В той теме я давал ссылки и на соответствующий application note и на его перевод. Если же интерфейс у вас чисто внутренний для связи внутри платы/устройства, то рассмотрите возможность применения синхронного интерфейса (SPI, например). Нет, интерфейс внешний. Смысл в чем - есть одна плата(управляющая), она принимает команды с компа, опрашивает компасный модуль и дальше посылает команду на поворотное устройство. Вот вся программа. Сначала поворотное устройство было "тупое", без внутреннего контроллера, управлялось оно просто импульсами тока заданной длительности - это не здорово. Теперь есть другое устройство, с собственным контроллером, ему достаточно просто отправить команду - и оно поедет, куда сказали :) Итого три абонента - комп, компас и поворотник. Насчет "не слишком высокой скорости приемопередачи "... :05: вот не знаю. какую можно реализовать на TimerA? Хотя бы 19200 можно? Ваши ссылки скачала, спасибо, буду разбираться. В понедельник ждите вопросов - не думаю, что все получится с первого раза Изменено 29 ноября, 2008 пользователем Daria Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 29 ноября, 2008 Опубликовано 29 ноября, 2008 · Жалоба Нет, интерфейс внешний. Смысл в чем - есть одна плата(управляющая), она принимает команды с компа, опрашивает компасный модуль и дальше посылает команду на поворотное устройство. Вот вся программа. Сначала поворотное устройство было "тупое", без внутреннего контроллера, управлялось оно просто импульсами тока заданной длительности - это не здорово. Теперь есть другое устройство, с собственным контроллером, ему достаточно просто отправить команду - и оно поедет, куда сказали :) Итого три абонента - комп, компас и поворотник.Как я понял у вас три различных устройства и все они независимо-автономные. Одно устройство (компас?) является т.с. "управляющим ретранслятором" и транслирует команды, переданные по технологическому каналу с PC на два других. Тип связи (асинхронный) уже определен и изменению не подлежит. Вам не хватает одного UART в вашем компасе для технологического канала. Я все правильно понял? Насчет "не слишком высокой скорости приемопередачи "... :05: вот не знаю. какую можно реализовать на TimerA? Хотя бы 19200 можно?Когда-то я "баловался" с приемопередатчиком IrDA на TimerA по мотивам тех же самых апликух производителя. Скорость 38400 получил довольно легко даже на заморачиваясь написанием функций на ASM. Реализовывал на Си. Так что 19200 при вашей тактовой (8МГц) можно тоже реализовать без особых затруднений. Только следует учесть, что связь будет полудуплексной. Если для технологического канала вам это не подходит, то используйте обычный UART, а к программно-аппаратному UART подключите устройство, которое не так критично к полудуплексной связи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 29 ноября, 2008 Опубликовано 29 ноября, 2008 · Жалоба Оба-на! Вносите определение синхронного интерфейса и вместе посмотрим, где I2C этому определению не соответствует. У меня нет определения, есть лишь какое-то смутное чувство, что он не синхронный:) Из-за задержек наверное... Хотя это можно рассматривать как синхронизацию с принимающей стороной... Может я и не подумамши ляпнул:) А что такое синхронный в вашем понимании? С чем синхронный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 29 ноября, 2008 Опубликовано 29 ноября, 2008 · Жалоба А что такое синхронный в вашем понимании? С чем синхронный?С тактовым сигналом. Это когда тактовый сигнал (SCLK) передается вместе с данными (SDAT) по каналу связи, а не восстанавливается из сигнала данных на приемной стороне. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 29 ноября, 2008 Опубликовано 29 ноября, 2008 · Жалоба Может я и не подумамши ляпнул:)Очень на это похоже Сергей Борщ вполне понятно пояснил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 29 ноября, 2008 Опубликовано 29 ноября, 2008 · Жалоба С тактовым сигналом. И тактовый сигнал (SCLK) передается вместе с данными (SDAT) по каналу связи, а не восстанавливается из сигнала данных на приемной стороне. А можно всё же определение синхронного интерфейса? Я что-то не нагуглил ничего. В описании i2c от Филипс не сказано, что интерфейс синхронный. Там упоминается синхронизация, но лишь в контексте арбитража шины при мультимастере. Очень на это похоже Сергей Борщ вполне понятно пояснил. Я въедливый:-) ЗЫ. Прошу прощения за офтопик. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 29 ноября, 2008 Опубликовано 29 ноября, 2008 · Жалоба Синхронный интерфейс это интерфейс в котором наряду с сигналом(ами) данных передается сигнал тактовой синхронизации. Если к обычным сигналам UART (RX и TX) добавить тактовый сигнал UCLK, то интерфейс тоже станет синхронным. Модуль в MSP430 не зря называется USART (Universal Synchronous/Asynchronous Receive/Transmit), т.к. у него имеется вход внешнего тактирования, который может использоваться для синхронизации как в режиме UART, так и в режиме SPI (slave). Кстати, двухпроводный синхронный интерфейс SSI с дифф. интерфейсом физической линии RS485/RS422 широко применяется в промышленных энкодерах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться