Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ivan_fd  
Косяки с Pic12F6xx
Regent Дата: Вт, 09.02.2010, 16:42  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 09.02.2010

Статус: Offline

Микруха PIC12F629, 675, 683
Код мигалки:

TRISIO = %00001000
GPIO = %00000000

MAIN:
GPIO.5 = 1
GPIO.4 = 1
PAUSE 80
GPIO.5 = 0
GPIO.4 = 0
PAUSE 420
GPIO.1 = 1
GPIO.2 = 1
PAUSE 80
GPIO.1 = 0
GPIO.2 = 0
PAUSE 420
GOTO MAIN

Не могу понять, какого хрена, работают только GPIO.5 GPIO.4 и GPIO.2.
По GPIO.1 вечный ноль!

Меняем в коде местами GPIO.1 и GPIO.2 перестает работать GPIO.2, а GPIO.1 сцука работает.

Закипаю angry

Уважаемые знатоки, подскажите плиз...

Сообщение отредактировал Regent - Вт, 09.02.2010, 17:05
ЯНДЕКС Дата: 09.02.2010
slavauk Дата: Вт, 09.02.2010, 20:43  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 64
Репутация: 3   ±
Замечания:   ±
На сайте с 14.03.2009

Статус: Offline

Для 12F629 kомпараторы отключить надо.

cmcon=7

TRISIO = %00001000
GPIO = %00000000

MAIN:
GPIO.5 = 1
GPIO.4 = 1
PAUSE 80
GPIO.5 = 0
GPIO.4 = 0
PAUSE 420
GPIO.1 = 1
GPIO.2 = 1
PAUSE 80
GPIO.1 = 0
GPIO.2 = 0
PAUSE 420
GOTO MAIN

Для 675, 683 аналоговые входа нужно переключить как цифровые.

ANSEL=0

Сообщение отредактировал slavauk - Вт, 09.02.2010, 21:41
Regent Дата: Пн, 15.02.2010, 12:35  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 09.02.2010

Статус: Offline

to slavauk - спасибо за дельный совет помогло, но это еще не все
Продолжаются проблемы...
PIC12f683` моргало светодиодное

x var word
ANSEL = 0
TISIO = %00001000

GPIO = %00110111 `зажигаем все светодиоды проверяем, что работает
pause 2000
GPIO = 0 `гасим усе

Main:

pulsin GPIO.3, 1, x `ловим ШИМ (около 1.5 мс единица и 20-25 мс ноль)

if x > 140 then `ежели ширина единицы более 1.4 мс
GPIO.0 = 1 `то зажигаем на ноге GPIO.0
pause 1000 `ждемс...
else `в противном случае на GPIO.0 ноль
GPIO.0 = 0
endif

` дальше просто моргаем остальными светодиодами...
GPIO.5 = 1
GPIO.4 = 1
PAUSE 50
GPIO.5 = 0
GPIO.4 = 0
PAUSE 450
GPIO.2 = 1
GPIO.1 = 1
PAUSE 50
GPIO.2 = 0
GPIO.1 = 0
PAUSE 450

GOTO main `и все по новой

Так вот после захвата шима более 1.4 мс GPIO.0 загорается и через одну секунду сцука гаснет... даль все нормально мигает пока не дойдет до этого снова.
я так понимаю что программка не проскакивает команду ELSE.

С чем это может быль связано?

Сообщение отредактировал Regent - Пн, 15.02.2010, 14:34
retas Дата: Пн, 15.02.2010, 15:28  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 445
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

1. Проскакивает или нет ELSE можно посмотреть в Протеусе.
2. А если попробовать после "pause 1000 `ждемс..." ещё раз указать "GPIO.0 = 1".
3. Следует вникнуть в оператор "pulsin" (отиграть только его). Мне, например, "RCIN" (в Протоне) пришлось заменить своей писаниной ибо он работал не так как я представлял а в описании не всё видно.
Regent Дата: Пн, 15.02.2010, 16:53  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 09.02.2010

Статус: Offline

pulsin программа понимает правильно, проверено!
GPIO.0 = 1 выполнив это действие (на ноге GP0 единица появилась) идем дальше, выполняем GPIO.5 = 1 и тут начинается...
На ноге GP5 появляется единица, и тут же пропадает на GP0 !! не разобраться ни фига. Я Уже готов просверлить контроллер к чертям. angry
ivan_fd Дата: Пн, 15.02.2010, 17:37  |                                                                                                                Сообщение # 6
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Хорошо бы было, это все переписать на Протоне, и посмотреть в Протеусе.
А то PicBasicpro не симулируется в Протеусе.
slavauk Дата: Пн, 15.02.2010, 22:55  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 64
Репутация: 3   ±
Замечания:   ±
На сайте с 14.03.2009

Статус: Offline

Quote (Regent)
Продолжаются проблемы...
PIC12f683` моргало светодиодное

x var word
ANSEL = 0
CMCON0=7
TRISIO = %00001000

GPIO = %00110111 `зажигаем все светодиоды проверяем, что работает
pause 2000
GPIO = 0 `гасим усе

Main:

pulsin GPIO.3, 1, x `ловим ШИМ (около 1.5 мс единица и 20-25 мс ноль)

if x > 140 then `ежели ширина единицы более 1.4 мс
GPIO.0 = 1 `то зажигаем на ноге GPIO.0
pause 1000 `ждемс...
else `в противном случае на GPIO.0 ноль
GPIO.0 = 0
endif

` дальше просто моргаем остальными светодиодами...
GPIO.5 = 1
GPIO.4 = 1
PAUSE 50
GPIO.5 = 0
GPIO.4 = 0
PAUSE 450
GPIO.2 = 1
GPIO.1 = 1
PAUSE 50
GPIO.2 = 0
GPIO.1 = 0
PAUSE 450

GOTO main `и все по новой

Каждый контролер имеет какую-то особенность.Очень полезно читать DATASHEET на конкретный контролер (особое
внимание уделять регистрам).Удачи

Сообщение отредактировал slavauk - Пн, 15.02.2010, 23:06
Regent Дата: Вт, 16.02.2010, 09:34  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 09.02.2010

Статус: Offline

Спасибо slavauk. Усе работает! biggrin
  • Страница 1 из 1
  • 1
Поиск: