Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.14.70.203] |
|
Сообщ.
#1
,
|
|
|
привет всем! вот недавно узнал что микроконтроллеры типа PIC прогаю.тся на АССEMBLER кто нибудь занимается такими вешами и можно ли прогать их на C++??
|
Сообщ.
#2
,
|
|
|
Можно на C. Компиляторов C++ для микроконтроллеров я пока не встречал. Но если ты хочешь получить действительно качественный и оптимизированный код, пиши на ассемблере. Компиляторы C под микроконтроллеры генерируют такое количество мусора, что сам не рад будешь.
|
Сообщ.
#3
,
|
|
|
Цитата можно ли прогать их на C++?? да можно Цитата Компиляторы C под микроконтроллеры генерируют такое количество мусора, что сам не рад будешь. я бы не стал делать таких категоричных заявлений |
Сообщ.
#4
,
|
|
|
Цитата potor @ Я бы не делал, если бы не пробовал. Сравните для примера программу сложения 2-х целых (!) чисел под любой 51-й Intel на ассемблере и на C. Тогда всё сразу станет ясно. На то он и микроконтроллер, чтобы пользоваться им оптимально, а не покупать контроллеры с огромными флешками за счёт конечного пользователя. я бы не стал делать таких категоричных заявлений |
Сообщ.
#5
,
|
|
|
Цитата Сравните для примера программу сложения 2-х целых (!) чисел под любой 51-й Intel на ассемблере и на C предлагаю выложить вам свой пример на ассемблере сюда, а после я выложу оттранслированный с С код и посмотрим у кого получится короче |
Сообщ.
#6
,
|
|
|
Цитата EL[michlen] @ Ну так выкладывайте сравнение. Свои исходники на ассемблере и C, на которых выполнялось сравнение. Посмотрим. Сравните для примера программу сложения 2-х целых (!) чисел под любой 51-й Intel на ассемблере и на C Хотя у меня уже есть подозрение, с чем связаны такие выводы. |
Сообщ.
#7
,
|
|
|
Цитата Ну так выкладывайте сравнение. Свои исходники на ассемблере и C, на которых выполнялось сравнение. Посмотрим. я готов хоть сейчас, но для начала жду от EL[michlen] его версию Добавлено давайте сразу уточним задачу надо написать на ассемблере MCS51 функцию, которая принимает на входе 2 16-разрядных беззнаковых целых числа и выдает на выходе их сумму ввиде беззнакового целого 16-разрядного числа |
Сообщ.
#8
,
|
|
|
Цитата potor @ Мне хотелось бы увидеть сравнение именно от EL[michlen]. Т.е. как, что и на чем он сравнивал. я готов хоть сейчас, но для начала жду от EL[michlen] его версию |
Сообщ.
#9
,
|
|
|
potor, на восьмиразрядном контроллере?
|
Сообщ.
#10
,
|
|
|
да, и в чем проблема???
|
Сообщ.
#11
,
|
|
|
Входные данные пишем в R0, R1, R2 и R3. Например для сложения 65000 и 50 делаем так:
mov R1, #0E8h mov R2, #0FDh mov R3, #32h mov R4, #0 mov A, R1 add A, R3 mov R1, A mov A, R2 addc A, R4 mov R2, A Добавлено Цитата potor @ В том, что ещё и работать надо помимо форума. А вообще, я же просто уточнил. да, и в чем проблема??? Добавлено На С я тогда пробовал вот что (если подгонять под наш вопрос): int addition(int var1, int var2) { return var1+var2; } void main() { int var1=123, var2=456; addition(var1, var2); } Когда скомпилировал, получилось (если память не изменяет) около 5 Кб! После чего я обозлился на С и решил, что он здесь точно не катит. trainer, чувствую подвох, а понять не могу... |
Сообщ.
#12
,
|
|
|
вот тоже самое на сях
#include<at89x51.h> unsigned int add(unsigned int a, unsigned int b) { return a+b; } main() { unsigned int a; a=add(50, 65000); } это то что получилось после компиляции ; FUNCTION _add (BEGIN) ;---- Variable 'a' assigned to Register 'R6/R7' ---- ;---- Variable 'b' assigned to Register 'R4/R5' ---- ; SOURCE LINE # 2 ; SOURCE LINE # 3 ; SOURCE LINE # 4 0000 EF MOV A,R7 0001 2D ADD A,R5 0002 FF MOV R7,A 0003 EE MOV A,R6 0004 3C ADDC A,R4 0005 FE MOV R6,A ; SOURCE LINE # 5 0006 ?C0001: 0006 22 RET ; FUNCTION _add (END) ; FUNCTION main (BEGIN) ; SOURCE LINE # 6 ; SOURCE LINE # 7 ; SOURCE LINE # 10 0000 7DE8 MOV R5,#0E8H 0002 7CFD MOV R4,#0FDH 0004 7F32 MOV R7,#032H 0006 7E00 MOV R6,#00H 0008 120000 R LCALL _add 000B 8E00 R MOV a,R6 000D 8F00 R MOV a+01H,R7 ; SOURCE LINE # 11 000F 22 RET ; FUNCTION main (END) один в один твой пример и ничего лишнего я тут не вижу |
Сообщ.
#13
,
|
|
|
potor, что за компилятор?
Добавлено Кстати, если писать a=add(50, 65000);, то можно вообще без регистров обойтись - это ж константы. |
Сообщ.
#14
,
|
|
|
Цитата potor, что за компилятор? пакет keil uVision2 V2.04b сам компилятор V6.00i Цитата Кстати, если писать a=add(50, 65000);, то можно вообще без регистров обойтись - это ж константы. вот поэтому я и сделал это отдельной функцией иначе бы он все это дело оптимизировал |
Сообщ.
#15
,
|
|
|
Цитата potor @ Бум знать. Доеду до дома - скажу, каким я пробовал. пакет keil uVision2 V2.04b сам компилятор V6.00i |
Сообщ.
#16
,
|
|
|
Подскажите кто нибуть как прогить USB?? кажется для этого нжны микроконтроллеры а мож уже готовые продаются? и ваше сложно ли это если найдется подкиньте статейку в нете!
|
Сообщ.
#17
,
|
|
|
|DC|*Magnum*, есть контроллеры со встроенной поддержкой USB, например на http://www.atmel.com/dyn/products/devices.asp?family_id=655
Можно, конечно, вручную написать программную поддержку этого интерфейса, но это дело не для слабонервных =) Стандарт USB и другую документацию можно скачать на http://www.usb.org/developers/docs/ Сам софт для работы с USB из PC может использовать HID-интерфейс (если это стандартное устройство, например мышь) или придётся писать свой драйвер. Есть ещё возможность использовать готовые драйвера сторонних фирм. |
Сообщ.
#18
,
|
|
|
EL[michlen], слушай а книжги про это есть мож подскажешь авторов и названий парочку а то научиться хочу а в нете сложно
|
Сообщ.
#19
,
|
|
|
|DC|*Magnum*, книжек не видел. Стандарт USB можно за книжку считать, только вот под конкретную ОС нет ничего, зато много по самой шине.
В DDK XP есть несколько примеров по работе с USB, например usbview. Ещё посмотри здесь: http://junglewin.narod.ru/usb.html#ch3 Есть ещё вариант работать с USB в режиме эмуляции COM-порта. Много информации можно найти на http://www.lvr.com/usb.htm |
Сообщ.
#20
,
|
|
|
EL[michlen], спасибо за эту ссылку http://junglewin.narod.ru/usb.html#ch3 давно такую искал! прога на с++ БИДЛЕРЕ это хороше тока вот я че вмчетал
Для начала рассмотрим аппаратную реализацию на примере популярного (в недавнем прошлом) чипсета i815. Обслуживанием всех устройств ввода/вывода в этом чипсете занимается специализированный контроллер - ICH (I/O Controller Hub) - 82801BA. Чтобы перечислить все его функции не хватит листа. Нас будет интересовать тот факт, что в состав этой микросхемы входит в том числе два независимых USB контроллера, каждый из которых имеет по два порта. Контроллеры поддерживают скорость передачи 12Мб/c (т.е USB 1.1). Каждый контроллер имеет в диапазоне ввода/вывода набор портов, через которые ими можно управлять. тута сказано какие устройства надо ЮЗАТЬ а я чето не логонаю или это ваше не то?? и как мне управлять чемто с компа или уже есть готовое устройство я мало че понимаю по этому много глупых вопросов с моей стороны! |
Сообщ.
#21
,
|
|
|
Цитата |DC|*Magnum* @ На Си и пишут, на Виндовом Компилировать можно в MSVC и/или в DDK.на каком языке тама прогу пишут на си какомто а на каком?? Примеры по USB см. в DDK. Добавлено Цитата |DC|*Magnum* @ Там просто пример, можно использовать любое своё устройство. тута сказано какие устройства надо ЮЗАТЬ а я чето не логонаю или это ваше не то?? и как мне управлять чемто с компа или уже есть готовое устройство я мало че понимаю по этому много глупых вопросов с моей стороны! |
Сообщ.
#22
,
|
|
|
EL[michlen], что такое DDK. я же незнаю! как понять любое свое устройство через что мне его подсоединить?
|
Сообщ.
#23
,
|
|
|
Цитата |DC|*Magnum* @ При подсоединении к компьютеру, Windows автоматически его находит. После чего, устройству посылается запрос на его Vendor ID, Product ID и др. информацию (подробнее см. в спецификации USB 2.0) и оно устанавливается с использованием своего драйвера или стандартного драйвера Windows. Microsoft DDK - Driver Development Kit, поиск по форуму поможет. как понять любое свое устройство через что мне его подсоединить? |
Сообщ.
#24
,
|
|
|
EL[michlen], я имел ввиду самодельного устройство! например я собрал робота или что угодно и надо им управлять через ЮСБ как это сделать? надо же чтобы он понимал ЮСБ тоесть какойто микроконтроллер? так я ваше думаю?
|
Сообщ.
#25
,
|
|
|
EL[michlen], я имел ввиду самодельного устройство! например я собрал робота или что угодно и надо им управлять через ЮСБ как это сделать? надо же чтобы он понимал ЮСБ тоесть какойто микроконтроллер? так я ваше думаю?
и еще хотелось бы вопрос вот тута http://www.cqham.ru/pix.htm на схемме изображен программатор? самодельный? тоесть я собираю такую схемку делаю все по инструкции а контакты TxD(2) GND cts(5) DTR(20) RTS(4) указанные на схемме мне надо воткнуть в СОМ порт тока в нужный контакт и программатор готов? |
Сообщ.
#26
,
|
|
|
Цитата |DC|*Magnum* @ Можно сделать на микроконтроллере с аппаратной поддержкой USB (таких полно), либо реализовать работу с USB в программе микроконтроллера. В любом случае, почитай спецификацию - там есть ответы на множество вопросов. EL[michlen], я имел ввиду самодельного устройство! например я собрал робота или что угодно и надо им управлять через ЮСБ как это сделать? надо же чтобы он понимал ЮСБ тоесть какойто микроконтроллер? так я ваше думаю? |
Сообщ.
#27
,
|
|
|
Цитата EL[michlen] @ Это вряд ли. Покажи мне хоть один действительно микроконтроллер(монстры вроде TMS430 не в счет), который был бы способен обрабатывать потоки данных со скоростью хотя бы мегабит в секунду. Только аппаратный контроллер(встроенный или внешний)либо реализовать работу с USB в программе микроконтроллера Цитата |DC|*Magnum* @ Ты определись, что ты там собрал. Может USB тебе и ни к чему и обычного UART/RS-232/RS-485 будет достаточно? Инструмент должен подбираться под задачу, а не наоборот. например я собрал робота или что угодно и надо им управлять через ЮСБ как это сделать |
Сообщ.
#28
,
|
|
|
trainer, С помошью LTP можно управлять тока 8 приборами личто я больше не умею! а вот через ЮСБ можно управлять намного большим! а что это такое?
UART/RS-232/RS-485 тоже порты?? и есль ли готовые устройстра для работы с ЮСБ и как называются чтоб мне найти? и еще хотелось бы вопрос вот тута http://www.cqham.ru/pix.htm на схемме изображен программатор? самодельный? тоесть я собираю такую схемку делаю все по инструкции а контакты TxD(2) GND cts(5) DTR(20) RTS(4) указанные на схемме мне надо воткнуть в СОМ порт тока в нужный контакт и программатор готов? |
Сообщ.
#29
,
|
|
|
Цитата |DC|*Magnum* @ если ты не умеешь управлять более чем восемью линиями через LPT у тебя вряд-ли получится управлять хоть чем-нибудь через USB. Работа с USB на порядок более сложная вещь чем работа с LPT.С помошью LTP можно управлять тока 8 приборами личто я больше не умею! Цитата |DC|*Magnum* @ на схемме изображен программатор? Да, это программатор. Эта схема известна как jdm-программатор. С этим железом может работать такой софт как IC-Prog, PonyProg. Цитата |DC|*Magnum* @ и есль ли готовые устройстра для работы с ЮСБ и как называются чтоб мне найти? Я вот такую штуку присмотрел DLP-USB245M сам хочу ее по-пользовать но что-то руки никак не доходят. Если будешь ее юзать поделись впечатлениями plz.. |
Сообщ.
#31
,
|
|
|
SomeOtherOne, а как прогать больше чем 8 линий на LPT?? ну я например могу подать на 8 ногу а могу на все 8 а как мне сделать если напряжение на 1 ноге то горит 1 светодиод а если напряжение на 1 и 2 одновременно то горит 2 светодиод,? это же тоже микро.... наверно надо?
DLP-USB245M а это вешшь полезная я присматрюсь к ней |
Сообщ.
#32
,
|
|
|
trainer, http://www.cesko.host.sk/IgorPlugUSB/IgorPlug-USB%20(AVR)_eng.htm
Добавлено Oops, SomeOtherOne уже дал похожий линк... |
Сообщ.
#33
,
|
|
|
EL[michlen], реальтно! но я так понимаю что 1 и 2 схеммы это одно и тоже да? ана 2 схемме микро процессор ведь его надо за програмировать сначало а как тама не указанно вроде! кстати есть ася?? так проше обшаться
стучись ко мне 148846357 |
Сообщ.
#34
,
|
|
|
Цитата |DC|*Magnum* @ Ты о чём? но я так понимаю что 1 и 2 схеммы это одно и тоже да? |
Сообщ.
#35
,
|
|
|
EL[michlen], http://www.cesko.host.sk/IgorPlugUSB/IgorP...20(AVR)_eng.htm тута
а ася есть так проще буит! |
Сообщ.
#36
,
|
|
|
Цитата |DC|*Magnum* @ Разница в том, что во второй используется аппаратный интерфейс SPI. но я так понимаю что 1 и 2 схеммы это одно и тоже да |
Сообщ.
#37
,
|
|
|
а допустим у меня есть программа для управления 4 СВД на контроллере PIC 16c54 пойдет ли этаже программа на PIC 16c84??
вот например в учебнике был приведен пример это йпроги ; LED3 = ra.3 LED2 = ra.2 LED1 = ra.1 LED0 = ra.0 org 0 ; device pic16c54, xt_osc, wdt_off, protect_off reset start iniport mov ra,#FFh mov !ra,#F0h ; comled clrb LED0 setb LED0 mov ra,#11110110b mov ra,#11111111b mov ra,#F0h ; end тока я незнаю в какой проге ее писать ! ну я ее написал в файле 1111.ASM и попробовал открыть в программе MPASM нече не получилось пишет 14 ошибок ! мож кто знает где эту прогу писать и в чем откоывать или мож в ней ошибки!? |
Сообщ.
#38
,
|
|
|
Эта конструкция известна уже несколько лет. И, тем не менее, никакой революции она не произвела. Почему? Ведь, казалось бы, завел USB на свободные выводы микроконтроллера и порядок. И не надо возиться и платить за аппаратную поддержку USB. Ответ, как мне представляется, достаточно прост. Если вместе с этим устройством подключить другое с большим траффиком, то этот Igor... захлебнется в потоке данных. Сам по себе USB никому не нужен. Если только ради спортивного интереса.
Цитата |DC|*Magnum* @ СВД - это "снайперская винтовка Драгунова"? Солидно работаешь! На поток поставил? есть программа для управления 4 СВД Цитата |DC|*Magnum* @ Ну так ошибки-то покажи. Или будем гадать? Тебе гадать на чем больше нравится? нече не получилось пишет 14 ошибок Цитата |DC|*Magnum* @ Это явно неверно. mov !ra,#F0h |
Сообщ.
#39
,
|
|
|
trainer, ну для его задач скорости достаточно. Никто же не говорит, что таким образом можно реализовать режимы Full-speed или High-speed - дешевле будет купить контроллер с аппаратной поддержкой USB-интерфейса. Но как вариант, такое возможно. Другое дело, чип практически целиком работает на обслуживание порта, так что не всегда такой способ подойдёт.
|
Сообщ.
#40
,
|
|
|
trainer, я хотел написать не СВД а СИД опечатался тоесть свето излучающий диод
блин написанно именно так в книжке! а какие ошибки не пишет я делал все вот по это инструкции http://www.cqham.ru/pix.htm и прогу написал не ту что там дана. а ту что выложил! ну а в моей книжке описанны некоторые програмы типа MPALC и другие, новот каком написанна эта прога и где ее юзать не сказанО! а и вот еще че сказанно! я не заметил написанно эта программа показыввает как управлять светодиодами подключенными к параллельуму порту PIC 16Cxx во воспользовался прогой MPLAB написала ошибки такие Building 1111.ASM... Command line: "C:\PROGRA~1\MPLAB\MPASMWIN.EXE /e+ /l+ /x- /c+ /p16F84 /q 1111.ASM" Error[113] E:\PIC\MPASM\1111.ASM 2 : Symbol not previously defined (ra.3) Error[113] E:\PIC\MPASM\1111.ASM 3 : Symbol not previously defined (ra.2) Error[113] E:\PIC\MPASM\1111.ASM 4 : Symbol not previously defined (ra.1) Error[113] E:\PIC\MPASM\1111.ASM 5 : Symbol not previously defined (ra.0) Warning[205] E:\PIC\MPASM\1111.ASM 6 : Found directive in column 1. (org) Warning[207] E:\PIC\MPASM\1111.ASM 8 : Found label after column 1. (device) Error[122] E:\PIC\MPASM\1111.ASM 8 : Illegal opcode (pic16c54) Warning[207] E:\PIC\MPASM\1111.ASM 9 : Found label after column 1. (reset) Error[122] E:\PIC\MPASM\1111.ASM 9 : Illegal opcode (start) Error[122] E:\PIC\MPASM\1111.ASM 10 : Illegal opcode (mov) Error[122] E:\PIC\MPASM\1111.ASM 13 : Illegal opcode (clrb) Warning[207] E:\PIC\MPASM\1111.ASM 14 : Found label after column 1. (setb) Error[122] E:\PIC\MPASM\1111.ASM 14 : Illegal opcode (LED0) Error[122] E:\PIC\MPASM\1111.ASM 15 : Illegal opcode (ra) Error[122] E:\PIC\MPASM\1111.ASM 16 : Illegal opcode (ra) Error[122] E:\PIC\MPASM\1111.ASM 17 : Illegal opcode (ra) MPLAB is unable to find output file "1111.hex". This may be due to a compile, assemble, or link process failure. |
Сообщ.
#41
,
|
|
|
ты откуда этот пример взял
в микрочиповском ассемблере нет комады mov (если это макрос, то его надо где то определить), ra тоже надо определить |
Сообщ.
#42
,
|
|
|
potor, блин написан в книжке! странно конечно но это самый первый листинг и самая первая программа!
Добавлено potor, слух а ты не подкинешь сайтик с элементарной программой для PIC ну совсем простенькой . желательно с подобрвм описанием действий а то везде все сложное для меня! я просто хочу научиться прогать ПИКИ |
Сообщ.
#43
,
|
|
|
сюда сходи:
http://pic16f84.narod.ru/nach.htm |
Сообщ.
#44
,
|
|
|
писать программку для тебя некогда
к тому же здесь на форуме обсуждались разные примеры для пиков поищи а вообще вот эту доку скачай, там все очень подробно расписано |
Сообщ.
#45
,
|
|
|
SomeOtherOne,
potor, спасибо! вот это какраз то что надо начиинаюшему лузеру в деле PIC! вот тока у мен есть вопрос! PIC16F84 и PIC16С84; они одинаковы? или в чем их различия? просто у меня есть схемма программатора на PIC16С84 проше не придумать а вот под PIC16F84 такогоже простого не видел! мож подкините? |
Сообщ.
#46
,
|
|
|
Сообщ.
#47
,
|
|
|
Цитата PIC16F84 и PIC16С84; они одинаковы? они различаются только типом памяти PIC16F84 с флешью, многократно программируемый PIC16C84 с епромом, однократно программируемый приведенная тобой схема смущает номерами контактов разъема |
Сообщ.
#48
,
|
|
|
potor, вот мпасибо! я незнаешь эта схемка программатора будет работать с PIC16F84 ?? и ваше она рабочая? а то я сложный программатор не соберу! или если знаешь программаторы на PIC16F84 подкинь линку!
|
Сообщ.
#49
,
|
|
|
ну вот например простенький программатор
только не спрашивай меня как развести плату и тп:) на самом деле подобных схем в инете до дури Прикреплённый файлprog_pic.zip (88.36 Кбайт, скачиваний: 168) |
Сообщ.
#50
,
|
|
|
potor, спасиб ну как платты разводиитьь я знаю в крайнем случае макет возьму!
Добавлено potor, блин ну она сложная для меня я такую не соберу! ну попробую спасиб |
Сообщ.
#51
,
|
|
|
MНЕ НУЖНО СОСТАВИТЬ ПРОГРАММУ ДЛЯ МИКРОКОНТРОЛЛЕРА PIC16F 628 КОТОРАЯ ИЗМЕРЯЕТ ДЛИТЕЛЬНОСТЬ МЕЖДУ ИМПУЛЬСАМИ НА ВХОДЕ 0 ПОРТА А И ПРЕОБРАЗУЕТ ЕЕ В ПРОПОРЦИОНАЛЬНУЮ ШИРИНУ ИМПУЛЬСА НА ВЫХОДЕ МОДУЛЯ ШИМ НЕСУЩАЯ ЧАСТОТА 1 кГЦ
ПОМОГИТЕ МНЕ ПОЖАЛУЙСТА БО У МЕНЯ УМА НЕ ХВАТАЕТ |
Сообщ.
#52
,
|
|
|
Писать программу лениво, да и некогда
но я отвечу на конкретные вопросы, если конечно ты их сформулируешь |