Перейти к содержанию
    

PIC18F2520 проблемма с SSPCON1

Добрый день.

 

При записи в регистр SSPCON1 программа вылетает в другое место в чем трабла?

 

Код на С

 

SSPCON1 &= 0xF0;

 

На ассемблере:

 

movlw 0xF0

andwf 0xFC6

 

конкретно в отладчите вылетает на movlw 0xF0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день.

 

При записи в регистр SSPCON1 программа вылетает в другое место в чем трабла?

 

Код на С

 

SSPCON1 &= 0xF0;

 

На ассемблере:

 

movlw 0xF0

andwf 0xFC6

 

конкретно в отладчите вылетает на movlw 0xF0

Мало информации. Лучше приведите листинг из этого места.

К примеру, неясен метод доступа, что в BSR....

А то, может так случится, что идет обращение к несуществующему адресу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может проблемма с портами при инициализации I2C? Как их правильно настроить на вход или выход?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может проблемма с портами при инициализации I2C? Как их правильно настроить на вход или выход?

Вот, что удалось вычитать из Datasheeta:

17.3.3 ENABLING SPI I/O
To enable the serial port, SSP Enable bit, SSPEN
(SSPCON1<5>), must be set. To reset or reconfigure
SPI mode, clear the SSPEN bit, reinitialize the
SSPCON registers and then set the SSPEN bit. This
configures the SDI, SDO, SCK and SS pins as serial
port pins. For the pins to behave as the serial port function,
some must have their data direction bits (in the
TRIS register) appropriately programmed as follows:
• SDI is automatically controlled by the SPI module
• SDO must have TRISC<5> bit cleared
• SCK (Master mode) must have TRISC<3> bit
cleared
• SCK (Slave mode) must have TRISC<3> bit set
• SS must have TRISA<5> bit set
Any serial port function that is not desired may be
overridden by programming the corresponding data
direction (TRIS) register to the opposite value.

В переводе на человеческий язык там написано, что для того, чтобы разрешить последовательный порт, надо установить SSPEN (SSPCON1<5>).

Для сброса или реконфигурации режима SPI надо очистить SSPEN, ре инициализировать SSPCON и затем установить бит SSPEN.

Это сконфигурирует выводы SDI, SDO, SCK и SS, как выводы последовательного порта.

Для выводов, выполняющих функции последовательного порта, их направления передачи уместно запрограммировать следующим образом:

• SDI - автоматически управляется модулем SPI

• SDO - должен иметь бит TRISC<5> сброшенным

• SCK (режим мастера) - бит TRISC<3> сброшен

• SCK (режим ведомого) - бит TRISC<3> установлен

• SS должен иметь бит TRISA<5> установленным.

Некоторые функции последовательного порта могут быть переопределены посредством программирования направления передачи

данных (регистры TRIS) в другую сторону, что нежелательно.

 

От себя добавлю, что в связи с изложенным выше, Вы, по всей вероятности, устраиваете маленький коротыш внутри кристалла.

Поэтому он и вылетает.

Изменено пользователем Прохожий

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Убрал из проекта библиотеку i2c и rts-ds1307, убрал все настройки ядра для i2c, остался только USATR. Запускаю - все работает. Добавляю библиотеки i2c и rts-ds1307, мзменяю процедуру инициализации ds1307 на

 

void ds1307_init(void)

{

char i;

i++;

i++;

i++;

i++;

i++;

i++;

}

 

добавляю ее в main(), запускаю и при прохождении i++;(2-й) прога вылетает на адрес 7F86.

 

Вот и думаб то-ли мой комп обкурился, то-ли я(. Вот где может быть трабла. Млгу выложить проект если нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Убрал из проекта библиотеку i2c и rts-ds1307, убрал все настройки ядра для i2c, остался только USATR. Запускаю - все работает. Добавляю библиотеки i2c и rts-ds1307, мзменяю процедуру инициализации ds1307 на

 

void ds1307_init(void)

{

char i;

i++;

i++;

i++;

i++;

i++;

i++;

}

 

добавляю ее в main(), запускаю и при прохождении i++;(2-й) прога вылетает на адрес 7F86.

Че-то я нить потерял...

А нафига это все?

Локальная переменная... Многочисленное увеличение ее на 1...

Нннничего не понимаю...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Че-то я нить потерял...

А нафига это все?

Локальная переменная... Многочисленное увеличение ее на 1...

Нннничего не понимаю...

 

Да вылетает он спонтанно... Кружит, пытается определится где лажа, а версию компилятора даже не указал...

 

OFF: Слышал, получил долгожданные PIC24... Поздравляю... :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так для проверки. Получается что я не правильно подключил библиотеки, или в настройках компилятора что-то не указал. Почему-то компилятор загоняет на адресса 7D76 хотя с 0x0030 до 0x7D76 все свободно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так для проверки. Получается что я не правильно подключил библиотеки, или в настройках компилятора что-то не указал. Почему-то компилятор загоняет на адресса 7D76 хотя с 0x0030 до 0x7D76 все свободно.

Выходит так...

Только еще и компоновщик...

Честно говоря, я бортовую переферию инициализирую один раз в Startup-e. Ручками. Только то, чем потом буду пользоваться.

С учетом того, что все будет работать по прерываниям...

В связи с этим, готовыми функциями не пользуюсь, а прочтя Datasheet, делаю все самостоятельно.

Поверьте, это не сложно...

Может и Вам стоит попробовать?

Изменено пользователем Прохожий

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так для проверки. Получается что я не правильно подключил библиотеки, или в настройках компилятора что-то не указал. Почему-то компилятор загоняет на адресса 7D76 хотя с 0x0030 до 0x7D76 все свободно.

 

И чего ждём??? Когда телепаты из тёплых краёв клином прилетят???

Выкладывай что есть и подробно чем компилишь и т. д. ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

OFF: Слышал, получил долгожданные PIC24... Поздравляю... :rolleyes:

Да.

Поэтому и говорю, что доступны они всем и каждому.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот настройки компилятора PICC-18

-Zg4 -O -ASMLIST

 

Линкера PICC-18

-M"$(TARGETBASE).map" -O"$(TARGETBASE).cof" -O"$(TARGETBASE).hex"

 

Вот проект. Компилятор picc-18 9.50. IDE MPLAB 8.10.00.00. Программатор PICKit2.

Pasteurisation.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот настройки компилятора PICC-18

-Zg4 -O -ASMLIST

Я не силен в ключах PICC-18 (пользуюсь MCC18), но что-то мне подсказывает, что включена полная оптимизация.

При отладке делать этого не стоит...

Линкера PICC-18

-M"$(TARGETBASE).map" -O"$(TARGETBASE).cof" -O"$(TARGETBASE).hex"

У линкера ничего интересного.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...