DmitrySvrv 0 31 марта, 2011 Опубликовано 31 марта, 2011 (изменено) · Жалоба Собрал себе макетную плату. Подключил PIC по стандартной схеме. 5В на сброс, 5В на питание, внешний генератор кварц 4 МГц конденсаторы 18пФ Написал программу LIST P=16F876 ; указывает программе тип контроллера TITLE Программа моргания светодиодами ; имя программы include "C:\Program Files\Microchip\MPASM Suite\P16F876A.INC" ; включение в текст имен стандартных регистров микроконтроллера include "C:\LED\Header\LED.h" ; включение в текст файла заголовка с нашими определениями ; ************************************************** ********* org 0x00 goto Entry ; переход к основной программе ;************************************************* *********** ; Инициализация ; ************************************************** ********* Entry clrwdt ; убиваем сторожа bcf INTCON,GIE ; запрет прерываний bcf _RP1 ; выбор банка 1 bsf _RP0 clrf TRISB ; порт В как выход ; ************************************************** ************** ; Основная программа ; ************************************************** ************** bcf _RP0 ; выбор банка 0 movlw 0xFF ; записываем в аккумулятор 11111111 movwf PORTB ; логическая 1 на выходах goto Entry ; зациклили ; ************************************************** ************** END Компилятор выдал Make: The target "C:\LED\Source\LED.o" is out of date. Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F876A "LED.asm" /l"LED.lst" /e"LED.err" Warning[205] C:\LED\SOURCE\LED.ASM 1 : Found directive in column 1. (LIST) Message[302] C:\LED\SOURCE\LED.ASM 20 : Register in operand not in bank 0. Ensure that bank bits are correct. Warning[203] C:\LED\SOURCE\LED.ASM 25 : Found opcode in column 1. (bcf) Warning[203] C:\LED\SOURCE\LED.ASM 26 : Found opcode in column 1. (movlw) Warning[203] C:\LED\SOURCE\LED.ASM 27 : Found opcode in column 1. (movwf) Warning[203] C:\LED\SOURCE\LED.ASM 28 : Found opcode in column 1. (goto) Loaded C:\LED\Source\LED.COD. BUILD SUCCEEDED: Thu Mar 31 21:41:22 2011 Заливаю хекс программатором фитон Chip Prog-2 Не работает, почему? :1111493779: Чем можно посмотреть есть ли тактовая частота, осцил. не показвает:( то ли уровень малый то ли сажает Изменено 31 марта, 2011 пользователем DmitrySvrv Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 31 марта, 2011 Опубликовано 31 марта, 2011 (изменено) · Жалоба табуляций не хватает перед инструкциями. (наверное) а название правильнее писать - чё за ботва, пацаны? Изменено 31 марта, 2011 пользователем GetSmart Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitrySvrv 0 3 мая, 2011 Опубликовано 3 мая, 2011 · Жалоба никак не хочет дружить со мной микроконтроллер. Следующий мой шаг был поморгать светодиодом. есть такая периферия TMR0. Частота 4МГЦ, предделитель на 256 - итого 15 Гц или 0,07с за такт. 256*0,07=17с- задеражка при переполнении регистра ТМР0 Код: LIST P=16F876 ; указывает программе тип контроллера TITLE Программа моргания светодиодами ; имя программы include "C:\Program Files\Microchip\MPASM Suite\P16F876A.INC" ; включение в текст имен стандартных регистров микроконтроллера include "C:\LED\Header\LED.h" ; включение в текст файла заголовка с нашими определениями ; ******************************************************** org 0x00 goto Entry; переход к основной программе ;********************************************************* ; Инициализация ; ******************************************************* Entry bcf INTCON,2 clrwdt; убиваем сторожа bcf INTCON,GIE; запрет прерываний bcf _RP1; выбор банка 1 bsf _RP0 clrf TRISB; порт В как выход LED_ON bcf _RP0; выбор банка 0 movlw 0xFF; записываем в аккумулятор 11111111 movwf PORTB; логическая 1 на выходах Pause1 movlw b'11000111'; Настроить предделитель на 256 тмр0,от внутр.г. movwf OPTION_REG bsf INTCON,5 ; Разрешить прерывания incf TMR0,1 ;ИНкримент регистра тмр0 BTFSS INTCON,2 ;Проверим на прерывание от регистра goto Pause1 LED_OFF bcf _RP0; выбор банка 0 movlw 0x00; movwf PORTB; логический 0 на выходах Pause2 movlw b'11000111' movwf OPTION_REG bsf INTCON,5 incf TMR0,1 BTFSS INTCON,2 goto Pause2 goto LED_ON END И что он не хочет работать то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 3 мая, 2011 Опубликовано 3 мая, 2011 · Жалоба ... ; однократным убийством его не возьмёшь clrwdt; убиваем сторожа ... Pause1 ; в Вашей проге это достаточно сделать единожды до LED_ON movlw b'11000111'; Настроить предделитель на 256 тмр0,от внутр.г. movwf OPTION_REG ; чесслово, лень смотреть, за что отвечает 5 бит в INTCON ; а если учесть bcf INTCON,GIE чуть выше, то и бессмысленно bsf INTCON,5; Разрешить прерывания ; зачем? таймер сам будет считать ; 'incf TMR0, f' никогда не приведёт к T0IF, а вот прескейлер будет сбрасываться incf TMR0,1;ИНкримент регистра тмр0 BTFSS INTCON,2;Проверим на прерывание от регистра goto Pause1 ; здесь, если оно вдруг случится, очень к месту будет BCF INTCON,2 ... И что он не хочет работать то? Он работает. Как написали, так и работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[sarge] 0 3 мая, 2011 Опубликовано 3 мая, 2011 · Жалоба никак не хочет дружить со мной микроконтроллер. Следующий мой шаг был поморгать светодиодом. есть такая периферия TMR0. Частота 4МГЦ, предделитель на 256 - итого 15 Гц или 0,07с за такт. 256*0,07=17с- задеражка при переполнении регистра ТМР0 И что он не хочет работать то? интересно считаете... Частота кварца 4 МГц => частота на таймере 4/4 = 1 МГц => 1МГц/256 = 3,90625 кГц или 256 микросекунд Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 3 мая, 2011 Опубликовано 3 мая, 2011 · Жалоба интересно считаете... Частота кварца 4 МГц => частота на таймере 4/4 = 1 МГц => 1МГц/256 = 3,90625 кГц или 256 микросекунд Вы забыли про прескейлер 1 МГц / 256 / 256 = 15.3 Гц частота T0IF без вмешательства ручек Кто такая "17с- задеражка", я тоже не понял, но оно несущественно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[sarge] 0 3 мая, 2011 Опубликовано 3 мая, 2011 (изменено) · Жалоба upd. перечитал и въехал, что вы имели ввиду частоту T0IF, с этим согласен, я в своем посте считал время одного тика просто, а не полного заполнения регистра TMR0 Изменено 3 мая, 2011 пользователем sargein Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 4 мая, 2011 Опубликовано 4 мая, 2011 · Жалоба И что он не хочет работать то? Хинт: все попытки наладить дружбу с пиками лучше делать на основе симулятора MPLAB. Потому что он- правильный и ему можно верить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
testerplus 0 4 мая, 2011 Опубликовано 4 мая, 2011 · Жалоба Чтение документации укрепит дружбу. Особенно про таймер и про прерывания. А еще про то, что запись в TMR0 обнуляет счетчик прескейлера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 4 мая, 2011 Опубликовано 4 мая, 2011 · Жалоба а еще про FUSE bit забыли. Они прямо в тексте программы должны прописываться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 4 мая, 2011 Опубликовано 4 мая, 2011 · Жалоба а еще про FUSE bit забыли. Они прямо в тексте программы должны прописываться. Кстати, да. По умолчанию этот пик будет считать, что его от RC заводят. Но, м.б., ТС тоже ручками в программаторе CONFIG задаёт? Чем можно посмотреть есть ли тактовая частота, осцил. не показвает:( то ли уровень малый то ли сажает Прочитать 12.1, 12.2 ДШ, и "%Program Files%\Microchip\MPASM Suite\hlpMPASMAsm.chm" на предмет __config. Кварц 4 МГц == XT Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 4 мая, 2011 Опубликовано 4 мая, 2011 · Жалоба Чем можно посмотреть есть ли тактовая частота, осцил. не показвает:( то ли уровень малый то ли сажает Щуп с делителем нужен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mmor 0 6 мая, 2011 Опубликовано 6 мая, 2011 · Жалоба Чем можно посмотреть есть ли тактовая частота, осцил. не показвает:( то ли уровень малый то ли сажает Я сначала подавал питание, потом смотрел осциллографом обычным щупом. Если сразу ставлю щуп, а потом включаю - генерации нет. 7 Мгц. 1886ВЕ2У Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться