Форум РадиоКот https://radiokot.ru/forum/ |
|
PIC16F57 проблемы с программированием. https://radiokot.ru/forum/viewtopic.php?f=58&t=192326 |
Страница 1 из 2 |
Автор: | vdv22 [ Ср фев 21, 2024 06:37:46 ] |
Заголовок сообщения: | PIC16F57 проблемы с программированием. |
Добрый день, есть такой контроллер PIC16F57, пытаюсь написать ную программу для него в MPlab X EDI на даже при моргании светодиодом возникаю проблемы - TRISA|=(1<<0) он не хочет воспринимать. выдает вот такую ошибку-main.c:11:: error: (712) can't generate code for this expression . Отстал от порта А и сделал по другому -TRISB=0; перевел весь порт B на выход , скомпилировалось. Далее подключаю программатор К150 - при программировании выдает ошибку. Считываю содержимое микросхемы , пробую прошить - прошивается..может кто сталкивался с данной проблемой? |
Автор: | veso74 [ Ср фев 21, 2024 07:50:21 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
Поделитесь весь кодом для blink, не только фрагмент. |
Автор: | OKF [ Ср фев 21, 2024 07:59:30 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
TRISx write only, поэтому правильно пишешь в TRISB. |
Автор: | КРАМ [ Ср фев 21, 2024 08:04:44 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
TRISA|=(1<<0) Что вы имели ввиду этой строкой? ![]() |
Автор: | vdv22 [ Ср фев 21, 2024 08:37:41 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
#include <xc.h> #define _XTAL_FREQ 8000000 void main(void) { TRISA&=~(1<<0); // устанавливаем 0 на RA0 while(1) { PORTA^=(1<<0); //меняем состояние RA0 __delay_ms(500); } return; } Добавлено after 3 minutes 2 seconds: здесь перепутал -сделал как на avr должно быть TRISA &=~(1<0) - этой строкой я устанавливаю регистр A0 в ноль . на PIC16F870 проверенно -работает все . Добавлено after 3 minutes 34 seconds: TRISx write only, поэтому правильно пишешь в TRISB. То есть так здесь не работает ? для операции логического или необходимо сначала считать регистр, потом по или произвести сложение и записать ...... |
Автор: | КРАМ [ Ср фев 21, 2024 10:10:10 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
То есть так здесь не работает ? для операции логического или необходимо сначала считать регистр, потом по или произвести сложение и записать ...... В этом контроллере нет регистра TRISA или TRISB. Есть инструкция tris, которая записывает содержимое аккумулятора в регистр управления драйвером порта (аппаратно эквивалентен TRIS). Поэтому его невозможно прочитать. Если есть такая потребность, нужно организовать копию в ОЗУ и совершать над ней те же манипуляции, что и с невидимой TRIS. Или не совершать никакой математики связанной с чтением TRIS. |
Автор: | vdv22 [ Ср фев 21, 2024 10:53:07 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
То есть так здесь не работает ? для операции логического или необходимо сначала считать регистр, потом по или произвести сложение и записать ...... В этом контроллере нет регистра TRISA или TRISB. Есть инструкция tris, которая записывает содержимое аккумулятора в регистр управления драйвером порта (аппаратно эквивалентен TRIS). Поэтому его невозможно прочитать. Если есть такая потребность, нужно организовать копию в ОЗУ и совершать над ней те же манипуляции, что и с невидимой TRIS. Или не совершать никакой математики связанной с чтением TRIS. Значит запись TRISB=0 переведет порт В на выход? |
Автор: | КРАМ [ Ср фев 21, 2024 11:07:42 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
Да. А если пытаться читать, делать маску и писать, то будет ошибка. |
Автор: | vdv22 [ Ср фев 21, 2024 11:19:11 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
Да. А если пытаться читать, делать маску и писать, то будет ошибка. Спасибо, с этим все понятно , а почему программатор ругается при прошивке откомпилированного кода? |
Автор: | veso74 [ Ср фев 21, 2024 11:29:58 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
Дайте картинку (скопируйте сюда) "ругатни" ![]() Не можем угадать, что показывает. |
Автор: | vdv22 [ Ср фев 21, 2024 17:02:15 ] | ||||
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. | ||||
Дайте картинку (скопируйте сюда) "ругатни" первое фото это считывания после попытки прошивки.![]() Не можем угадать, что показывает. на втором фото при верификации возникает ошибка с адреса 040. То есть с адреса 040 записывается нулями. .
|
Автор: | КРАМ [ Ср фев 21, 2024 17:13:03 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
с адреса 040 записывается нулями. . А ничего, что у вас в конфигурации прошивка залочена? ![]() ![]() ![]() |
Автор: | vdv22 [ Ср фев 21, 2024 17:17:43 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
с адреса 040 записывается нулями. . А ничего, что у вас в конфигурации прошивка залочена? ![]() ![]() ![]() а как это убрать? Добавлено after 2 minutes 52 seconds: с адреса 040 записывается нулями. . А ничего, что у вас в конфигурации прошивка залочена? ![]() ![]() ![]() а как это убрать? Сразу прошу прощения за вопрос - я с ПИКами очень мало работал - с 870 и писалось и прошивалось все без проблем. |
Автор: | КРАМ [ Ср фев 21, 2024 17:26:25 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
как это убрать? А код ваш? В коде должно быть прописано слово конфигурации. Из представленного скрина видно. что конфиг равен FF7, где четвертый (третий от нуля) бит - это code protect. Если он равен 0 - прошивка закрыта. Если 1 - открыта. То есть открытый код в конфиге будет выглядеть как FFF. |
Автор: | vdv22 [ Ср фев 21, 2024 17:36:34 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
как это убрать? А код ваш? В коде должно быть прописано слово конфигурации. Из представленного скрина видно. что конфиг равен FF7, где четвертый (третий от нуля) бит - это code protect. Если он равен 0 - прошивка закрыта. Если 1 - открыта. То есть открытый код в конфиге будет выглядеть как FFF. Да, код мой, с защитой разобрался ,огромное спасибо -сейчас прошивается нормально, но светодиод все равно не горит ... подскажите что не так ? #include <xc.h> #define _XTAL_FREQ 8000000 // CONFIG #pragma config OSC = HS // Oscillator selection bits (HS oscillator) #pragma config WDT = OFF // Watchdog timer enable bit (WDT disabled) #pragma config CP = OFF // Code protection bit (Code protection off) void main() { TRISB=0; while (1) { PORTB|=(1<<0); __delay_ms(500); PORTB&=~(1<<0); __delay_ms(500); } } |
Автор: | КРАМ [ Ср фев 21, 2024 17:41:38 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
А у вас кварц подключен? ЗЫ. Не цитируйте предыдущее сообщение полностью. Не оставляйте в цитатах вложенные цитаты. Прочтите, наконец, Правила форума. Или вы рискуете быть забаненным. |
Автор: | vdv22 [ Ср фев 21, 2024 17:44:19 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
А у вас кварц подключен? да, конечно - 8000000 гц. |
Автор: | КРАМ [ Ср фев 21, 2024 17:45:41 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
Генерация на кварце есть? Емкости на кварце какие? ЗЫ. Уехал с работы домой. Буду дома только после 20-00 по Москве. |
Автор: | vdv22 [ Ср фев 21, 2024 20:27:04 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
еще раз спасибо за помощь!!! разобрался -на RESET надо было повесить +5 Добавлено after 2 hours 26 minutes 55 seconds: Генерация на кварце есть? Емкости на кварце какие? ЗЫ. Уехал с работы домой. Буду дома только после 20-00 по Москве. Еще один вопрос возник -как опрашивать вход ? Конструкции типа if(RA1) или (PORTB & (1 << 3)) не работают - тут тоже какие то подводные камни есть ? |
Автор: | КРАМ [ Ср фев 21, 2024 21:56:11 ] |
Заголовок сообщения: | Re: PIC16F57 проблемы с программированием. |
тут тоже какие то подводные камни есть ? Подводные камни есть при побитной записи в порт. Ибо это процедура RMW, которая из-за отсутствия входной защелки порта способна перезаписать входные состояния пинов в выходную защелку по всем разрядам порта кроме явно устанавливаемого. Чтение особых проблем не имеет, хотя гораздо корректнее НА ЛЮБОМ контроллере для атомарности чтения сначала защелкнуть порт в переменную, а лишь затем производить какие либо if-ы, switch-и и другие действия. Даже если вы пишите на АСМе и понимаете реальный исполняемый код. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |