|
|
  |
ATTINY2313 и UART, ATTINY2313 и UART |
|
|
|
Mar 31 2008, 11:13
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(jin_jin @ Mar 31 2008, 13:00)  то что делит на 8 это видно по DIV Когда всякие странности возникают - играйтесь со скоростью ком порта на компе. Понижайте, повышайте, до тех пор пока не словите то, что ожидается. Имея реальную и желаемую скорости, не трудно будет найти насколько МК отстает / опережает. Цитата а как узнать что там 1 или 0 в этом фузе Простите, а чем вы шьете ваш MK? Вот через то, что шьете и можно узнать.
|
|
|
|
|
Mar 31 2008, 12:47
|
Участник

Группа: Новичок
Сообщений: 29
Регистрация: 13-06-05
Пользователь №: 5 967

|
Цитата(jin_jin @ Mar 31 2008, 15:38)  /* Set frame format: 8data, 2stop bit */ UCSRC = (1<<USBS)|(3<<UCSZ0); В приемной программе надо не забыть указать 2 стопа. В конфиге проекта похоже надо указать 4 Мгц.
|
|
|
|
|
Mar 31 2008, 13:26
|

Участник

Группа: Участник
Сообщений: 65
Регистрация: 15-02-08
Пользователь №: 35 071

|
Извините не так понял точно в таблице 25 сейчас попробую Вот это теперь приходит при настрйк5е порта 9600 000042 16:16:05.953 FE FF FE þÿþ 000043 16:16:06.531 FE FE FE þþþ 000044 16:16:07.093 FE FF FE þÿþ 000045 16:16:07.671 FE FF FE þÿþ может я не правильно отправляю USART_Transmit(0x50); delay_ms(100); USART_Transmit(0x51); delay_ms(100); USART_Transmit(0x52); УРАААА  заработало из за не внимательности в настройке Baud отослал USART_Init(25); а надо USART_Init(0x25); теперь отсылаю while (1) { delay_ms(1000); USART_Transmit('A'); delay_ms(100); USART_Transmit('B'); delay_ms(100); USART_Transmit('C'); delay_ms(100); USART_Transmit(55); delay_ms(100); USART_Transmit(99); }; и вот что в ком порте вижу 000104 16:25:46.953 41 42 43 37 63 ABC7c 000105 16:25:47.609 41 42 43 37 63 ABC7c 000106 16:25:48.281 41 42 43 37 63 ABC7c 000107 16:25:48.937 41 42 43 37 63 ABC7c 000108 16:25:49.609 41 42 43 37 63 ABC7c 000109 16:25:50.281 41 42 43 37 63 ABC7c 000110 16:25:50.937 41 42 43 37 63 ABC7c 000111 16:25:51.609 41 42 43 37 63 ABC7c 000112 16:25:52.265 41 42 43 37 63 ABC7c 000113 16:25:52.937 41 42 43 37 63 ABC7c 000114 16:25:53.593 41 42 43 37 63 ABC7c 000115 16:25:54.265 41 42 43 37 63 ABC7c 000116 16:25:54.937 41 42 43 37 63 ABC7c 000117 16:25:55.593 41 42 43 37 63 ABC7c 000118 16:25:56.265 41 42 43 37 63 ABC7c 000119 16:25:56.921 41 42 43 37 63 ABC7c 000120 16:25:57.593 41 42 43 37 63 ABC7c 000121 16:25:58.250 41 42 43 37 63 ABC7c 000122 16:25:58.921 41 42 43 37 63 ABC7c Только теперь ком порт настроен на 14400 ставлю 9600 байты теряются можете мне это объяснить
|
|
|
|
|
Apr 1 2008, 11:03
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(jin_jin @ Apr 1 2008, 13:50)  Мне надо пекредавать на скорости на 300 600 1200 Baud. Что мне надо записать в UBRP на эти скоростя? Кварц 4 Mhz Формула простая UBRR= (Fosc / ( 16 * baud) ) - 1 для U2X=0 UBRR= (Fosc / ( 8 * baud) ) - 1 для U2X=1 Для Вашего случая Fosc= 4000000, baud= 300 или 600 или 1200
|
|
|
|
|
Apr 1 2008, 11:07
|
Группа: Новичок
Сообщений: 13
Регистрация: 1-11-07
Пользователь №: 31 948

|
Цитата(jin_jin @ Mar 31 2008, 15:39)  Дело в том что под руками нет пока осцилографа отдал на поверку. Как еще можно решить проблему.
Вроде стоит элементарная задача передать в порт 3 байта а решить уже не могу 3 день.
И еще вопрос правильно ли я указа скорость
// USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: Off // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00; UCSRB=0x48; UCSRC=0x06; UBRRH=0x00; UBRRL=0x19; и с таймерами ничего не надо делать?? Попробуй вместо : UBRRH=0x00; UBRRL=0x19; Отослать UBRRH=0x00; UBRRL=0x1А;- это немного изменит делитель Мне помогло
|
|
|
|
|
Apr 1 2008, 11:13
|
Группа: Новичок
Сообщений: 13
Регистрация: 1-11-07
Пользователь №: 31 948

|
пардон  не заметил второй страницы.
Сообщение отредактировал Well_Di - Apr 1 2008, 11:13
|
|
|
|
|
Apr 4 2008, 08:25
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(jin_jin @ Apr 4 2008, 10:51)  с этой формулой не могу понять что за коэфициент N 1 8 64 256 Это - прескалер (выбираем значение N=1) Цитата(jin_jin @ Apr 4 2008, 10:51)  Что надо занести в настройки для частоты 36кГц TCCR0A TCNT0 OCR0A TCCR0A(В) - No prescaling, CTC mode, Toggle OC0A (какие значения регистров А и В этому соответcтвуют - определитесь сами) TCNT0 - не принципиально OCR0А - 0x37 (OCR0L= 0x37 OCR0H=0) , что для кварца 4МГц даёт 36036Гц P.S. Забыл, что таймер 0 - восьмибитный...
|
|
|
|
|
Apr 7 2008, 12:37
|

Местный
  
Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530

|
Цитата(jin_jin @ Apr 7 2008, 13:12)  Ну вроде проблема решилась. Заработало через всю комнату причем IRDA повернута задней частью. ПОМЕНЯЛ IRDу поставил не большую а маленькую с круглой линзой. Стало стабильно принимать на расстоянии 4 метра (вся комната) Извиняюсь, а какой транзистор для управления вы поставили? Может тока через ик диод не хватает? Может и у Вас будет дальность как у Панасоника. Я бы поставил КТ972 или ему подобный и поигрался бы с током через диод. В лучшем случае, учитывая ваши скоростя подошол бы полевик с низким сопротивлением канала сток - исток.
Сообщение отредактировал sKWO - Apr 7 2008, 12:43
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
Apr 22 2008, 12:37
|
Группа: Новичок
Сообщений: 1
Регистрация: 22-04-08
Пользователь №: 37 000

|
День добрый, уважаемые! Как правильно выставить фьюзы для настройки Attiny2313 , внешний кварц подключен на 11.0592 МГц. Прошиваю AvReal+STK200. Попытка прошить так: avreal32.exe +tiny2313 -p1 -as -fcksel=f, ckdiv8=1,sut=1 -e -w -v -o11.0592MHZ hexfile.hex -n pause=null все-равно не дает правильную частоту. а пример взят отссюда http://caxapa.ru/36834.html?todo=full , правда непонятно как правильно выставить частоту осциллятора. Заранее спасибо.
|
|
|
|
|
Apr 22 2008, 21:09
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Катушка @ Apr 22 2008, 14:37)  Попытка прошить так: avreal32.exe +tiny2313 -p1 -as -fcksel=f, ckdiv8=1,sut=1 -e -w -v -o11.0592MHZ hexfile.hex -n pause=null все-равно не дает правильную частоту. Предположу что параметр "-o" указывает AVReal'у на какой частоте работает MK, в соответсвии с чем AVReal пытается максимально быстро клокать SPI. Но МК у вас не работает на частоте кварца, до тех пор пока вы не установите фузы CKSEL3..0 / CKDIV в "1111 / 1". По умолчанию t2313 тактируется от внутреннего осциллятора 1Mhz, иногда попадаются экземпляры с заводскими настройками на 500Khz. Что в разы ниже чем клок которым AVReal будет пытаться общаться с вашим МК. Как результат работать ничего и не будет. Поэтому в опции -o указывайте частоту не более минимальной частоты на которой может работать МК (в данном случае это 500Khz). Еще лучше перестраховаться и поделить эту минимальную частоту на 4, т.е. 125Khz. Понизив частоту клока AVReal'a, вы однозначно выиграете в качестве связи с МК, а проиграть можно только в скорости программирования, но для таких чипов как t2313 с 2k флеша, что 125kHz, что 5Mhz, что 11Mhz, программироваться 2kb будут все ту же 1 секунду.
|
|
|
|
|
Apr 26 2008, 23:14
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 17-12-07
Пользователь №: 33 346

|
Цитата(defunct @ Apr 23 2008, 00:09)  По умолчанию t2313 тактируется от внутреннего осциллятора 1Mhz Вообшет у тини2313 дефолтный skel = 0100 а значит частота 8 мгц.
--------------------
Байки промышленного ремонтника в цикле рассказов Последний Герой Труда. Ну и, кроме того, в моём блоге еще есть что почитать.
|
|
|
|
|
Apr 28 2008, 06:45
|
Частый гость
 
Группа: Свой
Сообщений: 147
Регистрация: 4-05-06
Пользователь №: 16 779

|
Цитата(DI HALT @ Apr 27 2008, 03:14)  Вообшет у тини2313 дефолтный skel = 0100 а значит частота 8 мгц. Не совсем, еще запрограммирован CKDIV8, соответственно получается 1 МГц
|
|
|
|
|
Apr 28 2008, 07:41
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 17-12-07
Пользователь №: 33 346

|
Цитата(dx40 @ Apr 28 2008, 09:45)  Не совсем, еще запрограммирован CKDIV8, соответственно получается 1 МГц А ну да, вы правы. Просто у меня уже рефлекс переписать регистры делителей программно в самом начале, так что данный фуз меня не волнует обычно.
--------------------
Байки промышленного ремонтника в цикле рассказов Последний Герой Труда. Ну и, кроме того, в моём блоге еще есть что почитать.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|