Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 23.02.2010, 00:09  
spballiance
Вид на жительство
 
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
spballiance на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

шпротеус 7,6
думаю, что все нормально... хотя виртуальный терминал так и не пашет, даже когда все общение происходит правильно.

у Kabron`а в примере терминал нормально работает
Реклама:
spballiance вне форума  
Непрочитано 23.02.2010, 00:13  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,564
Сказал спасибо: 701
Сказали Спасибо 4,334 раз(а) в 1,985 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

В моем примере скорость 115200 устанавливается в свойствах терминала только записью ручками. Чтобы в последующем не сбрасывалась в дефолт, поставьте галочку - отображать свойства как текст.
Kabron вне форума  
Непрочитано 23.02.2010, 00:19  
spballiance
Вид на жительство
 
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
spballiance на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

у меня 38400 8/2, читает всякую муть

не исключено, что асмовские обе неправильно сконфигурированы и 2 ошибки дают правильный результат

в асме
Код:
		; Set baud rate 38400
		ldi 	r16,0x19
		ldi 	r17,0
		out 	UBRRH, r17
		out		UBRRL, r16
		; Enable receiver and transmiter
		ldi 	r16,(1‹‹RXCIE)|(1‹‹RXEN)|(1‹‹TXEN)
		out 	UCSRB,r16
		; Set frame format: 8data, 2stop
		ldi 	r16, 0x0E
		out 	UCSRC,r16
в си

Код:
void USART_Init(void)
{
  UBRRH = 0;
  UBRRL = 0x19; //скорость обмена 38400 бод
  UCSRB = (1‹‹RXEN)|(1‹‹TXEN); //разр приема, разр передачи.
  UCSRC = (1‹‹USBS)|(1‹‹UCSZ1)|(1‹‹UCSZ0); //размер слова 8 разрядов
}
изменил в программах на 8/1 тип усарта - терминал вроде стал показывать нормально... но генератор молчит собака

Последний раз редактировалось spballiance; 23.02.2010 в 01:01.
spballiance вне форума  
Непрочитано 23.02.2010, 01:25  
spballiance
Вид на жительство
 
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
spballiance на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

точно 2 ошибки на асме дают правильное общение
итак поправил на 38400/8/1
сишный код в терминал валит то, что хочется, а генератор молчит

асмовский код валит в терминал белиберду, а все работает
spballiance вне форума  
Непрочитано 23.02.2010, 14:02  
spballiance
Вид на жительство
 
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
spballiance на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

все, сломал голову

прием на асме:
Код:
get_char:
		sbis 	UCSRA, RXC
		rjmp 	get_char

		in	r16,UDR			; get the byte
		ret				; and return
		
read_freq:
		rcall	get_char		; read bits 23..16
		mov	r26,r16
		rcall	get_char		; read bits 15..8
		mov	r25,r16
		rcall	get_char		; read bits 7..0
		mov	r24,r16
		ret

;
; Interrupt routine for incoming bytes on the RS232 link
;
	
RX_COMPLETE_INT:
		push	r16
		in 	r16,UDR
tx_1:
		cpi	r16,'s'		; 's' - frequency setting
		brne	tx_2
		rcall	read_freq		
		rjmp	tx_exit		

tx_2:	
		cpi	r16,'0'		; '0' - stop
		brne	tx_3
		mov	r17,r16
		rjmp	tx_exit		

tx_3:
		cpi	r16,'1'		; '1' - start
		brne	tx_4
		mov	r17,r16
		rjmp	tx_exit
; unknown command, just ignore it
tx_4:

tx_exit:
		pop	r16
		reti
отправка на си

Код:
USART_SendChar('1');
где

Код:
void USART_SendChar(unsigned char sym)
{
  while(!(UCSRA & (1‹‹UDRE)));
  UDR = sym;
}
дебаггер в асме показывает в приемнике "FF", а терминал в отправленном "31"

во второй прошивке на асме, которая нормально запускает генератор
вываливает в терминал 0х80, но нормально запускает генерацию при отправке "1"
Код:
		ldi	r16,'1'			; 
		rcall	send_char
где
Код:
send_char:
		push	r16			; save r16
send_c2:
		sbis 	UCSRA, UDRE
		rjmp 	send_c2

		pop	r16			; restore r16
		out	UDR,r16			; send char
		ret				; and return
инициализация

Код:
		; Set baud rate 38400
		ldi 	r16,0x19
		ldi 	r17,0
		out 	UBRRH, r17
		out		UBRRL, r16
		; Enable receiver and transmiter
		ldi 	r16,(1‹‹RXCIE)|(1‹‹RXEN)|(1‹‹TXEN)
		out 	UCSRB,r16
		; Set frame format: 8data, 1stop
		ldi 	r16, (1‹‹UCSZ1)|(1‹‹UCSZ0)
		out 	UCSRC,r16
Код:
void USART_Init(void)
{
  UBRRH = 0;
  UBRRL = 0x19; //скорость обмена 38400 бод
  UCSRB = (1‹‹RXEN)|(1‹‹TXEN); //разр приема, разр передачи.
  UCSRC = (1‹‹UCSZ1)|(1‹‹UCSZ0); //размер слова 8 разрядов
}

компилятор си делает так. по регистрам все аналогично асму
Код:
_USART_Init:
;  UBRRH = 0;
	LDI  R30,LOW(0)
	OUT  0x2,R30
;  UBRRL = 0x19; //скорость обмена 38400 бод
	LDI  R30,LOW(25)
	OUT  0x9,R30
;  UCSRB = (1‹‹RXEN)|(1‹‹TXEN); //разр приема, разр передачи.
	LDI  R30,LOW(24)
	OUT  0xA,R30
;  UCSRC = (1‹‹UCSZ1)|(1‹‹UCSZ0); //размер слова 8 разрядов
	LDI  R30,LOW(6)
	OUT  0x3,R30
;}
	RET
;
делал ассемблерную вставку инициализации усарта в си от рабочего асмовского передатчика - результат тот же: не реагирует

Последний раз редактировалось spballiance; 23.02.2010 в 20:50.
spballiance вне форума  
Непрочитано 23.02.2010, 23:09  
spballiance
Вид на жительство
 
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
spballiance на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

RTFM CKDIV8 отключать надо при симуляции
spballiance вне форума  
Непрочитано 24.02.2010, 00:29  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,564
Сказал спасибо: 701
Сказали Спасибо 4,334 раз(а) в 1,985 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

Да и не только при симуляции
Kabron вне форума  
Непрочитано 24.02.2010, 01:37  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

Сообщение от spballiance Посмотреть сообщение
; main loop
LOOP1: add r28,r24 ;1
. . . . . . . . . . . . . . . .
rjmp LOOP1 ;2 =› 13 cycles
[/CODE]
Только сейчас обратил внимание, что у вас главный цикл занимает 13 тактов, а смена частоты прерывает генерацию. Я делал цикл на 10 тактов и в нём приём новой частоты по rs232, и всё это без остановки генерации.
=GM= вне форума  
Непрочитано 24.02.2010, 02:03  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,564
Сказал спасибо: 701
Сказали Спасибо 4,334 раз(а) в 1,985 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

А уменя цикл на 7 тактов при 32 разрядах и настройке по RS
Хотя, честно говоря, не подозреваю, как можно сменить установку не прерывая генерации.
=GM=, поделитесь?

Последний раз редактировалось Kabron; 24.02.2010 в 03:20.
Kabron вне форума  
Непрочитано 24.02.2010, 14:23  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

У меня тоже оказался 32-разрядный аккумулятор и 7 тактов на выборку, вы не одиноки .

Что касается смены частоты. По rs232 принимаются байты и размещаются во временных регистрах. Если принято 4 байта, то они переписываются в штатные регистры. Самое трудное было додуматься, как сделать синхронизацию первого байта. Я сделал её по времени, т.е. четыре байта частоты должны передаваться без значительных перерывов, как только появляется перерыв, значит надо ждать новую посылку из 4-х байт.
=GM= вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение частоты на ATmega8 lextorg Микроконтроллеры, АЦП, память и т.д 22 14.01.2010 14:48
Контроль частоты вращения Faxa Электроника - это просто 6 06.01.2010 23:43
Делитель частоты Gladkih TTL и CMOS логика 7 07.12.2009 18:31
Генератор частоты на Mega - как? code-by Микроконтроллеры, АЦП, память и т.д 9 10.11.2009 15:02


Часовой пояс GMT +4, время: 08:22.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot