| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| На асемблер работи на С не? http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=2231 |
Страница 1 от 2 |
| Автор: | elmi [ Вто Апр 18, 2006 9:12 pm ] | |||||||||
| Заглавие: | На асемблер работи на С не? | |||||||||
Досега съм писал само на асемблер и реших да започна да уча С за PIC. Намерих си PCW-C Compiler написах една програмка за проба. Ето я и нея
Програмката работи без проблеми докато на включа кабела за RS232 към платката. Платката е направена така че RC6 и RC7 минават през MAX232 за връзка с RS232. От PCто нищо не пускам по RSа. Когато кабела не е включен PICa работи добре като го включа се скапва. Написах същото на асемблер тогава PICа работи и с включен и с изключен кабел. А връзките по МАХа са наред защото съм правил комуникация с тази платка. Има ли някой представа от какво може да е? |
||||||||||
| Автор: | Predator_MF [ Вто Апр 18, 2006 11:19 pm ] |
| Заглавие: | |
Забрани всички прекъсвания и ще стане...никъде не се вижда и инит-кода ти.... |
|
| Автор: | Gogo [ Сря Апр 19, 2006 7:50 am ] |
| Заглавие: | |
...както е написал по-горе Predator_MF и провери (забрани) LVP в CONFIGURATION WORD. |
|
| Автор: | Dimiter [ Сря Апр 19, 2006 6:49 pm ] |
| Заглавие: | |
тъй ,тъй явно се мета у прекъсване като му зашумоли нещо по RX-a и отива у тиквите. Ако искаш да видиш верно ли е това тури и тоя ред: #INT_RDA void On_rx(void) { getch(); } ама горе ,преди main() |
|
| Автор: | Dimiter [ Сря Апр 19, 2006 6:55 pm ] |
| Заглавие: | |
ето и една малка оптимизацийка: #include <бъра-бъра.h> int1 flag; main() { while(1) { if(flag){output_high(pin_c5);}else{output_low(pin_c5);} delay_ms(1000); flag=!flag; } } |
|
| Автор: | elmi [ Сря Апр 19, 2006 10:38 pm ] |
| Заглавие: | |
пробвах със следното void main() { disable_interrupts(GLOBAL); disable_interrupts(INT_RDA); ........ и забраних LVP ама няма никаква промяна PICа се държи по същия начин Пробвах и с това което предложи Dimiter ама пак няма промян. Иначе оптимизацията заема наистина много по малко памет благодаря ти |
|
| Автор: | nickich [ Чет Апр 20, 2006 9:30 am ] |
| Заглавие: | |
Ползваш ли bootloader за да си налееш кода в ПИК-а? Ако ДА, какъв? |
|
| Автор: | setoy [ Чет Апр 20, 2006 1:06 pm ] |
| Заглавие: | |
Дай asm кода да разгледаме... |
|
| Автор: | nickich [ Чет Апр 20, 2006 2:12 pm ] |
| Заглавие: | |
...дай и листинга от Ц кода... |
|
| Автор: | elmi [ Чет Апр 20, 2006 6:22 pm ] | |||||||||
| Заглавие: | ||||||||||
Не полозвам bootloader Ето asm кода
|
||||||||||
| Автор: | elmi [ Чет Апр 20, 2006 6:25 pm ] | |||||||||
| Заглавие: | ||||||||||
а ето и листинга от С кода
|
||||||||||
| Автор: | elmi [ Чет Апр 20, 2006 8:10 pm ] |
| Заглавие: | |
Открих че контролера работи когато С5 го свържа трърдо към +5V. С4 иС5 са свързани към хардуерно логическо И. Преметих входа му от C5 на В7 и пак не работи. Да не вземе да се окаже нещо хардуерно, ама пък защо само като включакабела за RSа тогава не работи? |
|
| Автор: | bobyper [ Чет Апр 20, 2006 9:10 pm ] |
| Заглавие: | |
От листинга на C кода не се вижда да си сложил точно това дето те съветва Dimiter #INT_RDA void On_rx(void) { getch(); } |
|
| Автор: | elmi [ Чет Апр 20, 2006 10:42 pm ] | |||||||||
| Заглавие: | ||||||||||
да изпуснал съм #INT_RDA но и с него го пробвах няма промяна |
||||||||||
| Автор: | bateAz [ Чет Апр 20, 2006 11:21 pm ] |
| Заглавие: | |
А бе пич, не ни тествай ясновидските способности! Обясни ни какво става : без кабел за RS232 работи, така ли? А като включиш кабела не ще ? Ами устройството е при теб, ти трябва да провериш какъв е проблемът! 1. Проблем с масите. Проверяваш, като с една червина жица на виолетови шарки свържеш масата на устройството си с масата на компа. Дупе да ти е яко, ако ползваш някой евтин мързелив саморъчен налепен хвърчащ програматор, чиято маса не е същата като масата на процесора. ( щото има такива, както ги има и дребната шарка, и маларията ). 2. Гърчаво захранване, като натовариш RS-а с входа на компа, и то кляка. Мери се с мултиметър. Гладна мечка хоро не играе. 3. Проблем с обработката на прекъсванията от приемането на серийния канал. Познава се по това, че при липса на предаване от компа чудото ти работи, като му пратиш един знак, и заклинва. Смени процесора, ако първата буква от името на производителя е "М", втората трябва да е "О" ! Айде, маай по задачите и пиши какво знамение си видял! |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|