|
PIC12F629 & MPLAB на симуляторе работает, а при, прошивке не работает |
|
|
|
Jan 4 2011, 11:11
|
Местный
  
Группа: Участник
Сообщений: 217
Регистрация: 11-06-10
Пользователь №: 57 868

|
MPLAB vs HI-TECH C компилятор делают файл hex. После прошивки его в PIC12F629 работы контроллера не наблюдается, хотя другая программа работает, т.е. аппаратно все исправно. Прошиваю PIC программатор v4.10a. Все красиво. Биты конфигурации 0x31D4. В симуляторе все красиво работает, а реально на выходе контроллера все нули. Код #include <htc.h> #include <stdio.h> #include <stdlib.h>
//__CONFIG(WDTDIS & UNPROTECT & INTIO); // Program config. word 1 //__CONFIG(INTIO); // Program config. word 2 #define _XTAL_FREQ 4000000 #define bitset(var, bitno) ((var) |= 1UL << (bitno)) #define bitclr(var, bitno) ((var) &= ~(1UL << (bitno)))
bit flag; unsigned int tick_count;
void eetest(void) { unsigned char value = 255; unsigned char address = 0; // write value to EEPROM address eeprom_write(address, value); // read from EEPROM at address value = eeprom_read(address); }
//FLASH_WRITE(address,value); //variable=FLASH_READ(address); //ei(); // enable all interrupts //di(); // disable all interrupts //CLRWDT();
void interrupt tc_int(void) { if (T0IE && T0IF) { T0IF=0; ++tick_count; //GPIO=~GPIO; return; } }
void main(void) { OPTION=0b00001100; INTCON=0b00100000; TRISIO=0b00001000; CMCON=0b00000111; GPIO=0xFF; //eetest(); ei(); // enable all interrupts while(1) { __delay_ms(1);//а было и 100 и 500 GPIO=~GPIO; NOP(); } } Кто подскажет где искать причину? В pic-ах новичок. Спасибо.
Сообщение отредактировал skyled - Jan 4 2011, 11:12
|
|
|
|
|
 |
Ответов
|
Feb 4 2011, 10:10
|
Участник

Группа: Участник
Сообщений: 20
Регистрация: 6-12-07
Из: Рига, Латвия
Пользователь №: 33 036

|
Цитата(smk @ Feb 3 2011, 22:30)  Калибровочное слово я знаю уже. Дело действительно именно в нем. по совету сменить программатор собрал PicKit2 Если я записываю им hex из MPLAB, то калибровочное слово теряется и контроллер не работает (не тактируется? или с чем это связано?). Если я в программе PicKit2 v2.52 с помощью нового программатора сначала определяю это калибровочное слово, а потом прошиваю hex то все работает. При повторном программировании из MPLAB опять не работает. Кстати последний раз не удалось восстановить калибровочное слово программатором. Попыток было несколько. Хорошо, что записал на бумажке.Ввел вручную - заработало. Как сделать так чтобы MPLAB не сносила єто слово и можно было программировать из нее. Для чего нужна строка OSCCAL = _READ_OSCCAL_DATA(); и в каком месте программы она должна быть? Спасибо. Эта строка (функция) как раз то и читает калибровочное слово из памяти PIC. Если по адресу нахожднения калибровочного слова не будет инструкции RETLW, то не будет возврата из функции _READ_OSCCAL_DATA(), а это означает, что программа будет крутитьтся в начале инициализации вечно.  Когда MPLAB сносит (стирает) константу, вместо RETLW там будет пустая ячейка, что интерпретируется как инструкция ADDWF. Код CALL 0x3ff ; get calibration value MOVWF OSCCAL ; save
|
|
|
|
Сообщений в этой теме
skyled PIC12F629 & MPLAB на симуляторе работает, а при Jan 4 2011, 11:11 xemul GP3/MCLR?
UPD: сразу не разлядел, что __CONFIG у ... Jan 4 2011, 11:15 skyled Цитата(xemul @ Jan 4 2011, 18:15) GP3/MCL... Jan 4 2011, 11:21  xemul Цитата(skyled @ Jan 4 2011, 17:21) Потом ... Jan 4 2011, 11:24 skyled Сделал, перепрошил. Ругнулось на некорректное конф... Jan 4 2011, 11:54 xemul Цитата(skyled @ Jan 4 2011, 17:54) Сделал... Jan 4 2011, 19:28 skyled Компилятор не ругается. Ругается программатор. Дат... Jan 5 2011, 06:02 skyled Цитата0x31D4 соответствует __CONFIG(WDTDIS & U... Jan 5 2011, 08:05 xemul Цитата(skyled @ Jan 5 2011, 14:05) А мне ... Jan 5 2011, 10:47 skyled Букву добавил. Перепрошил. Не помогло. На почти вс... Jan 5 2011, 11:26 xemul Цитата(skyled @ Jan 5 2011, 17:26) Букву ... Jan 5 2011, 12:07 skyled Попробовал. Результат тотже. Завтра попробую собра... Jan 5 2011, 12:30 xemul Цитата(skyled @ Jan 5 2011, 18:30) Попроб... Jan 5 2011, 15:44  Дмитрий Ветра Цитата(xemul @ Jan 5 2011, 20:44) Проверь... Jan 7 2011, 17:28 smk Байт калибровки точно затерт т.к. делался полный с... Jan 5 2011, 18:04 xemul Цитата(smk @ Jan 6 2011, 00:04) Байт кали... Jan 6 2011, 09:28  DL36 Цитата(xemul @ Jan 6 2011, 16:28) - взять... Jan 9 2011, 05:01 skyled Вот такая вот ошибка в т.ч. и в случае с перекомпи... Jan 11 2011, 06:20 xemul Цитата(skyled @ Jan 11 2011, 12:20) Вот т... Jan 11 2011, 09:42 skyled Файлы, кстати, заливались в новый МК. Jan 11 2011, 08:26 skyled http://www.qrz.ru/schemes/contribute/constr/extra-... Jan 11 2011, 12:36 skyled Цитатахардварные проблемы в программатореНу вобщем... Jan 12 2011, 05:27 xemul Цитата(skyled @ Jan 12 2011, 11:27) Ну во... Jan 12 2011, 09:33 skyled Импортный аналог там и стоит. Не разглядел, но пох... Jan 12 2011, 10:14 xemul Цитата(smk @ Feb 3 2011, 23:30) Калиброво... Feb 4 2011, 11:41 smk ЦитатаProgrammer->Settings->Calibration memo... Feb 4 2011, 15:46 xemul Цитата(smk @ Feb 4 2011, 18:46) Вот таког... Feb 4 2011, 18:05 smk Почемуто всякий раз после заливки из MPLAB последн... Feb 4 2011, 17:52 xemul Цитата(smk @ Feb 4 2011, 20:52) Почемуто ... Feb 5 2011, 11:01 smk Цитата- на закладке Linker поле Debugger установле... Feb 4 2011, 18:17 xemul Цитата(smk @ Feb 4 2011, 21:17) так и ест... Feb 5 2011, 08:09 skyled Компилятор HI-TECH.
Мои действия такие (описываю... Feb 7 2011, 12:43 smk С нетерпеним жду какой будет вердикт или совет? Да... Feb 7 2011, 17:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|