Замена PIC16F84A на PIC16F628A
-
Strannik
- Встал на лапы
- Сообщения: 104
- Зарегистрирован: Ср ноя 12, 2008 01:28:22
- Откуда: Калуга-Москва
- Контактная информация:
Замена PIC16F84A на PIC16F628A
Можно ли заменить без изменения прошивки? Если нет, то что надо менять? заранее спасибо.
Если начинать изучать мелкоконтроллеры с нуля, то все же авр'ки более подходят для этого, пмнм хотя..
Без переделки нельзя.
насилу нашел на винте (сорри за длинную цитату - оригинальная страничка уже давно умерла), для 628 подходит. (если поможет, конечно)
---
Subject: [PIC]: Checklist for 16F84 to 16F627 code conversion
From: Ian Chapman (pic@CHAPMIP.DEMON.CO.UK)
Date: Thu Aug 02 2001 - 16:34:37 PDT
Folks,
I have been converting several 16F84 code files to run on the (cheaper)
16F627 parts. This generally seems to be a trivial task as the spec of
the F627 is a superset of that of the F84, but it seems to me that there
are some key differences which may be "gotchas" for the uninitiated.
I haven't seen a "minimum checklist" of points to resolve during this
conversion, so I thought I'd share my own list and invite comments:
1. General purpose registers start at 20H instead of 0CH.
(ACTION: Change CBLOCK start addresses and any other relevant
equates accordingly)
2. General purpose registers are not mapped across into all Banks
(except for 70H-7FH and its images). For example, on the F84, one
could assign a register with a Bank 0 address and assume that it
can still be accessed when RP0 is set. On the F627, the change to
RP0 will cause a different register to be accessed! In particular,
this is an issue for interrupt service routines for the F84 which
"doesn't care" about the state of the bank select bits on entry.
(ACTION: Check and correct any register accesses which occur while
bank bits are set to non-default values. Change interrupt service
routines to either use shared RAM (70H-7FH) for temporary storage,
or implement solution described in section 14.7 (Example 14-1) of
F627 data book)
3. CMCON register must be initialised to 07H after reset to ensure that
digital I/O (instead of comparator input) is enabled on RA0-RA4.
(ACTION: Add CMCON initialisation code to start-up routines)
4. EEADR and EEDATA registers have moved from Bank 0 to Bank 1.
(ACTION: Change positions of "BSF STATUS,RP0" and "BCF STATUS, RP0"
instructions in EEPROM read and write code fragments) (*)
(N.B. My copy of the 16F62X data book ("Preliminary") appears to
have implemented this change in Example 13-2 (Data EEPROM Write)
but not in Examples 13-1 and 13-3)
5. EEIE bit has moved from INTCON register (accessible from any Bank)
to PIE1 register (Bank 1 only), and EEIF bit has moved from EECON1
register (Bank 1 only) to PIR1 (Bank 0 only).
(ACTION: Change BSF/BCF instructions accordingly and ensure Bank
bits are set correctly before attempting to access these bits)
6. PROCESSOR (or LIST) directive needs to be changed from 16F84 to
16F627, and __CONFIG directive needs to include _LVP_OFF (to free
up RB4) and _BODEN_OFF (for strict F84 compatibility).
(ACTION: Change directives as indicated above)
As I understand it, CMCON is the only special function register that is
"new" in the F627 which needs to be explicitly initialised after reset
to ensure F84 compatibility. However, there may be a case for explicit
initialisation of other registers for extra robustness - any views?
Obviously, I haven't attempted to cover above any code optimisations
that may be possible given the greater resources of the F627 (more RAM
and EEPROM, on-chip USART etc.). I have just focussed on getting the
F627 operating as a "drop-in replacement" for an F84.
Have I missed anything?
--
Ian Chapman
Subject: 16F627,8 'gotchas'
Date: Sun, 21 Oct 2001 11:00:16 -0700
From: "Robert Scobey" @rivergrovewinery.com>
To: "Ian Chapman" <pic>
CC: "don" <dontronics>
Ian,
I found your posting of Aug 2 on converting 16F84 to 16F627. Thank you for sharing your work.
In a similar effort I found another 'gotcha' If you are doing 'in circuit programming', or developing using DONTRONICS DT001 (an excellent device), beware of having voltagepullup on RB4 of 16F627,8. RB4 must be open or at 0 volts to have drop in hardware circuit compatability to the 16F84. Otherwise, low voltage programming is requested by 16F627,8.
Subject: Re: [PIC]: 16F84A - 16F627 CONVERSION
Date: Tue, 27 Nov 2001 08:54:48 +1100
From: Tony Nixon <Tony>
Reply-To: pic microcontroller discussion list <PICLIST>
It would pay to read the data sheet as there are a few differences.
More ROM/RAM/EEPROM
EEPROM Read/Write registers located at different addresses
Disable the comparators
movlw b'00000111' ; disable comparators
movwf CMCON
RB4 used for LVP mode if LVP FUSE active
More fuses to set, MCLR, OSC1 and OSC2 can be used as IO pins
UART and Comparators
Probably more, but I can't think of them
Oh yeah - cheaper!!
Best regards Tony
---
Без переделки нельзя.
насилу нашел на винте (сорри за длинную цитату - оригинальная страничка уже давно умерла), для 628 подходит. (если поможет, конечно)
---
Subject: [PIC]: Checklist for 16F84 to 16F627 code conversion
From: Ian Chapman (pic@CHAPMIP.DEMON.CO.UK)
Date: Thu Aug 02 2001 - 16:34:37 PDT
Folks,
I have been converting several 16F84 code files to run on the (cheaper)
16F627 parts. This generally seems to be a trivial task as the spec of
the F627 is a superset of that of the F84, but it seems to me that there
are some key differences which may be "gotchas" for the uninitiated.
I haven't seen a "minimum checklist" of points to resolve during this
conversion, so I thought I'd share my own list and invite comments:
1. General purpose registers start at 20H instead of 0CH.
(ACTION: Change CBLOCK start addresses and any other relevant
equates accordingly)
2. General purpose registers are not mapped across into all Banks
(except for 70H-7FH and its images). For example, on the F84, one
could assign a register with a Bank 0 address and assume that it
can still be accessed when RP0 is set. On the F627, the change to
RP0 will cause a different register to be accessed! In particular,
this is an issue for interrupt service routines for the F84 which
"doesn't care" about the state of the bank select bits on entry.
(ACTION: Check and correct any register accesses which occur while
bank bits are set to non-default values. Change interrupt service
routines to either use shared RAM (70H-7FH) for temporary storage,
or implement solution described in section 14.7 (Example 14-1) of
F627 data book)
3. CMCON register must be initialised to 07H after reset to ensure that
digital I/O (instead of comparator input) is enabled on RA0-RA4.
(ACTION: Add CMCON initialisation code to start-up routines)
4. EEADR and EEDATA registers have moved from Bank 0 to Bank 1.
(ACTION: Change positions of "BSF STATUS,RP0" and "BCF STATUS, RP0"
instructions in EEPROM read and write code fragments) (*)
(N.B. My copy of the 16F62X data book ("Preliminary") appears to
have implemented this change in Example 13-2 (Data EEPROM Write)
but not in Examples 13-1 and 13-3)
5. EEIE bit has moved from INTCON register (accessible from any Bank)
to PIE1 register (Bank 1 only), and EEIF bit has moved from EECON1
register (Bank 1 only) to PIR1 (Bank 0 only).
(ACTION: Change BSF/BCF instructions accordingly and ensure Bank
bits are set correctly before attempting to access these bits)
6. PROCESSOR (or LIST) directive needs to be changed from 16F84 to
16F627, and __CONFIG directive needs to include _LVP_OFF (to free
up RB4) and _BODEN_OFF (for strict F84 compatibility).
(ACTION: Change directives as indicated above)
As I understand it, CMCON is the only special function register that is
"new" in the F627 which needs to be explicitly initialised after reset
to ensure F84 compatibility. However, there may be a case for explicit
initialisation of other registers for extra robustness - any views?
Obviously, I haven't attempted to cover above any code optimisations
that may be possible given the greater resources of the F627 (more RAM
and EEPROM, on-chip USART etc.). I have just focussed on getting the
F627 operating as a "drop-in replacement" for an F84.
Have I missed anything?
--
Ian Chapman
Subject: 16F627,8 'gotchas'
Date: Sun, 21 Oct 2001 11:00:16 -0700
From: "Robert Scobey" @rivergrovewinery.com>
To: "Ian Chapman" <pic>
CC: "don" <dontronics>
Ian,
I found your posting of Aug 2 on converting 16F84 to 16F627. Thank you for sharing your work.
In a similar effort I found another 'gotcha' If you are doing 'in circuit programming', or developing using DONTRONICS DT001 (an excellent device), beware of having voltagepullup on RB4 of 16F627,8. RB4 must be open or at 0 volts to have drop in hardware circuit compatability to the 16F84. Otherwise, low voltage programming is requested by 16F627,8.
Subject: Re: [PIC]: 16F84A - 16F627 CONVERSION
Date: Tue, 27 Nov 2001 08:54:48 +1100
From: Tony Nixon <Tony>
Reply-To: pic microcontroller discussion list <PICLIST>
It would pay to read the data sheet as there are a few differences.
More ROM/RAM/EEPROM
EEPROM Read/Write registers located at different addresses
Disable the comparators
movlw b'00000111' ; disable comparators
movwf CMCON
RB4 used for LVP mode if LVP FUSE active
More fuses to set, MCLR, OSC1 and OSC2 can be used as IO pins
UART and Comparators
Probably more, but I can't think of them
Oh yeah - cheaper!!
Best regards Tony
---
Вот еще цитата:
Что необходимо для перевода программы с PIC16F84A на новый более мощный и более дешевый PIC16F628?
Эти контроллеры совместимы по расположению выводов, но имеют различную внутреннюю структуру организации памяти, поэтому для перевода программы с PIC16F84A на PIC16F628 необходимо обратить внимание на отличия:
Биты конфигурации.
- Если бит LVP=1, то включен режим низковольтного программирования, при котором вывод RB4 как порт ввода/вывода использоваться не может.
- Если в устройстве используется внешний сброс микроконтроллера, то бит MCLRE должен быть "1".
- Обратите внимание на биты конфигурации тактового генератора.
При инициализации PORTA необходимо отключить компаратор (поскольку в PIC16F84 его нет), ниже приведен пример программы: CLRF PORTA
MOVLW 0X07
MOVWF CMCON
BCF STATUS, RP1
BSF STATUS, RP0
MOVLW 0x1F
MOVWF TRISA
В PIC16F84А бит разрешения прерываний от EEPROM памяти EEIE находиться в регистре INTCON<6>, а в PIC16F628 на этом месте бит разрешения прерываний от периферийных модулей PEIE, а бит EEIE лежит в регистре PIE1<7>. Проверьте размещение битов прерываний от EEPROM памяти данных.
Регистры работы с EEPROM лежат по разным адресам и разным банкам памяти.
Регистры общего назначения в PIC16F84А начинаются с адреса 0Ch/8Ch в банках 0/1 соответственно. В PIC16F628 регистры специального назначения расположены в первых 32 регистрах банков памяти (0-1F для банка 0). Некорректное обращение с этими регистрами может привести к непредсказуемой работе программы.
В PIC16F84А область памяти данных 8Ch - CFh отображается на 0Ch - 4Fh. В PIC16F628 отображаемая область памяти данных во всех банках расположена по адресу 70h -7Fh.
В PIC16F84А два банка памяти, поэтому бит PR1 (для прямой адресации) и IRP (для косвенной адресации) в регистре STATUS не имели значения. В PIC16F628 четыре банка памяти данных, и указанные биты управляют их выбором. Проверьте использование этих битов в программе.
Подсмотрено на казус.ру
Что необходимо для перевода программы с PIC16F84A на новый более мощный и более дешевый PIC16F628?
Эти контроллеры совместимы по расположению выводов, но имеют различную внутреннюю структуру организации памяти, поэтому для перевода программы с PIC16F84A на PIC16F628 необходимо обратить внимание на отличия:
Биты конфигурации.
- Если бит LVP=1, то включен режим низковольтного программирования, при котором вывод RB4 как порт ввода/вывода использоваться не может.
- Если в устройстве используется внешний сброс микроконтроллера, то бит MCLRE должен быть "1".
- Обратите внимание на биты конфигурации тактового генератора.
При инициализации PORTA необходимо отключить компаратор (поскольку в PIC16F84 его нет), ниже приведен пример программы: CLRF PORTA
MOVLW 0X07
MOVWF CMCON
BCF STATUS, RP1
BSF STATUS, RP0
MOVLW 0x1F
MOVWF TRISA
В PIC16F84А бит разрешения прерываний от EEPROM памяти EEIE находиться в регистре INTCON<6>, а в PIC16F628 на этом месте бит разрешения прерываний от периферийных модулей PEIE, а бит EEIE лежит в регистре PIE1<7>. Проверьте размещение битов прерываний от EEPROM памяти данных.
Регистры работы с EEPROM лежат по разным адресам и разным банкам памяти.
Регистры общего назначения в PIC16F84А начинаются с адреса 0Ch/8Ch в банках 0/1 соответственно. В PIC16F628 регистры специального назначения расположены в первых 32 регистрах банков памяти (0-1F для банка 0). Некорректное обращение с этими регистрами может привести к непредсказуемой работе программы.
В PIC16F84А область памяти данных 8Ch - CFh отображается на 0Ch - 4Fh. В PIC16F628 отображаемая область памяти данных во всех банках расположена по адресу 70h -7Fh.
В PIC16F84А два банка памяти, поэтому бит PR1 (для прямой адресации) и IRP (для косвенной адресации) в регистре STATUS не имели значения. В PIC16F628 четыре банка памяти данных, и указанные биты управляют их выбором. Проверьте использование этих битов в программе.
Подсмотрено на казус.ру
- Дмитрий1983
- Родился
- Сообщения: 5
- Зарегистрирован: Пн фев 28, 2011 21:26:45
Re: Замена PIC16F84A на PIC16F628A
Если есть схема, исходник прошивки для PIC16F84 может кто помочь с переводом всего на PIC16F628 (A) ?
Я в этих вопросах совсем не силен. 
- Dmitry Dubrovenko
- Поставщик валерьянки для Кота
- Сообщения: 2349
- Зарегистрирован: Вс янв 09, 2011 16:51:39
- Откуда: Санкт-Ленинград
- Контактная информация:
Re: Замена PIC16F84A на PIC16F628A
А что за устройство?
Может оно уже давно на 628 существует.
Может оно уже давно на 628 существует.
ICQ нет, и, в ближайшее время, не будет.
- К@Т
- Говорящий с текстолитом
- Сообщения: 1573
- Зарегистрирован: Сб окт 09, 2010 12:33:48
- Откуда: Незалежная
Re: Замена PIC16F84A на PIC16F628A
628 это доделаный 84(воткнули внутр.генератор,компаратор, и т.д.).Поэтому переделать исходник можно .Хотя парадокс в цене этих камней-84 стоит 150р,а 628 стоит 100(технополис г.Курск).
Выкладывай -постараюсь помочь.
Дмитрий1983 писал(а):Если есть схема, исходник прошивки для PIC16F84 может кто помочь с переводом всего на PIC16F628 (A) ?
Выкладывай -постараюсь помочь.
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
- Дмитрий1983
- Родился
- Сообщения: 5
- Зарегистрирован: Пн фев 28, 2011 21:26:45
Re: Замена PIC16F84A на PIC16F628A
Схема устройства, а также описание его работы приведены на сайте
http://ua3usy.narod.ru/ZA.htm
Есть также ветка на форуме об этом, но вопроса перехода на другой тип микросхемы не преследуется.
Есть ли возможность перевести схему для работы с PIC16F84 на PIC16F628A ?
Во вложении архив со схемой устройства и прошивкой, взятого с вышеуказанного сайта.
http://ua3usy.narod.ru/ZA.htm
Есть также ветка на форуме об этом, но вопроса перехода на другой тип микросхемы не преследуется.
Есть ли возможность перевести схему для работы с PIC16F84 на PIC16F628A ?
Во вложении архив со схемой устройства и прошивкой, взятого с вышеуказанного сайта.
- Вложения
-
- ignition.zip
- (25.11 КБ) 608 скачиваний
- Dmitry Dubrovenko
- Поставщик валерьянки для Кота
- Сообщения: 2349
- Зарегистрирован: Вс янв 09, 2011 16:51:39
- Откуда: Санкт-Ленинград
- Контактная информация:
Re: Замена PIC16F84A на PIC16F628A
Да сказали же уже неоднократно, что ЕСТЬ.Дмитрий1983 писал(а):Есть ли возможность перевести схему для работы с PIC16F84 на PIC16F628A ?
Надо только правильно сконфигурировать фьюзы, "отключить" компараторы и источник образцового напряжения, и проверить адреса регистров ОЗУ (при необходимости, скорректировать).
ICQ нет, и, в ближайшее время, не будет.
- К@Т
- Говорящий с текстолитом
- Сообщения: 1573
- Зарегистрирован: Сб окт 09, 2010 12:33:48
- Откуда: Незалежная
Re: Замена PIC16F84A на PIC16F628A
[/quote]Дмитрий1983 писал(а):Есть ли возможность перевести схему для работы с PIC16F84 на PIC16F628A ?
Если вам так невтерпёж,что вопрошаете через час,то вот вам карты в рукиhttp://www.labkit.ru/html/Assembler_for_PIC,http://www.labkit.ru/html/PIC_rus и тосуйте их сами.
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
- Дмитрий1983
- Родился
- Сообщения: 5
- Зарегистрирован: Пн фев 28, 2011 21:26:45
Re: Замена PIC16F84A на PIC16F628A
К@Т писал(а):Дмитрий1983 писал(а):Есть ли возможность перевести схему для работы с PIC16F84 на PIC16F628A ?
Если вам так невтерпёж,что вопрошаете через час,то вот вам карты в рукиhttp://www.labkit.ru/html/Assembler_for_PIC,http://www.labkit.ru/html/PIC_rus и тосуйте их сами.[/quote]
Да нет, это не горит, конешно могу подождать. Сам все равно не смогу сделать
Быстро отправил, потому что инет тормозит, боялся что совсем прекратит работать