TORNIS 0 7 января, 2011 Опубликовано 7 января, 2011 (изменено) · Жалоба Проверьте, не затерся ли байт калибровки внутреннего генератора. Прочитайте память контроллера, по адресу 0x3fe должно быть 0x34xx. Чтобы исключить проказы компилятора, которым Вы пользуетесь, в аттаче два хекса, собранных по последнему сорцу разными версиями. Чтобы исключить предупреждения программатора, в конфиге замаскированы неиспользуемые биты. __CONFIG(WDTDIS & UNPROTECT & INTIO & MCLRDIS & 0x31ff); Да, если не будет в конце памяти программ инструкции "retlw" с константой, а она в данном случае не причем, то код будет циклиться в начале стартапа. Обойти это - поможет не вызывать функцию 0x3ff. Я перекомпилил код выше без вызова функции. Естественно генератор будет уже некалиброванным, что на самом деле не страшно. :rolleyes: В догонку вот что получилось при компилировании: list p=12F629 ; list directive to define processor #include <p12F629.inc> ; processor specific variable definitions errorlevel -302 ; suppress message 302 from list file __CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT org 0 GOTO L00F org 4 MOVWF 0x5e ; save W MOVF STATUS,W BCF STATUS,RP0 MOVWF 0x20 ; save STATUS MOVF FSR,W MOVWF 0x21 ; save FSR MOVF PCLATH,W MOVWF 0x22 ; save PCLATH MOVF 0x5f,W MOVWF 0x23 GOTO L034 ; jump to int overlay L00F BSF STATUS,RP0 ; CALL 0x3ff ; get calibration value ; MOVWF OSCCAL ; save CLRF STATUS GOTO L050 L014 MOVLW 0xc ; GPPU<<1|INTEDG<<1 BSF STATUS,RP0 MOVWF OPTION_REG MOVLW 0x20 MOVWF INTCON ; T0IE<<1 MOVLW 0x8 MOVWF TRISIO ; xx00 1000 MOVLW 0x7 BCF STATUS,RP0 MOVWF CMCON ; set 0..2 pin as digio MOVLW 0xff MOVWF GPIO ; xx11 1111 BSF INTCON,GIE ; sei L021 MOVLW 0x2 BCF STATUS,RP0 MOVWF 0x26 MOVLW 0x03 MOVWF 0x25 MOVLW 0xba MOVWF 0x24 L028 ; delay overlay init 0x0203ba DECFSZ 0x24,F GOTO L028 DECFSZ 0x25,F GOTO L028 DECFSZ 0x26,F GOTO L028 BCF STATUS,RP0 COMF GPIO,F ; toggle pins NOP GOTO L021 GOTO L021 GOTO L00F L034 BTFSS INTCON,T0IE ; TMR0 enabled ? GOTO L037 ; GOTO L038 ; TMR0 Int enabled L037 GOTO L045 ; no, resume int L038 BTFSS INTCON,T0IF ; int req from TMR0 overflow ? GOTO L03B ; no, resume int GOTO L03C L03B GOTO L045 ; restore content L03C BCF INTCON,T0IF ; clear flag MOVLW 0x1 ADDWF 0x27,F ; low tick_count BTFSC STATUS,C INCF 0x28,F MOVLW 0 ADDWF 0x28,F ; high tick_count GOTO L045 GOTO L045 L045 MOVF 0x23,W MOVWF 0x5f MOVF 0x22,W ; restore PCLATH MOVWF PCLATH MOVF 0x21,W MOVWF FSR ; restore FSR MOVF 0x20,W MOVWF STATUS ; restore STATUS SWAPF 0x5e,F SWAPF 0x5e,W ; restore W RETFIE L050 CLRF 0x29 CLRF 0x27 CLRF 0x28 CLRF STATUS GOTO L014 end test12.zip Изменено 7 января, 2011 пользователем Дмитрий Ветра Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость DL36 9 января, 2011 Опубликовано 9 января, 2011 · Жалоба - взять новый контроллер, а запиленный прибить гвоздём на видном месте.Неа проще взять PciKit2 и восстановить константу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyled 0 11 января, 2011 Опубликовано 11 января, 2011 · Жалоба Вот такая вот ошибка в т.ч. и в случае с перекомпиленным. Что бы это значило? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyled 0 11 января, 2011 Опубликовано 11 января, 2011 · Жалоба Файлы, кстати, заливались в новый МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 11 января, 2011 Опубликовано 11 января, 2011 · Жалоба Вот такая вот ошибка в т.ч. и в случае с перекомпиленным. Что бы это значило? Да что угодно - хардварные проблемы в программаторе (н-р, Vpp не держится), софтовые от и до. Если есть время и желание - разбирайтесь. А лучше закажите PicKit2'образное (я и забыл про него, спасибо DL36). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyled 0 11 января, 2011 Опубликовано 11 января, 2011 · Жалоба http://www.qrz.ru/schemes/contribute/constr/extra-pic/ Вот этим пользуюсь. 12 В держится, но в процессе светодиод помигивает. Это должно так быть? Пробовал шить - проблемы с нулевым адресом на всех файлах и двух платах. А лучше закажите PicKit2'образное Да вот хочу на PIC18F2550 PicKit2-образное собрать, но тотже PIC надо чем-то шить Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyled 0 12 января, 2011 Опубликовано 12 января, 2011 · Жалоба хардварные проблемы в программатореНу вобщем так и вышло. Только проблема не в программаторе была, а в целевом устройстве. К выв. 6 и 7 были подключены входы микросхемы ULN2003. Выпаял и все заработало как по маслу. Собственно в связи с этим вопрос. В даташите есть упоминание о резисторах между выводами программирования и остальной схемой, но нет упоминания про их номинал (или смотрел плохо). В ULN2003 стоит 2,7 кОм. Это мало? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 12 января, 2011 Опубликовано 12 января, 2011 · Жалоба Ну вобщем так и вышло. Только проблема не в программаторе была, а в целевом устройстве. К выв. 6 и 7 были подключены входы микросхемы ULN2003. Выпаял и все заработало как по маслу. Собственно в связи с этим вопрос. В даташите есть упоминание о резисторах между выводами программирования и остальной схемой, но нет упоминания про их номинал (или смотрел плохо). В ULN2003 стоит 2,7 кОм. Это мало? Странно это. 2.7 кОм по PGD, PGC было достаточно любому программатору/отладчику, которыми мне доводилось пользоваться. Могу предположить только, что 1533ЛА3 на 2.7 кОм не обеспечивает VIH1 (CLOCK, DATA) input high level >= 0.8 VDD (при программировании PGD, PGC на вход работают триггерами Шмитта с порогами 0.2 и 0.8 VDD). Если есть возможность, попробуйте заменить её на КМОП аналог типа 74AC(T)00. Кста, в списке поддерживаемых этим программатором PIC18F2550/4550 отсутствуют (это я про сборку пиккит2). И не нравится мне неотключаемое Vcc, но, наверное, это фича всех подобных программаторов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyled 0 12 января, 2011 Опубликовано 12 января, 2011 · Жалоба Импортный аналог там и стоит. Не разглядел, но похоже на то, что Вы пишите. Всеравно прийдется какой-то буфер делать. SN74HC14 есть под рукой. Если пользовать WinPic800, то PIC18F2550 поддерживается, уже залил. Спасибо за консультации. Посмотрим как заработает а-ля PicKit2. Может еще какие вопросы по ходу будут. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 3 февраля, 2011 Опубликовано 3 февраля, 2011 · Жалоба Калибровочное слово я знаю уже. Дело действительно именно в нем. по совету сменить программатор собрал PicKit2 Если я записываю им hex из MPLAB, то калибровочное слово теряется и контроллер не работает (не тактируется? или с чем это связано?). Если я в программе PicKit2 v2.52 с помощью нового программатора сначала определяю это калибровочное слово, а потом прошиваю hex то все работает. При повторном программировании из MPLAB опять не работает. Кстати последний раз не удалось восстановить калибровочное слово программатором. Попыток было несколько. Хорошо, что записал на бумажке.Ввел вручную - заработало. Как сделать так чтобы MPLAB не сносила єто слово и можно было программировать из нее. Для чего нужна строка OSCCAL = _READ_OSCCAL_DATA(); и в каком месте программы она должна быть? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TORNIS 0 4 февраля, 2011 Опубликовано 4 февраля, 2011 · Жалоба Калибровочное слово я знаю уже. Дело действительно именно в нем. по совету сменить программатор собрал 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 4 февраля, 2011 Опубликовано 4 февраля, 2011 · Жалоба Калибровочное слово я знаю уже. Дело действительно именно в нем. по совету сменить программатор собрал PicKit2 Если я записываю им hex из MPLAB, то калибровочное слово теряется и контроллер не работает (не тактируется? или с чем это связано?). Если я в программе PicKit2 v2.52 с помощью нового программатора сначала определяю это калибровочное слово, а потом прошиваю hex то все работает. При повторном программировании из MPLAB опять не работает. Кстати последний раз не удалось восстановить калибровочное слово программатором. Попыток было несколько. Хорошо, что записал на бумажке.Ввел вручную - заработало. Как сделать так чтобы MPLAB не сносила єто слово и можно было программировать из нее. Programmer->Settings->Calibration memory Чтобы использовалась заводская калибровка (или то, что уже записано), снимите галку "Allow to program Calibration memory" Чтобы записать своё значение, поставьте галку и задайте "New Value". 0x80 соответствует середине калибровочного интервала. Для чего нужна строка OSCCAL = _READ_OSCCAL_DATA(); и в каком месте программы она должна быть? Спасибо. Project->Build Options->Project->Linker Установленная галка "Calibrate oscillator" всё сделает за Вас (в прологе, до старта main(); см. startup.lst в папке проекта). Можете задать своё значение в поле "Alternate oscillator calibration value". Для использования заводской калибровки поле нужно очистить. Если же хочется всё сделать самому, снимите галку и вставьте OSCCAL = _READ_OSCCAL_DATA(); в прогу там, где хочется. Если такой галки нет, обновите UniversalToolSuite. Можно ещё почитать .chm к MPLab'у и программатору, manual.pdf к компилятору и помедитировать в симуляторе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 4 февраля, 2011 Опубликовано 4 февраля, 2011 · Жалоба Programmer->Settings->Calibration memory Вот такого у меня нет. Project->Build Options->Project->Linker Установленная галка "Calibrate oscillator" всё сделает за Вас Такая галка есть, но она установлена и поле пустое. Почему ничего не происходит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 4 февраля, 2011 Опубликовано 4 февраля, 2011 · Жалоба Почемуто всякий раз после заливки из MPLAB последний байт оказывается нулевым (ну в смысле значение в последней ячейке 0000). Даже если вписать конкретное значение в ту ячейку. Даже если он там был. Почему так и что делать с этим?pic2.rarФайл сгенерированный MPLAB. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 4 февраля, 2011 Опубликовано 4 февраля, 2011 · Жалоба Вот такого у меня нет. Версия MPLab какая? UPD сейчас добавил поддержку PICKit2 (ну нет у меня его) - действительно в настройках программатора в MPLab никаких упоминаний об OSCCAL. Посмотрите "\Program Files\Microchip\MPLAB IDE\PICkit 2\hlpPICkit2.chm" - там описывается какая-то оболочка для PICKit2, и в её опциях поминается OSCCAL. Такая галка есть, но она установлена и поле пустое. Почему ничего не происходит? Значит на компилятор можно не грешить. Проверьте на всякий случай: - на закладке Linker поле Debugger установлено в Auto; - при компиляции с включённым симулятором последнее слово в памяти программ должно получаться 0x3400, с выключенной отладкой - 0x3fff. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться