teapot

Members
  • Публикации

    16
  • Зарегистрирован

  • Посещение

Репутация

1 Обычный

О teapot

  • Звание
    Новенький

Электроника

  • Стаж в электронике
    3-5 лет
  1. Начинающим С Нуля (Pic)

    "Плохая идея" - в железе будет видно, поменять не проблема, если что не так. "Это как и куда стыковать " - удобнее апперировать одним 10-битным данным нежели его кусками, т.е не ХХ_YYYYYYYY и не XXXXXXXX_YY, а ZZZZZZZZZZ, но как я понял для этой серии мк это невозможно. "Используйте битовые операции." - это как? Я обращаюсь в регистр и изменяю ужный бит.
  2. Начинающим С Нуля (Pic)

    Мне нужен АЦП для отслеживания малейшего изменения во входящем сигнале без определения полной величины, из-за чего использую только младший бит. "у вас PCGF3:PCGF0 = 0000 - все входы аналоговые " - все верно, используются все с последовательным перебором (с соответствующими изменениями в ADCON1), Что б не писать весь код составляемой программы, создал новый проект, приведенный выше, для разбора модуля АЦП, а вернее работы с ним. Для тестового проекта ваши замечания верны и приняты во внимание. Спасибо большое за помощь. Извиняюсь, если ввел в заблуждение. На данный момент интересует вопрос (на будущее) можно ли состыковать старший и младший бит и работать сразу с 10-битной величиной или для 16-х это невозможно? П.С. Почему-то mikroc ругается на прямое обращение к конкретным битам, из-за чего паузы вместо отслеживания бита.GO/-DONE.
  3. Начинающим С Нуля (Pic)

    А что именно неправильно в ADCON1: 7 бит - правое выравнивание, 6-4 не исполльзуются, по этому нули, 3-0 - опорное напряжение по Vdd - согласно даташиту. Тестирую в протеусе - ошибок нет. В железе пока не пробовал.
  4. Начинающим С Нуля (Pic)

    Сам АЦП запустил, все работает, однако ADCON1 остался без изменений и все работает int temp, t; void main() { TRISA=0b00000001; PORTA=0b00000000; TRISB=0b00000001; PORTB=0b00000000; TRISC=0b00000000; PORTC=0b00000000; ADCON1 = 0b10000000; ADCON0 = 0b10000001; PORTB.F1=1; Delay_ms(1000); PORTB.F1=0; ADCON0 = 0b10000101; Delay_ms(1); temp=ADRESL; while(1){ ADCON0 = 0b10000101; Delay_ms(1); t=ADRESL; if (temp!=t) PORTB.F1=1; else PORTB.F1=0; } } Можно ли как нибудь объединить старший и младший бит в одно?
  5. Начинающим С Нуля (Pic)

    на правила ходил через И с разных браузеров - 404 за ссылку на архив спасибо, я и забыл про него...
  6. Начинающим С Нуля (Pic)

    Мда.. действительно грустно... "Учитель! Я прочитал главу но не понял ее, объясните" "вот это для кого в этой главе написано?" "но я же и прошу вас объяснить это" "иди читай а то поставлю два" А вообще, прежде чем кого-то посылать, может, стоит самому сходить А за картинку спасибо. У меня на английском, с переводчиком разбирался.
  7. Начинающим С Нуля (Pic)

    В общем как то так. Только разбираюсь... int temp; void main() { TRISA=0b00000001; PORTA=0b00000000; TRISB=0b00000001; PORTB=0b00000000; TRISC=0b00000000; PORTC=0b00000000; ADCON0 = 0b10000001; ADCON1 = 0b10000000; PORTB.F1=1; Delay_ms(1000); PORTB.F1=0; temp=ADRESL; // смотрим AN0 и запоминаем значение в темр Delay_ms(10); if (temp!=ADRESL) PORTB.F1=1; // Сравниваем значение в темр с вновь считаным AN0 Delay_ms(1000); PORTB.F1=0; }
  8. Начинающим С Нуля (Pic)

    Здравствуйте. не могу разобраться с модулем АЦМ в pic16f876a. Пишу код в mikroс pro for pic 6.4. Работал с модулеи АЦП в pic12f675, благо есть в библиотеке микроси поддержка АЦП, однако как ни пытался прикрутить библиотечные функции из примера к 876-му ничего не вышло - компилятор просто не знает что делать с этими функциями. Пробовал конфигурировать МК по датасшиту, разобрался с ADCON0 и ADCON1, но как снять показания с AN0, так и не пойму. Может направит кто в нужную сторону?
  9. Microc (Pro)

    Не смотря на дату созданной темы, вставлю я свои 5 копеек. Когда сам только начинал постигать mikroC, все гурьбой кричали, мол учи сначала архитектуру МК а только потом лезь в языки - оно то да, но если сугубо погружаться в них полностью и всяк, а если поморгать светодиодом, иль, что другое простенькое сделать. так лезть с головой в архитектуру это извращенство! хотя это сугубо мое мнение. Определил я для себя одно: прежде чем лезть в программирование МК, нужно поставить конкретную задачу для чего это вообще нужно. По архитектуре пройтись конечно стоит, что бы знать куда, копать, но для начала можно просто узнать какой функционал МК действительно понадобится и откинуть все остальное - пока откинуть, а позже может и вернуться, опять же если надо будет. Перелопатил я кучу умной литературы, по рекомендации тех же "архитектурщиков", и естественно для меня, человека нового в этом всем, полученная информация была как с другой планеты, которая не могла сразу поместится в мою голову, а соответственно оперировать какими-то понятиями было просто нереально. И лишь случайно в поисках новой, более понятной литературы напоролся на сайт какого-то кружка детского, где было описано начало работы с МК. Хоть в статьях на этом сайте и были какие то расхождения с теми заумными книжками, но они были написаны для школьников, и естественно направление моим трудам было задано. И всем "архитекторам" могу сказать, что врубился в работу портов ввода вывода, в таймеры, только после того, как просмотрел как это все работает, естественно написав перед этим программу по примерам. Многие отсылают перелопачивать даташит - это конечно гуд - инфа там есть нужная, но опять же никто из отсылающих не расскажет как этим даташитом правильно пользоваться. А ведь для начинающего это проблема. Оставлю ссыль на сайт кружка, где читал статьи, может ком пригодится. http://ehob.by/index...ikrokontrollery П.С. Есть такой метод - от противного. Для начала можно, что то сделать, и после копать как это работает.
  10. Код Манчестер На Pic12F675 (Mikroc Pro)

    Это только в протеусе. В железе наступите на грабли. Буду иметь ввиду при настройке железа. Спасибо.
  11. Код Манчестер На Pic12F675 (Mikroc Pro)

    Все оказалось, как обычно, бонально просто: В настройках проекта, перевел Master Clear Enable в положение Disable (было Enable) - отключил MCLR Икод заработал без дополнительных настроек. void main() { while(1) { GPIO.GP0 = 1; Delay_ms(500); GPIO.GP0 = 0; Delay_ms(500); } } Предпологаю, что если не выключить MCLR в настройках, а при пайке притянуть ногу МК отвечающую за MCLR через резистор на киллоом 10 на "+", то же должно заработать. Кстате, Манчестер то же дпошел=) Вопрос исчерпан. Всем спасибо!
  12. Код Манчестер На Pic12F675 (Mikroc Pro)

    Не катит. void main() { WPU = 0; IOCB = 0; CMCON = 0b00000111; VRCON = 0; ADCON0 = 0; ANSEL = 0; TRISIO = 0b00010000; GPIO = 0b00000000; TRISIO.GP0 = 0; GPIO.GP0 = 0; while(1) { GPIO.GP0 = 1; Delay_ms(500); GPIO.GP0 = 0; Delay_ms(500); } } Может с самим кодом что нетак?
  13. Код Манчестер На Pic12F675 (Mikroc Pro)

    void main() { CMCON = 7; ADCON0 = 0; TRISIO.GP0 = 0; GPIO.GP0 = 0; while(1) { GPIO.GP0 = 1; Delay_ms(500); GPIO.GP0 = 0; Delay_ms(500); } } реакция та же - никакая=) если прописать ADCON0.0 = 0 не компилируется Можно ли поподробней, за что отвечает каждая из команд?
  14. Код Манчестер На Pic12F675 (Mikroc Pro)

    повесил в протеусе только светодиод через резистор и вшил код ниже void main() { TRISIO.GP2 = 0; GPIO.GP2 = 0; while(1) { GPIO.GP2 = 1; Delay_ms(500); GPIO.GP2 = 0; Delay_ms(500); } } Эффекта НОЛЬ. Проблема в том что с этим МК сталкиваюсь впервые и как он должен работать - не имею понятия, собственно с синтаксисом для него та же ерунда (копаю нет, складываю обрывки инфы в кучу)