| Автор |
Съобщение |
|
me40
Ранг: Новодошъл
Регистриран на: Пет Авг 25, 2006 11:31 pm Мнения: 168 Местоположение: Русе
|
 Замяна PIC18F452 на PIC18F4420
Имам програмки писани на асемблер за PIC18F452. Нa негово място искам да бодна PIC18F4420. Хардуерно чиповете се заменят (поне това , което аз ползвам - на PORTB закачен LCD дисплей, I2C, някой друг вход за бутон, външен осцилатор на Таймер 1 и те такива работи).
Имам 5 чипа, така че изключвам вероятността от дефектен. Отначало пробвах на мойте програмки да сменя само конфигурационните битове, но все не тръгва - познавам по инициализацията на дисплея. Снощи реших да изхвърля всичко и само боднах един светодиод на PORTD, 7.... после на PORTC, 1...., но стигнах само до палене или гасене на светодиода и то при самото включване.
Първо пробвах 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 |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
1. Английски предполагам знаеш ...
2. www.microchip.com - 39631D.pdf
3. Не виждам нищо нередно в конфигурацията и в програмата.
4. Резета как ти е вързан?
|
| Вто Юли 14, 2009 10:00 am |
|
 |
|
Gosho75
Ранг: Минаващ
Регистриран на: Чет Ное 16, 2006 1:45 pm Мнения: 18 Местоположение: Sofia
|
Конфигурацията е наред. Проблемът идва от програмката. Палиш диода, чакаш някакво време, гасиш диода и веднага го палиш отново. Нормално да свети постоянно.
Добра практика при PIC18 е да се ползват LAT регистрите за писане в портовете, а не PORT. Така се избягва някои "странни" ефекти от така наречените Read Modifity Write операции.
|
| Вто Юли 14, 2009 10:08 am |
|
 |
|
bongo_x2
Ранг: Форумен бог
Регистриран на: Вто Яну 20, 2009 11:54 pm Мнения: 11338 Местоположение: "Занзибар"
|
Само от любопитство: как се излиза от delay или GOTO E7 не е безусловен преход?
Това е първият код на когото обръщам внимание от 10-15 г. насам, не че съм наясно с операторите. Обаче крайно време е и аз да стана пикоборец и да почна с тъпите въпроси
Edit: май разбрах как, с това ",1". Няма значение - пренебрегнете поста ми.
|
| Вто Юли 14, 2009 8:23 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Ами за съжаление 1-цата означава друго а именно къде да се запише резултата от инструкцията, а самата инструкция DECFSZ означава dec file, skip if zero. Демек намали проенливата с 1, прескочи следващата инструкция ако е нула. Като си решил да пикоборстваш, асемблера им го има описан на много места, включително и в пдф-ите.
|
| Вто Юли 14, 2009 9:36 pm |
|
 |
|
a_stankov
Ранг: Новодошъл
Регистриран на: Съб Дек 06, 2008 9:22 am Мнения: 119 Местоположение: Пловдив
|
 Re: Замяна PIC18F452 на PIC18F4420
Първо пробвах 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 |
|
 |
|
me40
Ранг: Новодошъл
Регистриран на: Пет Авг 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 |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
Със сигурност не си инициализирал нещо.
Първо, провери дали не са аналогови I/O защото тези процесори имат неудобството ако не си ги направил цифрови по дефаулт са аналогови !
Второ, работните честоти еднакви ли са?
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Вто Юли 28, 2009 12:17 am |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Ми аз съм заменял 452 директо със 4520, като съответно конфига се оправя както трябва. Тръгна си от воле, само прекомпилирах софта за 4520. Сега на първо четене не мога да кажа разликите в адресите на сфр, ама мисля че нямаше някакви разлики в основните. Доколкото си спомням май само на ацп-то и на ццп-модула имаше някакви разлики.
|
| Вто Юли 28, 2009 7:32 pm |
|
 |
|
me40
Ранг: Новодошъл
Регистриран на: Пет Авг 25, 2006 11:31 pm Мнения: 168 Местоположение: Русе
|
Конфигурацията е както на първият ми пост !!!
Това НЕ РАБОТИ !!!
ТОВА РАБОТИ !!!!
Да поясня набързо:
На PORTD,2 има закачен светодиод. Когато входа за задействането му е PORTD, 1 се пали светодиода при подаване на лог.1
Когато входа за задействането му е PORTA, 1 не пали при подаване на лог. 1. Именно затова не ми тръгва дисплея както бях писал по-горе
Някакви идеи? Инициализацията на портовете я преписах от pdf-a на чипа.
 , 
|
| Сря Юли 29, 2009 9:01 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Виж ся, отваряш пдф-а на съответния чип (в твоя случай 4420)
1 : гледаш на пин дескрипшън каква периферия има на дадения пин.
2 : отиваш на съответната(ите) периферии и гледаш как се настройват да работят/неработят.
3 : повтаряш горните две за всички пинове които те интересуват и колкото периферии има там.
4 : описваш съответните регистрите
По дефолт обаче повечето периферии са изключени освен аналоговите входове както вече беше споменато няколко пъти.
В случая с 4420 има бит в конфига (PBADEN) който може да включи/изключи ан. входовете при POR. Ако той е сетнат трябва преди да ползваш порта да имаш ADCON1 = 0Fh.
|
| Сря Юли 29, 2009 10:39 pm |
|
 |
|
me40
Ранг: Новодошъл
Регистриран на: Пет Авг 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 пу да му се невиди
Всичко е ОК 
|
| Чет Юли 30, 2009 8:37 am |
|
|