Отговори на тема  [ 13 мнения ] 
Замяна PIC18F452 на PIC18F4420 
Автор Съобщение
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Авг 25, 2006 11:31 pm
Мнения: 168
Местоположение: Русе
Мнение Замяна PIC18F452 на PIC18F4420
Имам програмки писани на асемблер за PIC18F452. Нa негово място искам да бодна PIC18F4420. Хардуерно чиповете се заменят (поне това , което аз ползвам - на PORTB закачен LCD дисплей, I2C, някой друг вход за бутон, външен осцилатор на Таймер 1 и те такива работи).
Имам 5 чипа, така че изключвам вероятността от дефектен. Отначало пробвах на мойте програмки да сменя само конфигурационните битове, но все не тръгва - познавам по инициализацията на дисплея. Снощи реших да изхвърля всичко и само боднах един светодиод на PORTD, 7.... после на PORTC, 1...., но стигнах само до палене или гасене на светодиода и то при самото включване.

Цитат:
CONFIG OSC = HS
CONFIG FCMEN = OFF
CONFIG IESO = ON
CONFIG PWRT = OFF
CONFIG BOREN = SBORDIS
CONFIG BORV = 1
CONFIG WDT = OFF
CONFIG WDTPS = 128
CONFIG MCLRE = ON
CONFIG LPT1OSC = ON
CONFIG PBADEN = OFF
CONFIG CCP2MX = PORTBE
CONFIG STVREN = ON
CONFIG LVP = OFF
CONFIG XINST = OFF
CONFIG DEBUG = OFF
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CPB = OFF
CONFIG CPD = OFF
CONFIG WRT1 = OFF
CONFIG WRTB = OFF
CONFIG WRTC = OFF
CONFIG WRTD = OFF
CONFIG EBTR0 = OFF
CONFIG EBTR1 = OFF
CONFIG EBTRB = OFF

ORG 0x000
GOTO 0x10
ORG 0x10

BR1 EQU 0x60

CLRF TRISD ; PORTD - изходи
E1 BSF PORTD, 7
CALL delay
CALL delay
BCF PORTD, 7
GOTO E1

delay MOVLW 0xFF
MOVWF BR1
E7 DECFSZ BR1,1
GOTO E7
RETURN

END


Първо пробвах delay с някой таймер...все тая !
Ако първо имам BSF PORTD, 7 - светодиода светва и ....дотам
Ако пък BCF PORTD, 7 - светодиода изгасва и....дотам


Водих се от ww1.microchip.com/.../en/.../C18_Config_Settings_51537e.pdf

Все си мисля , че имам нещо пропуснато. Само ми е ясно, че не е проблема в конфигурацията от 'CONFIG DEBUG = OFF' надолу, а някъде по-нагоре.
Как ли не ги въртях (ON, OFF). Някой от битовете не ми е ясно и какво точно правят.
Ако някой е писал или просто знае нещо по въпроса за PICF4420 ще съм благодарен да помогне.


Вто Юли 14, 2009 8:56 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Предполагам че имаш проблем с осцилаторите. Мързи ме да чета, ама по бегли спомени PLL-а трябваше да пусне отвътре с инструкция. Имаше и още нещо по стартирането на генераторите - кога да тръгва от RC-то кога директно от кварца. Абе там където е описан осцилатора го пишеше.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Юли 14, 2009 9:57 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
1. Английски предполагам знаеш ...
2. www.microchip.com - 39631D.pdf
3. Не виждам нищо нередно в конфигурацията и в програмата.
4. Резета как ти е вързан?


Вто Юли 14, 2009 10:00 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Ное 16, 2006 1:45 pm
Мнения: 18
Местоположение: Sofia
Мнение 
Конфигурацията е наред. Проблемът идва от програмката. Палиш диода, чакаш някакво време, гасиш диода и веднага го палиш отново. Нормално да свети постоянно.

Добра практика при PIC18 е да се ползват LAT регистрите за писане в портовете, а не PORT. Така се избягва някои "странни" ефекти от така наречените Read Modifity Write операции.


Вто Юли 14, 2009 10:08 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Яну 20, 2009 11:54 pm
Мнения: 11338
Местоположение: "Занзибар"
Мнение 
Само от любопитство: как се излиза от delay или GOTO E7 не е безусловен преход?
Това е първият код на когото обръщам внимание от 10-15 г. насам, не че съм наясно с операторите. Обаче крайно време е и аз да стана пикоборец и да почна с тъпите въпроси :)

Edit: май разбрах как, с това ",1". Няма значение - пренебрегнете поста ми.


Вто Юли 14, 2009 8:23 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Ами за съжаление 1-цата означава друго а именно къде да се запише резултата от инструкцията, а самата инструкция DECFSZ означава dec file, skip if zero. Демек намали проенливата с 1, прескочи следващата инструкция ако е нула. Като си решил да пикоборстваш, асемблера им го има описан на много места, включително и в пдф-ите.


Вто Юли 14, 2009 9:36 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Съб Дек 06, 2008 9:22 am
Мнения: 119
Местоположение: Пловдив
Мнение Re: Замяна PIC18F452 на PIC18F4420
me40 написа:
ORG 0x000
GOTO 0x10
ORG 0x10

BR1 EQU 0x60

CLRF TRISD ; PORTD - изходи
E1 BSF PORTD, 7
CALL delay
CALL delay
BCF PORTD, 7
GOTO E1

delay MOVLW 0xFF
MOVWF BR1
E7 DECFSZ BR1,1
GOTO E7
RETURN

END


Първо пробвах delay с някой таймер...все тая !
Ако първо имам BSF PORTD, 7 - светодиода светва и ....дотам
Ако пък BCF PORTD, 7 - светодиода изгасва и....дотам


[/quote]

Това което си написал като асемблерски код , напълно отговаря на описаното поведение на микроконтролера.
Обяснявам
Представиси ,че една инструкция ти е 1 микросекунда.Това което си написал е следното

Светни диода
пауза ~ 120 uS
Изключи светодиода
пауза ~ 1uS
отиди пак да светнеш диода

И очакваш да видиш пауза от около малко повече от микросекунда?Направиси един делай от Н наброй препълвания на таймер
и тогава
E1
BSF
CALL DELAY
BCF
CALL DELAY
GOTO E1

И ще видиш мигането ,но нека делая да е от порядъка на 0.5 сек.


Сря Юли 15, 2009 7:18 am
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Авг 25, 2006 11:31 pm
Мнения: 168
Местоположение: Русе
Мнение 
Не съм човъркал десетина дни и тази вечер пак се захванах.
В крайна сметка светодиода започна да мига (с таймер 1 - външен такт 32.768). Добре че съм запазил стария сорс.Видях че съм пропуснал да инициализирам BSF TRISC, 0 (т.е като вход - заради таймера) . Иначе по конфигурационните битове не съм пипал нищо, но с това не се реши проблема.

Веднага записах работеща програмка 'Часовник' (писана за PIC18F452) на въпросния PIC18F4420. Смених само конфигурационните битове.....и дръвце.
Това, което разбрах, е че дисплеят не се инициализира (предполагам повечето от вас знаят дисплеи от типа на AC-082A как изглеждат в такъв момент). Въпреки това програмата работи някак си, защото в такт около 1 сек дисплеят премигва, т.е сменя нещо си. На PORTC, 5 съм сложил светодиод, който трябва да светва през секунда, но той въобще пък не пали....

Замерих генерациите на основният кварц при работещият PIC18F452. Същите са като честота и амплитуда и при 4420,
Обаче Генерациите на 32.768 при 452 са 0.6 волта, а при 4420 0.4 и от време на време, като докосна сондата падат до нула и после пак се вдигат . При 452 не се наблюдава този ефект. Явно разликите в процесорите не са само в конфиг. битове(както ми се щеше). Дали всичко се върти около конфиг. и инициализацията на портовете или трябва да променям софтуера (main program). Като сравнявам двата pdf-a ми се виждат доста еднакви, ама на.....


Пон Юли 27, 2009 11:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение 
Със сигурност не си инициализирал нещо.
Първо, провери дали не са аналогови I/O защото тези процесори имат неудобството ако не си ги направил цифрови по дефаулт са аналогови !
Второ, работните честоти еднакви ли са?

_________________
Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !


Вто Юли 28, 2009 12:17 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Ми аз съм заменял 452 директо със 4520, като съответно конфига се оправя както трябва. Тръгна си от воле, само прекомпилирах софта за 4520. Сега на първо четене не мога да кажа разликите в адресите на сфр, ама мисля че нямаше някакви разлики в основните. Доколкото си спомням май само на ацп-то и на ццп-модула имаше някакви разлики.


Вто Юли 28, 2009 7:32 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Авг 25, 2006 11:31 pm
Мнения: 168
Местоположение: Русе
Мнение 
Конфигурацията е както на първият ми пост !!!

Това НЕ РАБОТИ !!!
Изображение

ТОВА РАБОТИ !!!!
Изображение


Да поясня набързо:
На PORTD,2 има закачен светодиод. Когато входа за задействането му е PORTD, 1 се пали светодиода при подаване на лог.1
Когато входа за задействането му е PORTA, 1 не пали при подаване на лог. 1. Именно затова не ми тръгва дисплея както бях писал по-горе

Някакви идеи? Инициализацията на портовете я преписах от pdf-a на чипа.
Изображение , Изображение


Сря Юли 29, 2009 9:01 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Виж ся, отваряш пдф-а на съответния чип (в твоя случай 4420)
1 : гледаш на пин дескрипшън каква периферия има на дадения пин.
2 : отиваш на съответната(ите) периферии и гледаш как се настройват да работят/неработят.
3 : повтаряш горните две за всички пинове които те интересуват и колкото периферии има там.
4 : описваш съответните регистрите

По дефолт обаче повечето периферии са изключени освен аналоговите входове както вече беше споменато няколко пъти.

В случая с 4420 има бит в конфига (PBADEN) който може да включи/изключи ан. входовете при POR. Ако той е сетнат трябва преди да ползваш порта да имаш ADCON1 = 0Fh.


Сря Юли 29, 2009 10:39 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Авг 25, 2006 11:31 pm
Мнения: 168
Местоположение: Русе
Мнение 
Благодаря на Cekins, че ми заостри вниманието.
Прочетох тази сутрин поста ти. Отворих ADCON1 REGISTER и отново загледах таблицата.
Там пише, че когато bit 3-0 PCFG3:PCFG0: са 1-ци тогава PORTA e Digital I/O т.е b'1111' -> hF, а аз като гледах снощи съм проброил 3 единици т.е b'111' -> h7 и порта веднага става A = Analog input пу да му се невиди :evil:
Всичко е ОК :)


Чет Юли 30, 2009 8:37 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 13 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни