Kolia 0 24 сентября, 2009 Опубликовано 24 сентября, 2009 · Жалоба Добрый день. При записи в регистр SSPCON1 программа вылетает в другое место в чем трабла? Код на С SSPCON1 &= 0xF0; На ассемблере: movlw 0xF0 andwf 0xFC6 конкретно в отладчите вылетает на movlw 0xF0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syv 0 24 сентября, 2009 Опубликовано 24 сентября, 2009 · Жалоба Добрый день. При записи в регистр SSPCON1 программа вылетает в другое место в чем трабла? Код на С SSPCON1 &= 0xF0; На ассемблере: movlw 0xF0 andwf 0xFC6 конкретно в отладчите вылетает на movlw 0xF0 Мало информации. Лучше приведите листинг из этого места. К примеру, неясен метод доступа, что в BSR.... А то, может так случится, что идет обращение к несуществующему адресу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kolia 0 24 сентября, 2009 Опубликовано 24 сентября, 2009 · Жалоба вот файлик listing.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kolia 0 27 сентября, 2009 Опубликовано 27 сентября, 2009 · Жалоба Может проблемма с портами при инициализации I2C? Как их правильно настроить на вход или выход? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syv 0 27 сентября, 2009 Опубликовано 27 сентября, 2009 (изменено) · Жалоба Может проблемма с портами при инициализации 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) в другую сторону, что нежелательно. От себя добавлю, что в связи с изложенным выше, Вы, по всей вероятности, устраиваете маленький коротыш внутри кристалла. Поэтому он и вылетает. Изменено 27 сентября, 2009 пользователем Прохожий Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kolia 0 27 сентября, 2009 Опубликовано 27 сентября, 2009 · Жалоба Убрал из проекта библиотеку 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. Вот и думаб то-ли мой комп обкурился, то-ли я(. Вот где может быть трабла. Млгу выложить проект если нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syv 0 27 сентября, 2009 Опубликовано 27 сентября, 2009 · Жалоба Убрал из проекта библиотеку 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... Нннничего не понимаю... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HHIMERA 0 27 сентября, 2009 Опубликовано 27 сентября, 2009 · Жалоба Че-то я нить потерял... А нафига это все? Локальная переменная... Многочисленное увеличение ее на 1... Нннничего не понимаю... Да вылетает он спонтанно... Кружит, пытается определится где лажа, а версию компилятора даже не указал... OFF: Слышал, получил долгожданные PIC24... Поздравляю... :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kolia 0 27 сентября, 2009 Опубликовано 27 сентября, 2009 · Жалоба Ну так для проверки. Получается что я не правильно подключил библиотеки, или в настройках компилятора что-то не указал. Почему-то компилятор загоняет на адресса 7D76 хотя с 0x0030 до 0x7D76 все свободно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syv 0 27 сентября, 2009 Опубликовано 27 сентября, 2009 (изменено) · Жалоба Ну так для проверки. Получается что я не правильно подключил библиотеки, или в настройках компилятора что-то не указал. Почему-то компилятор загоняет на адресса 7D76 хотя с 0x0030 до 0x7D76 все свободно. Выходит так... Только еще и компоновщик... Честно говоря, я бортовую переферию инициализирую один раз в Startup-e. Ручками. Только то, чем потом буду пользоваться. С учетом того, что все будет работать по прерываниям... В связи с этим, готовыми функциями не пользуюсь, а прочтя Datasheet, делаю все самостоятельно. Поверьте, это не сложно... Может и Вам стоит попробовать? Изменено 27 сентября, 2009 пользователем Прохожий Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HHIMERA 0 27 сентября, 2009 Опубликовано 27 сентября, 2009 · Жалоба Ну так для проверки. Получается что я не правильно подключил библиотеки, или в настройках компилятора что-то не указал. Почему-то компилятор загоняет на адресса 7D76 хотя с 0x0030 до 0x7D76 все свободно. И чего ждём??? Когда телепаты из тёплых краёв клином прилетят??? Выкладывай что есть и подробно чем компилишь и т. д. ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syv 0 27 сентября, 2009 Опубликовано 27 сентября, 2009 · Жалоба OFF: Слышал, получил долгожданные PIC24... Поздравляю... :rolleyes: Да. Поэтому и говорю, что доступны они всем и каждому. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kolia 0 27 сентября, 2009 Опубликовано 27 сентября, 2009 · Жалоба Вот настройки компилятора 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syv 0 27 сентября, 2009 Опубликовано 27 сентября, 2009 · Жалоба Вот настройки компилятора PICC-18 -Zg4 -O -ASMLIST Я не силен в ключах PICC-18 (пользуюсь MCC18), но что-то мне подсказывает, что включена полная оптимизация. При отладке делать этого не стоит... Линкера PICC-18 -M"$(TARGETBASE).map" -O"$(TARGETBASE).cof" -O"$(TARGETBASE).hex" У линкера ничего интересного. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kolia 0 27 сентября, 2009 Опубликовано 27 сентября, 2009 · Жалоба отключил оптимизацию - все тоже самое( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться