| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Замяна PIC18F452 на PIC18F4420 http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=6978 |
Страница 1 от 1 |
| Автор: | me40 [ Вто Юли 14, 2009 8:56 am ] | |||||||||
| Заглавие: | Замяна 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 9:57 am ] |
| Заглавие: | |
Предполагам че имаш проблем с осцилаторите. Мързи ме да чета, ама по бегли спомени PLL-а трябваше да пусне отвътре с инструкция. Имаше и още нещо по стартирането на генераторите - кога да тръгва от RC-то кога директно от кварца. Абе там където е описан осцилатора го пишеше. |
|
| Автор: | Cekins [ Вто Юли 14, 2009 10:00 am ] |
| Заглавие: | |
1. Английски предполагам знаеш ... 2. www.microchip.com - 39631D.pdf 3. Не виждам нищо нередно в конфигурацията и в програмата. 4. Резета как ти е вързан? |
|
| Автор: | Gosho75 [ Вто Юли 14, 2009 10:08 am ] |
| Заглавие: | |
Конфигурацията е наред. Проблемът идва от програмката. Палиш диода, чакаш някакво време, гасиш диода и веднага го палиш отново. Нормално да свети постоянно. Добра практика при PIC18 е да се ползват LAT регистрите за писане в портовете, а не PORT. Така се избягва някои "странни" ефекти от така наречените Read Modifity Write операции. |
|
| Автор: | bongo_x2 [ Вто Юли 14, 2009 8:23 pm ] |
| Заглавие: | |
Само от любопитство: как се излиза от delay или GOTO E7 не е безусловен преход? Това е първият код на когото обръщам внимание от 10-15 г. насам, не че съм наясно с операторите. Обаче крайно време е и аз да стана пикоборец и да почна с тъпите въпроси Edit: май разбрах как, с това ",1". Няма значение - пренебрегнете поста ми. |
|
| Автор: | Cekins [ Вто Юли 14, 2009 9:36 pm ] |
| Заглавие: | |
Ами за съжаление 1-цата означава друго а именно къде да се запише резултата от инструкцията, а самата инструкция DECFSZ означава dec file, skip if zero. Демек намали проенливата с 1, прескочи следващата инструкция ако е нула. Като си решил да пикоборстваш, асемблера им го има описан на много места, включително и в пдф-ите. |
|
| Автор: | a_stankov [ Сря Юли 15, 2009 7:18 am ] | |||||||||
| Заглавие: | 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 сек. |
||||||||||
| Автор: | me40 [ Пон Юли 27, 2009 11:00 pm ] |
| Заглавие: | |
Не съм човъркал десетина дни и тази вечер пак се захванах. В крайна сметка светодиода започна да мига (с таймер 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 ми се виждат доста еднакви, ама на..... |
|
| Автор: | plameniv [ Вто Юли 28, 2009 12:17 am ] |
| Заглавие: | |
Със сигурност не си инициализирал нещо. Първо, провери дали не са аналогови I/O защото тези процесори имат неудобството ако не си ги направил цифрови по дефаулт са аналогови ! Второ, работните честоти еднакви ли са? |
|
| Автор: | Cekins [ Вто Юли 28, 2009 7:32 pm ] |
| Заглавие: | |
Ми аз съм заменял 452 директо със 4520, като съответно конфига се оправя както трябва. Тръгна си от воле, само прекомпилирах софта за 4520. Сега на първо четене не мога да кажа разликите в адресите на сфр, ама мисля че нямаше някакви разлики в основните. Доколкото си спомням май само на ацп-то и на ццп-модула имаше някакви разлики. |
|
| Автор: | Cekins [ Сря Юли 29, 2009 10:39 pm ] |
| Заглавие: | |
Виж ся, отваряш пдф-а на съответния чип (в твоя случай 4420) 1 : гледаш на пин дескрипшън каква периферия има на дадения пин. 2 : отиваш на съответната(ите) периферии и гледаш как се настройват да работят/неработят. 3 : повтаряш горните две за всички пинове които те интересуват и колкото периферии има там. 4 : описваш съответните регистрите По дефолт обаче повечето периферии са изключени освен аналоговите входове както вече беше споменато няколко пъти. В случая с 4420 има бит в конфига (PBADEN) който може да включи/изключи ан. входовете при POR. Ако той е сетнат трябва преди да ползваш порта да имаш ADCON1 = 0Fh. |
|
| Автор: | me40 [ Чет Юли 30, 2009 8:37 am ] |
| Заглавие: | |
Благодаря на Cekins, че ми заостри вниманието. Прочетох тази сутрин поста ти. Отворих ADCON1 REGISTER и отново загледах таблицата. Там пише, че когато bit 3-0 PCFG3:PCFG0: са 1-ци тогава PORTA e Digital I/O т.е b'1111' -> hF, а аз като гледах снощи съм проброил 3 единици т.е b'111' -> h7 и порта веднага става A = Analog input пу да му се невиди Всичко е ОК |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|