PIC16F57 проблемы с программированием.
PIC16F57 проблемы с программированием.
Добрый день, есть такой контроллер PIC16F57, пытаюсь написать ную программу для него в MPlab X EDI на даже при моргании светодиодом возникаю проблемы - TRISA|=(1<<0) он не хочет воспринимать.
выдает вот такую ошибку-main.c:11:: error: (712) can't generate code for this expression .
Отстал от порта А и сделал по другому -TRISB=0; перевел весь порт B на выход , скомпилировалось. Далее подключаю программатор К150 - при программировании выдает ошибку. Считываю содержимое микросхемы , пробую прошить - прошивается..может кто сталкивался с данной проблемой?
выдает вот такую ошибку-main.c:11:: error: (712) can't generate code for this expression .
Отстал от порта А и сделал по другому -TRISB=0; перевел весь порт B на выход , скомпилировалось. Далее подключаю программатор К150 - при программировании выдает ошибку. Считываю содержимое микросхемы , пробую прошить - прошивается..может кто сталкивался с данной проблемой?
- Реклама
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: PIC16F57 проблемы с программированием.
Поделитесь весь кодом для blink, не только фрагмент.
Re: PIC16F57 проблемы с программированием.
TRISx write only, поэтому правильно пишешь в TRISB.
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: PIC16F57 проблемы с программированием.
[uquote="vdv22",url="/forum/viewtopic.php?p=4545598#p4545598"]TRISA|=(1<<0)[/uquote]
Что вы имели ввиду этой строкой?
Что вы имели ввиду этой строкой?
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:
[uquote="КРАМ",url="/forum/viewtopic.php?p=4545615#p4545615"][uquote="vdv22",url="/forum/viewtopic.php?p=4545598#p4545598"]TRISA|=(1<<0)[/uquote]
Что вы имели ввиду этой строкой?
[/uquote]
здесь перепутал -сделал как на avr должно быть TRISA &=~(1<0) - этой строкой я устанавливаю регистр A0 в ноль . на PIC16F870 проверенно -работает все .
Добавлено after 3 minutes 34 seconds:
[uquote="OKF",url="/forum/viewtopic.php?p=4545613#p4545613"]TRISx write only, поэтому правильно пишешь в TRISB.[/uquote]
То есть так здесь не работает ? для операции логического или необходимо сначала считать регистр, потом по или произвести сложение и записать ......
#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:
[uquote="КРАМ",url="/forum/viewtopic.php?p=4545615#p4545615"][uquote="vdv22",url="/forum/viewtopic.php?p=4545598#p4545598"]TRISA|=(1<<0)[/uquote]
Что вы имели ввиду этой строкой?
здесь перепутал -сделал как на avr должно быть TRISA &=~(1<0) - этой строкой я устанавливаю регистр A0 в ноль . на PIC16F870 проверенно -работает все .
Добавлено after 3 minutes 34 seconds:
[uquote="OKF",url="/forum/viewtopic.php?p=4545613#p4545613"]TRISx write only, поэтому правильно пишешь в TRISB.[/uquote]
То есть так здесь не работает ? для операции логического или необходимо сначала считать регистр, потом по или произвести сложение и записать ......
- Реклама
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: PIC16F57 проблемы с программированием.
[uquote="vdv22",url="/forum/viewtopic.php?p=4545627#p4545627"]То есть так здесь не работает ? для операции логического или необходимо сначала считать регистр, потом по или произвести сложение и записать ......[/uquote]
В этом контроллере нет регистра TRISA или TRISB. Есть инструкция tris, которая записывает содержимое аккумулятора в регистр управления драйвером порта (аппаратно эквивалентен TRIS).
Поэтому его невозможно прочитать. Если есть такая потребность, нужно организовать копию в ОЗУ и совершать над ней те же манипуляции, что и с невидимой TRIS. Или не совершать никакой математики связанной с чтением TRIS.
В этом контроллере нет регистра TRISA или TRISB. Есть инструкция tris, которая записывает содержимое аккумулятора в регистр управления драйвером порта (аппаратно эквивалентен TRIS).
Поэтому его невозможно прочитать. Если есть такая потребность, нужно организовать копию в ОЗУ и совершать над ней те же манипуляции, что и с невидимой TRIS. Или не совершать никакой математики связанной с чтением TRIS.
Re: PIC16F57 проблемы с программированием.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4545693#p4545693"][uquote="vdv22",url="/forum/viewtopic.php?p=4545627#p4545627"]То есть так здесь не работает ? для операции логического или необходимо сначала считать регистр, потом по или произвести сложение и записать ......[/uquote]
В этом контроллере нет регистра TRISA или TRISB. Есть инструкция tris, которая записывает содержимое аккумулятора в регистр управления драйвером порта (аппаратно эквивалентен TRIS).
Поэтому его невозможно прочитать. Если есть такая потребность, нужно организовать копию в ОЗУ и совершать над ней те же манипуляции, что и с невидимой TRIS. Или не совершать никакой математики связанной с чтением TRIS.[/uquote]
Значит запись TRISB=0 переведет порт В на выход?
В этом контроллере нет регистра TRISA или TRISB. Есть инструкция tris, которая записывает содержимое аккумулятора в регистр управления драйвером порта (аппаратно эквивалентен TRIS).
Поэтому его невозможно прочитать. Если есть такая потребность, нужно организовать копию в ОЗУ и совершать над ней те же манипуляции, что и с невидимой TRIS. Или не совершать никакой математики связанной с чтением TRIS.[/uquote]
Значит запись TRISB=0 переведет порт В на выход?
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: PIC16F57 проблемы с программированием.
Да. А если пытаться читать, делать маску и писать, то будет ошибка.
Re: PIC16F57 проблемы с программированием.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4545730#p4545730"]Да. А если пытаться читать, делать маску и писать, то будет ошибка.[/uquote]
Спасибо, с этим все понятно , а почему программатор ругается при прошивке откомпилированного кода?
Спасибо, с этим все понятно , а почему программатор ругается при прошивке откомпилированного кода?
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: PIC16F57 проблемы с программированием.
Дайте картинку (скопируйте сюда) "ругатни"
.
Не можем угадать, что показывает.
Не можем угадать, что показывает.
Re: PIC16F57 проблемы с программированием.
[uquote="veso74",url="/forum/viewtopic.php?p=4545743#p4545743"]Дайте картинку (скопируйте сюда) "ругатни"
.
Не можем угадать, что показывает.[/uquote] первое фото это считывания после попытки прошивки.
на втором фото при верификации возникает ошибка с адреса 040. То есть с адреса 040 записывается нулями. .
Не можем угадать, что показывает.[/uquote] первое фото это считывания после попытки прошивки.
на втором фото при верификации возникает ошибка с адреса 040. То есть с адреса 040 записывается нулями. .
- Вложения
-
- считывание после прошивки.png
- (26.84 КБ) 142 скачивания
-
- верификация.png
- (37.44 КБ) 127 скачиваний
-
- 2024-02-21 20_51_58-Window.png
- (24.9 КБ) 139 скачиваний
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: PIC16F57 проблемы с программированием.
[uquote="vdv22",url="/forum/viewtopic.php?p=4545889#p4545889"]с адреса 040 записывается нулями. .[/uquote]
А ничего, что у вас в конфигурации прошивка залочена?

А ничего, что у вас в конфигурации прошивка залочена?
Re: PIC16F57 проблемы с программированием.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4545893#p4545893"][uquote="vdv22",url="/forum/viewtopic.php?p=4545889#p4545889"]с адреса 040 записывается нулями. .[/uquote]
А ничего, что у вас в конфигурации прошивка залочена?
[/uquote]
а как это убрать?
Добавлено after 2 minutes 52 seconds:
[uquote="vdv22",url="/forum/viewtopic.php?p=4545895#p4545895"][uquote="КРАМ",url="/forum/viewtopic.php?p=4545893#p4545893"][uquote="vdv22",url="/forum/viewtopic.php?p=4545889#p4545889"]с адреса 040 записывается нулями. .[/uquote]
А ничего, что у вас в конфигурации прошивка залочена?
[/uquote]
а как это убрать?[/uquote]
Сразу прошу прощения за вопрос - я с ПИКами очень мало работал - с 870 и писалось и прошивалось все без проблем.
А ничего, что у вас в конфигурации прошивка залочена?
а как это убрать?
Добавлено after 2 minutes 52 seconds:
[uquote="vdv22",url="/forum/viewtopic.php?p=4545895#p4545895"][uquote="КРАМ",url="/forum/viewtopic.php?p=4545893#p4545893"][uquote="vdv22",url="/forum/viewtopic.php?p=4545889#p4545889"]с адреса 040 записывается нулями. .[/uquote]
А ничего, что у вас в конфигурации прошивка залочена?
а как это убрать?[/uquote]
Сразу прошу прощения за вопрос - я с ПИКами очень мало работал - с 870 и писалось и прошивалось все без проблем.
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: PIC16F57 проблемы с программированием.
[uquote="vdv22",url="/forum/viewtopic.php?p=4545895#p4545895"]как это убрать?[/uquote]
А код ваш?
В коде должно быть прописано слово конфигурации.
Из представленного скрина видно. что конфиг равен FF7, где четвертый (третий от нуля) бит - это code protect.
Если он равен 0 - прошивка закрыта. Если 1 - открыта.
То есть открытый код в конфиге будет выглядеть как FFF.
А код ваш?
В коде должно быть прописано слово конфигурации.
Из представленного скрина видно. что конфиг равен FF7, где четвертый (третий от нуля) бит - это code protect.
Если он равен 0 - прошивка закрыта. Если 1 - открыта.
То есть открытый код в конфиге будет выглядеть как FFF.
Re: PIC16F57 проблемы с программированием.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4545898#p4545898"][uquote="vdv22",url="/forum/viewtopic.php?p=4545895#p4545895"]как это убрать?[/uquote]
А код ваш?
В коде должно быть прописано слово конфигурации.
Из представленного скрина видно. что конфиг равен FF7, где четвертый (третий от нуля) бит - это code protect.
Если он равен 0 - прошивка закрыта. Если 1 - открыта.
То есть открытый код в конфиге будет выглядеть как FFF.[/uquote]
Да, код мой, с защитой разобрался ,огромное спасибо -сейчас прошивается нормально, но светодиод все равно не горит ... подскажите что не так ?
#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);
}
}
А код ваш?
В коде должно быть прописано слово конфигурации.
Из представленного скрина видно. что конфиг равен FF7, где четвертый (третий от нуля) бит - это code protect.
Если он равен 0 - прошивка закрыта. Если 1 - открыта.
То есть открытый код в конфиге будет выглядеть как FFF.[/uquote]
Да, код мой, с защитой разобрался ,огромное спасибо -сейчас прошивается нормально, но светодиод все равно не горит ... подскажите что не так ?
#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);
}
}
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: PIC16F57 проблемы с программированием.
А у вас кварц подключен?
ЗЫ. Не цитируйте предыдущее сообщение полностью.
Не оставляйте в цитатах вложенные цитаты.
Прочтите, наконец, Правила форума. Или вы рискуете быть забаненным.
ЗЫ. Не цитируйте предыдущее сообщение полностью.
Не оставляйте в цитатах вложенные цитаты.
Прочтите, наконец, Правила форума. Или вы рискуете быть забаненным.
Последний раз редактировалось КРАМ Ср фев 21, 2024 17:44:39, всего редактировалось 1 раз.
Re: PIC16F57 проблемы с программированием.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4545903#p4545903"]А у вас кварц подключен?[/uquote]
да, конечно - 8000000 гц.
да, конечно - 8000000 гц.
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: PIC16F57 проблемы с программированием.
Генерация на кварце есть? Емкости на кварце какие?
ЗЫ. Уехал с работы домой. Буду дома только после 20-00 по Москве.
ЗЫ. Уехал с работы домой. Буду дома только после 20-00 по Москве.
Re: PIC16F57 проблемы с программированием.
еще раз спасибо за помощь!!! разобрался -на RESET надо было повесить +5
Добавлено after 2 hours 26 minutes 55 seconds:
[uquote="КРАМ",url="/forum/viewtopic.php?p=4545910#p4545910"]Генерация на кварце есть? Емкости на кварце какие?
ЗЫ. Уехал с работы домой. Буду дома только после 20-00 по Москве.[/uquote]
Еще один вопрос возник -как опрашивать вход ? Конструкции типа if(RA1) или (PORTB & (1 << 3)) не работают - тут тоже какие то подводные камни есть ?
Добавлено after 2 hours 26 minutes 55 seconds:
[uquote="КРАМ",url="/forum/viewtopic.php?p=4545910#p4545910"]Генерация на кварце есть? Емкости на кварце какие?
ЗЫ. Уехал с работы домой. Буду дома только после 20-00 по Москве.[/uquote]
Еще один вопрос возник -как опрашивать вход ? Конструкции типа if(RA1) или (PORTB & (1 << 3)) не работают - тут тоже какие то подводные камни есть ?
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: PIC16F57 проблемы с программированием.
[uquote="vdv22",url="/forum/viewtopic.php?p=4545916#p4545916"]тут тоже какие то подводные камни есть ?[/uquote]
Подводные камни есть при побитной записи в порт. Ибо это процедура RMW, которая из-за отсутствия входной защелки порта способна перезаписать входные состояния пинов в выходную защелку по всем разрядам порта кроме явно устанавливаемого.
Чтение особых проблем не имеет, хотя гораздо корректнее НА ЛЮБОМ контроллере для атомарности чтения сначала защелкнуть порт в переменную, а лишь затем производить какие либо if-ы, switch-и и другие действия. Даже если вы пишите на АСМе и понимаете реальный исполняемый код.
Подводные камни есть при побитной записи в порт. Ибо это процедура RMW, которая из-за отсутствия входной защелки порта способна перезаписать входные состояния пинов в выходную защелку по всем разрядам порта кроме явно устанавливаемого.
Чтение особых проблем не имеет, хотя гораздо корректнее НА ЛЮБОМ контроллере для атомарности чтения сначала защелкнуть порт в переменную, а лишь затем производить какие либо if-ы, switch-и и другие действия. Даже если вы пишите на АСМе и понимаете реальный исполняемый код.


