|
|
  |
Uart для Silabs C8051F320, проблемы с настройкой и запуском |
|
|
|
May 21 2008, 10:39
|
Группа: Новичок
Сообщений: 8
Регистрация: 18-02-08
Пользователь №: 35 149

|
Вроде все включил, вроде даже работает, бит окончания передачи выставляется через равные промежутки времени - только на ножке ТХ глухо. Причем как на кейловском симуляторе, так и на контроллере. Прилепляю асм-файл программы. Если влом смотреть де я напарил, можете прислать рабочий свой,только асм, пожалуйста.
Сообщение отредактировал Антон Андреевич - May 21 2008, 10:43
Прикрепленные файлы
uartv2.txt ( 21.98 килобайт )
Кол-во скачиваний: 236
|
|
|
|
|
May 22 2008, 14:19
|

Местный
  
Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276

|
Цитата(Антон Андреевич @ May 21 2008, 14:39)  Вроде все включил, вроде даже работает, бит окончания передачи выставляется через равные промежутки времени - только на ножке ТХ глухо. Причем как на кейловском симуляторе, так и на контроллере.
Прилепляю асм-файл программы. Если влом смотреть де я напарил, можете прислать рабочий свой,только асм, пожалуйста. Исходник не смотрел. Но надеюсь вы правильно смотрите TX на ноге P0.4. И при этом в неактивном режиме эта нога должна быть в логической 1 (высокий уровень)!!!
--------------------
Удачи.
|
|
|
|
|
May 22 2008, 17:17
|
Группа: Новичок
Сообщений: 8
Регистрация: 18-02-08
Пользователь №: 35 149

|
Да, смотрю на ножке Р0.4. Насчет неактивного уровня не понял.
Пока не запустил уарт на ножке 3.3В. Правда и после запуска, и в "процессе передачи", и после установки флага отправки байта уартом уровень не меняется.
|
|
|
|
|
May 23 2008, 05:39
|

Местный
  
Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276

|
Цитата(Антон Андреевич @ May 22 2008, 21:17)  Да, смотрю на ножке Р0.4. Насчет неактивного уровня не понял.
Пока не запустил уарт на ножке 3.3В. Правда и после запуска, и в "процессе передачи", и после установки флага отправки байта уартом уровень не меняется. Именно это я и имел ввиду. Только я говорил об неактивном состоянии. Ну не важно (глаывное что схема не подсаживает порт). Интересная у вас строчка в исходниках Код MOV P0SKIP, #00111100b;(25MHz)настройка приоритетного декодера матрицы - пропуск ножек внешнего генератора,VREF И за чем это вы отключили ножки порта P0.4 и P0.5 из работы???  Скип делается только для спецфункций порта (таких как Vref, Clock и CNVSTR) или для выделения ноги при работе с АЦП. Для всего другого делать пропуск ноги в матрице ненужно!!! Напишите так Код MOV P0SKIP, #00001100b;(25MHz)настройка приоритетного декодера матрицы - пропуск ножек внешнего генератора,VREF Ну и последнее.  Раз уж вы в исходник вставили определение регистров, так и используйте эти определения. А то периодические обращения к адресам SFR тяжело воспринимаются.
Сообщение отредактировал AndreyS - May 23 2008, 05:41
--------------------
Удачи.
|
|
|
|
|
Jun 30 2008, 08:02
|
Местный
  
Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282

|
Цитата(AndreyS @ May 23 2008, 08:39)  Напишите так ... Код MOV P0SKIP, #00001100b;(25MHz)настройка приоритетного декодера матрицы - пропуск ножек внешнего генератора,VREF А почему вы не пользуетесь стандартным конфигуратором? С тех пор, как мы начали им пользоваться работа с силабсами превратилась в сказку. Скип в матрице превращается в лёгкое движение руки. Опять же всё наглядно.
|
|
|
|
|
Jun 30 2008, 12:35
|

Местный
  
Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276

|
Цитата(evg123 @ Jun 30 2008, 12:02)  А почему вы не пользуетесь стандартным конфигуратором? С тех пор, как мы начали им пользоваться работа с силабсами превратилась в сказку. Скип в матрице превращается в лёгкое движение руки. Опять же всё наглядно. Добрый день. ЭЭЭЭЭ. Вы это мне адресовали письмо??? Инициатор темы не я и исходник не мой (это была цитат кода).  Читайте внимательно.
--------------------
Удачи.
|
|
|
|
|
Jun 30 2008, 14:00
|

Знающий
   
Группа: Свой
Сообщений: 578
Регистрация: 7-11-06
Из: Хабаровск
Пользователь №: 22 044

|
Цитата(evg123 @ Jun 30 2008, 19:02)  А почему вы не пользуетесь стандартным конфигуратором? Что за конфигуратор? Немного не в тему. Почему-то у этой серии UART конфликтует с SPI. По-раздельному работают стабильно, когда запускаешь одновременно- UART выдаёт серию из байт 20-ти и зависает. При этом SPI продолжает работать нормально. Никто не сталкивался?
--------------------
Маленький нанайца. А-а. А-а. Оморочком плыл. Маленький проточка. Осетра ловил.
|
|
|
|
|
Jul 8 2008, 04:47
|

Частый гость
 
Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966

|
Цитата(repairDV @ Jul 3 2008, 15:25)  Неплохая вроде штука. Но - если говорить о моём вопросе - конфликт UART и SPI, то у меня эти модули отконфигурированы так же, как у них. Ну что за жизнь. Вроде неплохой проц. Всё-таки нет совершенных микроконтроллеров. Коллега делал девайс на 320, были задествованы SPI, UART проблем не возникало....
|
|
|
|
|
Aug 19 2009, 07:14
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 13-05-06
Из: Киев
Пользователь №: 17 060

|
может не в тему, но та же проблема с C8051F350, в конфигураторе задал все, но на ножках глухо в Keile? Помогите! CODE #include "C8051F350.h"
void Timer_Init(){ TMOD = 0x20; TH1 = 0x96; } void UART_Init(){ SCON0 = 0x10; } void Port_IO_Init(){ // P0.0 - Unassigned, Open-Drain, Digital // P0.1 - Unassigned, Open-Drain, Digital // P0.2 - Unassigned, Open-Drain, Digital // P0.3 - Unassigned, Open-Drain, Digital // P0.4 - TX0 (UART0), Open-Drain, Digital // P0.5 - RX0 (UART0), Open-Drain, Digital // P0.6 - Unassigned, Open-Drain, Digital // P0.7 - Unassigned, Open-Drain, Digital // P1.0 - Unassigned, Open-Drain, Digital // P1.1 - Unassigned, Open-Drain, Digital // P1.2 - Unassigned, Open-Drain, Digital // P1.3 - Unassigned, Open-Drain, Digital // P1.4 - Unassigned, Open-Drain, Digital // P1.5 - Unassigned, Open-Drain, Digital // P1.6 - Unassigned, Open-Drain, Digital // P1.7 - Unassigned, Open-Drain, Digital XBR0 = 0x01; XBR1 = 0x40; } void Oscillator_Init(){ OSCICN = 0x83; }
// Initialization function for device, // Call Init_Device() from your main program void Init_Device(void){ Timer_Init(); UART_Init(); Port_IO_Init(); Oscillator_Init(); } void Main(){ char ch='A'; Init_Device(); while (1){ // P0++; SBUF0=ch++; } }
Сообщение отредактировал SashaGubov - Aug 19 2009, 07:15
|
|
|
|
|
Aug 21 2009, 02:15
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(SashaGubov @ Aug 19 2009, 18:14)  может не в тему, но та же проблема с C8051F350, в конфигураторе задал все, но на ножках глухо в Keile? Помогите! CODE #include "C8051F350.h"
// Initialization function for device, // Call Init_Device() from your main program void Init_Device(void){ Timer_Init(); UART_Init(); Port_IO_Init(); Oscillator_Init();
} А что-то у Вас в коде нет отключения watchdog? Просто не привели или его действительно нет? Дело в том, что в Silabs МК он включается автоматически после сброса. Первым делом, если что-то не идет смотрите регистр сброса, от чего был последний сброс. И второе. Код while (1){ // P0++; SBUF0=ch++; } Вы дождитесь, когда байт передастся, а потом только следущий передавайте. Хотя бы полингом TI флага.
|
|
|
|
|
Aug 22 2009, 09:55
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 13-05-06
Из: Киев
Пользователь №: 17 060

|
ага, спасибо, в этом и дело  еще б его прошить в реале..
Сообщение отредактировал SashaGubov - Aug 22 2009, 09:55
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|