Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
PIC контроллеры. Программаторы и первый проект на PIC |
Программирование микроконтролеров,ремонт аудио/видео/бытовой техники,полезные устройства для дома,телефония, обсуждение статей журнала Радио |
|
Опции темы |
23.09.2009, 15:20 | #272 |
Форумец
Сообщений: 3
Регистрация: 22.09.2009
Не в сети |
Между 5 и 14 есть около 5 вольт. Т.е. нужно замкнуть эти ноги и должно сработать реле, если я правильно понял? Мат. часть изучаю по мере возможностей. Как видите не тупо копирую конструкцию, а пытаюсь разобраться что да как.
|
24.09.2009, 06:48 | #273 |
Форумец
|
Да какой, замкнуть! Если без контроллера между 5 и 14 ногами есть 5 вольт, то реле должно включиться и все три светодиода должны светиться. И нечего там больше проверять.
|
24.09.2009, 08:47 | #274 |
Форумец
Сообщений: 2
Регистрация: 24.09.2009
Возраст: 56
Не в сети |
Напряжение питания в программаторе EXTRA-PIC
Здравствуйте!У меня вопрос по напряжению питания микросхем и прошиваемого микроконтроллера и по напряжению программирования в программаторе EXTRA-PIC.
Каковы их предельно допустимые значения (минимум и максимум) и насколько критичны их значения во время прошивки микроконтроллера? |
24.09.2009, 09:03 | #275 |
Форумец
Сообщений: 35
Регистрация: 30.06.2009
Возраст: 47
Не в сети |
Доброго времени суток.
Постараюсь кратко. Хочется обратиться за помощью. Есть 12F629 и мПаскаль, (я уже писал ранее ) немного разобрался с миганием светодиодов на трех выводах. Но вот поочередно что то не получается пока получилось либо все сразу либо по одному. Если можно то пример кода хоть на Си, я думаю по аналогии разбурусь но лучше бы на паскале. и как кнопку прилепить, ну для запуска мигания хотя бы. Всем благодарен. |
24.09.2009, 09:42 | #276 | |
Форумец
|
Цитата:
|
|
24.09.2009, 09:51 | #277 | |
Форумец
|
Цитата:
|
|
24.09.2009, 11:58 | #278 |
Форумец
Сообщений: 35
Регистрация: 30.06.2009
Возраст: 47
Не в сети |
Вот мой код. Наверно можно и проще но я новичок Пики пытаю в первые. не судите строго.
program SveticP16F629; const A: array [0..8] of byte= (%00000001,%00000110,93, %00000010,%00000101,93, %00000100,%00000011,93); var I,J,g: byte; begin while true do begin for I:=0 to 18 do begin g:=I+I+I; TRISIO:=A[g]; GPIO:=A[g+1]; Delay_us(1000); end; end; end. Основа примера взята из журнала Радио номер не помню но за 2008 год точно. Там приведен вариант маятника на светодиодах. Я взял для примера. Попробывал для трех сетодиодов ночтоб мигали по очереди но что то не дохожу как. Спасибо за понимание и помощь. |
24.09.2009, 12:34 | #279 |
Форумец
|
RN3QGA Просьба, когда код выкладываете, обрамляйте тегами (quote, code, php),
[PHP]program SveticP16F629; const A: array [0..8] of byte= (%00000001,%00000110,93, %00000010,%00000101,93, %00000100,%00000011,93); var I,J,g: byte; begin while true do begin for I:=0 to 18 do begin g:=I+I+I; TRISIO:=A[g]; GPIO:=A[g+1]; Delay_us(1000); end; end; end. [/PHP] а то плохо воспринимается. |
24.09.2009, 13:01 | #281 |
Форумец
|
И опишите словами, что Вы хотите получить, например, к GPIO0-GPIO2 подключено 3 светодиода, надо чтобы они по очереди загорались слева направо, гасли и потом справа налево и так в цикле. И сразу по коду - у Вас массив из 9 байт, а по тексту видно, что идет обращение к элементам массива с индексами больше 8. Значение переменной g не должно быть больше 8.
|
24.09.2009, 13:37 | #282 |
Форумец
Сообщений: 35
Регистрация: 30.06.2009
Возраст: 47
Не в сети |
Простите бестолкового.
Сначала. К GPIO0,GPIO1,GPIO2 подключены светодиоды катодами, а через R 300 оМ подоется 5В на аноды. Собственно в какую сторону они будут мигать по порядку всеравно, я на примере разобраться хочу как это оно. Думаю проще чтоб мигали от GPIO0 к GPIO2 и сначала. Вроде все. Спасибо за терпение. P.S. А может просто диоды на массу посадить через гасящие R 100Ом, правда проще или сложнее будет не знаю. |
24.09.2009, 15:50 | #283 | |
Форумец
|
Цитата:
Код:
program SveticP16F629; { Если раскоментировать следующую строчку, то программа будет работать со светодиодами подключенными по схеме с ОА, иначе с ОК } //{$DEFINE LED_OA} var g: byte; begin CMCON := 7; TRISIO := 0; GPIO := 7; g := 1; while true do begin if g = 8 then g := 1; {$IFDEF LED_OA} GPIO := (not g) and 7; {$ELSE} GPIO := g; {$ENDIF} Delay_ms(1000); g := g shl 1; end; end. Последний раз редактировалось petrd; 25.09.2009 в 07:23. Причина: Вместо Delay_us(), надо Delay_ms() и еще по мелочи |
|
24.09.2009, 17:46 | #284 |
Форумец
Сообщений: 2
Регистрация: 24.09.2009
Возраст: 56
Не в сети |
При измерении напряжения на плате программатора EXTRA-PIC напряжение питания микросхемы MAX232 после стабилизатора 7805- 4,8 вольт,а напряжение питания микроконтроллера 4,9 вольт.Напряжение программирования после стабилизатора 7812 - 13,9 вольт.Вопрос возник из-за того что при прошивке микроконтроллеров
PIC16F876A или PIC16F628A корректно работает только прогамма ProgCode,а icprog и WinPic800 (дугие не проверял)не считывают и не прошивают эти микроконтроллеры а в списке поддерживаемых этих программ присутствуют. Уровень напряжения DATA,CLOCK 4,5 вольт согласно статьи по настройке и тестированию программатора EXTRA-PIC.Вот я и не понимаю то ли проблема в железе и напряжении,то ли проблема в прогаммном обеспечении. |
24.09.2009, 17:52 | #285 |
Форумец
Сообщений: 35
Регистрация: 30.06.2009
Возраст: 47
Не в сети |
Спасибо за помощь Petrd.
Не понял что есть CMCON? и немного в сторону - сколько выдерживают Пики в среднем перезаписей , как лучше моделировать по вашему мнению и что за симулятор используете? С уважением RN3QGA. |
24.09.2009, 19:30 | #287 | |
Форумец
|
Цитата:
2. Напряжение 4,8-4,9 в, 4,5 в как-то маловато для 7805. 3. Настройки железа в ICPROG и WinPIC правильные? Посмотрите железо повнимательнее, должен работать. |
|
24.09.2009, 19:38 | #288 | |
Форумец
Сообщений: 35
Регистрация: 30.06.2009
Возраст: 47
Не в сети |
Проверил. Светятся все три светодиода.
Может что в "конфиге" нужно выставить по другому, а то я оставил без изменений : галочка только в PWRT и lntOSC GP4 . Использую ICProg. В самом mikroPascal установки в проекте следующие: Цитата:
С уважением RN3QGA. |
|
24.09.2009, 19:46 | #289 | ||
Форумец
|
Цитата:
2. Для PIC16F обычно 100 000 циклов перезаписи - всю жизнь шить, не перешить. 3. Внутри mikroP есть симулятор-отладчик, после удачной компиляции - кнопка F9 , им и смотрел, его на первое время Вам хватит. Но мне больше нравится смотреть в железе. Цитата:
|
||
24.09.2009, 19:54 | #290 |
Форумец
|
Частота - 4 МГц? Завтра в железе посмотрю и все встанет на свои места.
|
24.09.2009, 20:24 | #291 | |
Форумец
Сообщений: 35
Регистрация: 30.06.2009
Возраст: 47
Не в сети |
В mikroP
Цитата:
Отладчиком и я смотрю, но как и вы люблю чтоб реально работало. Думал может какой симулятор схем пользуете. Спасибо за терпение надеюсь не сильно достаю. |
|
24.09.2009, 23:04 | #292 |
Форумец
Сообщений: 35
Регистрация: 30.06.2009
Возраст: 47
Не в сети |
Вот наконец то написал что то.
[PHP]program Pic12F629Svet; begin TRISIO:=1; While true do begin TRISIO:=0; Delay_ms(300); TRISIO.0:=1; GPIO.0:=0; Delay_ms(300); TRISIO.1:=1; GPIO.1:=0; Delay_ms(300); TRISIO.2:=1; GPIO.2:=0; Delay_ms(300); TRISIO:=1; Delay_ms(300); end; end.[/PHP] Вариант конечно примитивный но в железе работает. Это примерно то, что мне нужно. принцип понял, но хотелось бы Ваш вариант Petrd разобрать. Да и про кнопочку не забыть вот тут я даже не знаю как это реализовать. |
25.09.2009, 07:35 | #293 | |
Форумец
|
Цитата:
2. Вчерашний код поправил и кой чего добавил. Проблема была в том, что была задержка в 1 ms, а надо было в 1 сек. Все работало, а глаз-то не видел быстрого моргания. 3. Для кнопки посмотрите встроенную функцию Button() , код чуть позже покажу. |
|
25.09.2009, 13:54 | #295 | |
Форумец
|
Цитата:
Код:
program SveticP16F629; { Если раскоментировать следующую строчку, то программа будет работать со светодиодами подключенными по схеме с ОА, иначе с ОК } //{$DEFINE LED_OA} var g: byte; begin CMCON := 7; TRISIO := 0x18; {$IFDEF LED_OA} GPIO := 6; {$ELSE} GPIO := 1; {$ENDIF} g := 1; while true do begin // кнопка подключена к GP4 и земле, GP4 подтянут через 10 кОм к + питания if Button(GPIO, 4, 10, 0) then begin if g = 8 then g := 1; {$IFDEF LED_OA} GPIO := (not g) and 7; {$ELSE} GPIO := g; {$ENDIF} Delay_ms(300); g := g shl 1; end; end; end. Последний раз редактировалось petrd; 20.09.2010 в 10:05. |
|
25.09.2009, 20:51 | #296 |
Форумец
Сообщений: 35
Регистрация: 30.06.2009
Возраст: 47
Не в сети |
Ок. Огромное спасибо.
Буду разбираться. Вопросы задам. Вот бы где взять описания команд мПАСА на русском, может книга какая есть? Честно говоря тут пробел, привык к Дельфям да и то на уровне ниже среднего. Ладно как говориться не будем нос вешать, вперед учиться, ну и тд. С уважением RN3QGA. |
25.09.2009, 21:43 | #297 |
Форумец
Сообщений: 35
Регистрация: 30.06.2009
Возраст: 47
Не в сети |
Так, не выдержал все проверил.
При включении загорались сразу два сетодиода на GPIO1 и 2. и после отпускания кнопки тоже оставались гореть светодиоды. Решил попробовать сделать чтоб при включении ничего не горело и после отпускания кнопки ничего не горело. Вот добавил кусочек кода, наверное можно более изящно но все работает ОК. [PHP]program P12F629Button_Svetic; //{$DEFINE LED_OA} var g: byte; begin CMCON := 7; TRISIO := 0x18; {$IFDEF LED_OA} GPIO := 6; {$ELSE} GPIO := 1; {$ENDIF} g := 1; while true do begin // Добавил GPIO.0:=1; GPIO.1:=1; GPIO.2:=1; if Button(GPIO, 4, 10, 0) then begin if g = 8 then g := 1; {$IFDEF LED_OA} GPIO := (not g) and 7; {$ELSE} GPIO := g; {$ENDIF} Delay_ms(100); g := g shl 1; //Добавил GPIO.0:=1; GPIO.1:=1; GPIO.2:=1; end; end; end.[/PHP] Да чуть не забыл попробовал раскомментировать строки компилятор выдает ошибку. Пока не понял в чем дело. |
26.09.2009, 17:57 | #298 | ||||
Форумец
|
Цитата:
Цитата:
Код:
//{$DEFINE LED_OA} -> {$DEFINE LED_OA} Цитата:
Цитата:
Код:
GPIO.0:=1; GPIO.1:=1; GPIO.2:=1; Код:
GPIO := 7; В итоге я бы сделал так: Код:
program P12F629Button_Svetic; //{$DEFINE LED_OA} var g: byte; begin //CMCON := 7; // эту строку сейчас можно убрать, но на будущее надо держат в уме TRISIO := 0x18; {$IFDEF LED_OA} GPIO := 7; {$ELSE} GPIO := 0; {$ENDIF} g := 1; while true do begin if Button(GPIO, 4, 10, 0) then begin if g = 8 then g := 1; {$IFDEF LED_OA} GPIO := (not g) and 7; Delay_ms(100); g := g shl 1; GPIO := 7; {$ELSE} GPIO := g; Delay_ms(100); g := g shl 1; GPIO := 0; {$ENDIF} end; end; end. Последний раз редактировалось petrd; 20.09.2010 в 10:06. |
||||