| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Управление на MCP42100 с PIC16F84A http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=228 |
Страница 1 от 2 |
| Автор: | PIC [ Вто Дек 14, 2004 1:35 pm ] |
| Заглавие: | Управление на MCP42100 с PIC16F84A |
Здравейте , от доста време се опитвам да управлявам програмируемия потенциометър на Микрочип с пик-а. Изводите на потенциометъра са включени като делител , а с измервателния уред измервам все едно и също показание. Поогледах внимателно командите , които изпращам и не забелязах грешка. Какво ли може да става ? |
|
| Автор: | Mozfet [ Вто Дек 14, 2004 1:54 pm ] |
| Заглавие: | |
Дай да видим програмата ти. Доколкото помня трабваше да се прати 0х00 преди желаната стойност |
|
| Автор: | PIC [ Вто Дек 14, 2004 3:30 pm ] |
| Заглавие: | |
;********************* DEFINE I/O PINS ********************** #define SCK PORTB,3 #define SI PORTB,2 #define CS PORTB,1 #define RS PORTB,0 ;------------------------------------------------------------ Write_0 bcf SI bsf SCK bcf SCK return ;------------------------------------------------------------ Write_1 bsf SI bsf SCK bcf SCK return ;------------------------------------------------------------ Send_Comand movlw B'11011111' movwf Comand_Reg movlw D'8' movwf Counter refresh_1 RLF Comand_Reg,f btfss STATUS,C call Write_0 btfsc STATUS,C call Write_1 decfsz Counter,f goto refresh_1 return ;------------------------------------------------------------ Send_Data movlw D'8' movwf Counter refresh RLF Reg_Data,f btfss STATUS,C call Write_0 btfsc STATUS,C call Write_1 decfsz Counter,f goto refresh return ;------------------------------------------------------------ main bcf SCK bcf CS movlw D'50' movwf Reg_Data call Send_Comand call Send_Data sleep_1 nop goto sleep_1 END На входа SHDN е подадено постоянно неактивно ниво "1"! |
|
| Автор: | Гост [ Чет Дек 23, 2004 2:21 pm ] |
| Заглавие: | |
Âïðî÷åì íå íàìåðèõ â äàòàøèéòà îïèñàíèå íà òðàíñôåðà íà äàííè ò.å äàëè äàííèòå ñå ïðåäàâàò îò íàé-ìëàäøèÿ áèò èëè îáðàòíî? |
|
| Автор: | Wise [ Чет Дек 23, 2004 3:48 pm ] |
| Заглавие: | |
Пробва ли да сложиш няколко "nop" между "bcf SCK" и "bsf SCK" и обратно? смътно си спомням за подобен проблем с портовете - наложи се по-бавно да ги клатя И да не си забравил да ги дефинираш като изходи |
|
| Автор: | Mozfet [ Чет Дек 23, 2004 5:39 pm ] |
| Заглавие: | |
Здр. При Spi се предава първо най-старшия бит. Пробвай да сложиш BSF CS след call Send_Data. |
|
| Автор: | PIC [ Пон Дек 27, 2004 10:22 am ] |
| Заглавие: | Значи... |
Действително предаването на данни започва от най-старшия бит. В даташийта са дадени времена на продължителност на импулса от порядъка на 150nS , при мен честотата е 4МНц и съответно периода 1uS така , че мисля проблема да не е от там. Подкарах го до някаде , НО става така , че : - нулирам регистъра с данни и го изпращам , след това измервам с уреда делителя , който съм реализирал и изхода е нула /до тук добре/. - увеличавам данните с единица , а в изхода вече имам половината напрежение от делителя , при следващите три инкрементирания на регистъра отивам до захранващото напрежение на делителя /а потенциометъра е на 256 нива???/. - при следващо инкрементиране в средната точка от делителя пак имам нула и всичко пак започва от начало , а стойността на регистъра е само 5 или 6. Колкото до "bsf CS" с неговото нулиране се изпращат контролния регистър и този за данни и след това се вдига в единица т.е трябва да са минали 16 такта /това го бях пропуснал/ ! |
|
| Автор: | PIC [ Пон Дек 27, 2004 1:33 pm ] |
| Заглавие: | STOP |
Сега вече тръгна. Имах една логическа грешка и на дебъгера веднага лъсна. Единствения пропуск беше "bsf CS" след изпращането на данни. Благодаря за мненията! |
|
| Автор: | Mozfet [ Пон Дек 27, 2004 3:15 pm ] |
| Заглавие: | |
Пак заповядай Имаш възможност малко да оптимизираш кода. Ако се обръщаш към една и съща подпрограма "Send_byte" за Command_byte и Data_byte ще спестиш около 10 реда асемблер. |
|
| Автор: | Реконструктор [ Пон Дек 27, 2004 4:26 pm ] |
| Заглавие: | |
Извинявам се за намесата, ама мога ли да си сложа такива потенциометри на усилвателя, вместо оригиналните механични? |
|
| Автор: | Ники [ Пон Дек 27, 2004 5:16 pm ] |
| Заглавие: | |
що да не можеш, лепи и програмирай |
|
| Автор: | bateAz [ Пон Дек 27, 2004 5:40 pm ] |
| Заглавие: | |
изкривявания |
|
| Автор: | ToHu [ Пон Дек 27, 2004 6:42 pm ] |
| Заглавие: | |
А има и някои дето мног гадно препукват като сменят стойността си ......т.е. те не препукват, а усилвател с тях препуква ..... |
|
| Автор: | Mozfet [ Пон Дек 27, 2004 6:50 pm ] |
| Заглавие: | |
Цифровите пот имат съпротивление на Wiper 50-150 ома(завсиси за какво съпр. ти е пот-а) . Т.е. не можеш да получиш 0 ома, винаги ще имаш най-малко 50 . MCP4xxxx за звук не стават. |
|
| Автор: | Реконструктор [ Пон Дек 27, 2004 6:59 pm ] |
| Заглавие: | |
Гадост. А кои стават? |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|