реклама на сайте
подробности

 
 
> Как включить GPIO в PIC10f200 ?
DrLan
сообщение Jul 14 2010, 20:13
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 9-08-08
Пользователь №: 39 514



Контроллер - PIC10F200.
Программатор - Pickit2.
Среда - MPLab IDE 8.46.

Пытаюсь запустить простейшую программу для PIC10f, которая включит доступные GPIO в нем.
Пробовал разные компиляторы и языки: CCS, HITECH C, MPASM Assembler, все безуспешно.

Что я делаю:
1. Подсоединил соответствующие выводы мк и программатора:

МК | Pickit 2

(1)GP0/ICSPDAT - ICSPDAT (4)
(2)VSS - GND (3)
(3)GP1/ICSPCLK - ICSPCLK (5)
(4)GP2/T0CKI/FOSC4 - -----
(5)VDD - Vdd (2)
(6)GP3/MCLR/VPP - MCLR/Vpp (1)

2. Подключаю соответственно через USB к компьютеру программатор, запускаю среду разработки.

3. Например, в ассемблере MPASM Assembler такой код:

Код
include <P10F200.inc>

__CONFIG _IntRC_OSC & _WDT_OFF & _CP_OFF & _MCLRE_OFF

#define g0 GPIO,0

bsf g0;

END


Ну вот из той же стихии, только включение-выключение GP3 через одну секунду, но уже в CCS C:
Код
#include <10F200.h>

#use fast_io(b)
#use delay (clock=20000000)

void main()
{

SET_TRIS_B( 0xE );

while (TRUE) {
output_high(PIN_B3);
delay_ms( 1000 );
output_low(PIN_B3);
delay_ms( 1000 );
}

}


Все прекрасно компилится, билдится. Далее отправляю в мк.

4. Проверяю напряжение на данных GP - 0 V.

Что не так делаю? Где косяк? Есть ли какие-то особенные тонкости с PIC или подключением?
Судя по всем введениям и примерам - на pic12, Pic18 и пр - все должно сходу работать и включаться.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Guest_@Ark_*
сообщение Jul 14 2010, 22:05
Сообщение #2





Guests






Цитата
Ну так я так и делаю - говорю, что GP1 буду юзать как выход остальные входы. Именно трисом. Где я туплю?

Вы лучше в свой первый ассемблерный пример добавьте команду TRIS, предварительно загрузив в W нужное значение...
Цитата
У него вообще нету регистра этого! Поэтому ввели TRiS.

Регистр-то сам есть. Адреса у него нету. Потому, доступ к нему только через специальную команду, и только на запись.
Go to the top of the page
 
+Quote Post
DrLan
сообщение Jul 14 2010, 22:50
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 9-08-08
Пользователь №: 39 514



Цитата(@Ark @ Jul 15 2010, 02:05) *
Вы лучше в свой первый ассемблерный пример добавьте команду TRIS, предварительно загрузив в W нужное значение...

Регистр-то сам есть. Адреса у него нету. Потому, доступ к нему только через специальную команду, и только на запись.


Т.к. после этого нифига не получается, видимо пора спать.

Код
include <P10F200.inc>

__CONFIG _IntRC_OSC & _WDT_OFF & _CP_OFF & _MCLRE_OFF

bcf GPIO, 1
bcf GPIO, 0

MOVLW 007h
TRIS GPIO

END

Go to the top of the page
 
+Quote Post
mrKirill
сообщение Jul 15 2010, 04:30
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



Цитата(DrLan @ Jul 15 2010, 04:50) *
Код
include <P10F200.inc>
    
     __CONFIG _IntRC_OSC & _WDT_OFF & _CP_OFF & _MCLRE_OFF
    
     bcf GPIO, 1
     bcf GPIO, 0
    
     MOVLW 007h
     TRIS GPIO
    
     END


Пример этого кода взяли в datasheet'е "EXAMPLE 5-1:" ?
Ошибка там. Не 007h надо в W заносить, а 006h (смотрите таблицу TABLE 5-2 над примером в DS)

С исправленным на 006h значением все у меня скомпильнулось и работает (проверил дрыганьем ноги).

PS. В include файл также полезно заглядывать, там тоже прописано GPIO - 006h.
Go to the top of the page
 
+Quote Post
DrLan
сообщение Jul 15 2010, 06:05
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 9-08-08
Пользователь №: 39 514



Цитата(mrKirill @ Jul 15 2010, 08:30) *
Пример этого кода взяли в datasheet'е "EXAMPLE 5-1:" ?
Ошибка там. Не 007h надо в W заносить, а 006h (смотрите таблицу TABLE 5-2 над примером в DS)

С исправленным на 006h значением все у меня скомпильнулось и работает (проверил дрыганьем ноги).

PS. В include файл также полезно заглядывать, там тоже прописано GPIO - 006h.


Так это и в даташите написано в таблице 4-1 и 5-2.
Этот код тоже никакого действия не имеет у меня:
Код
include <P10F200.inc>

__CONFIG _MCLRE_ON & _WDT_OFF & _CP_OFF

bcf GPIO, 1
bcf GPIO, 0

MOVLW 006h
TRIS GPIO

END


Наверное вопрос надо по-другому ставить. Попробую вечером другой контроллер вкрутить что ли.
Go to the top of the page
 
+Quote Post
mrKirill
сообщение Jul 15 2010, 06:10
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



Цитата(DrLan @ Jul 15 2010, 12:05) *
Так это и в даташите написано в таблице 4-1 и 5-2.

Да, написано, но в примере кода - ошибка.

Цитата(DrLan @ Jul 15 2010, 12:05) *
Этот код тоже никакого действия не имеет у меня:

Конечно не будет, а что Вы хотите?
Вообще с ASM как? Знакомы?

Код
     MOVLW 006h
     TRIS GPIO; настроили выводы, какие на вход, какие на выход
    
   Вот сюда впишите цикл с дрыганьем ноги соответствующей,  будет - дрыганье
  
     END
Go to the top of the page
 
+Quote Post
DrLan
сообщение Jul 15 2010, 06:22
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 9-08-08
Пользователь №: 39 514



Цитата(mrKirill @ Jul 15 2010, 10:10) *
Да, написано, но в примере кода - ошибка.


Конечно не будет, а что Вы хотите?
Вообще с ASM как? Знакомы?

Код
     MOVLW 006h
     TRIS GPIO; настроили выводы, какие на вход, какие на выход
    
   Вот сюда впишите цикл с дрыганьем но
ги соответствующей,  будет - дрыганье
  
     END


smile.gif
Да мне не дрыганье, а просто high на gp1 нужен. В асме абсолютный ноль, но и так понимаю, что там цикла нет:-)
Просто по этому примеру может показаться, что состояние gp1 будет 0, но оно должно быть 1.
Go to the top of the page
 
+Quote Post
mrKirill
сообщение Jul 15 2010, 07:07
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



Цитата(DrLan @ Jul 15 2010, 12:22) *
smile.gif
Да мне не дрыганье, а просто high на gp1 нужен. В асме абсолютный ноль, но и так понимаю, что там цикла нет:-)
Просто по этому примеру может показаться, что состояние gp1 будет 0, но оно должно быть 1.


Держите, на GP1=1;

Код
#include <P10F200.inc>

__CONFIG _IntRC_OSC & _WDT_OFF & _CP_OFF & _MCLRE_OFF

MOVLW 0x00 ;Записываем в регистр W настройку GPIO: 1=ввод, 0=выход
MOVWF GPIO  ;записываем содержимое регистра W в регистр GPIO
TRIS GPIO;записываем содержимое регистра GPIO в TRIS, тем самым конфигурируем порт.

bsf GPIO,1;устанавливаем бит 1 порта GPIO.

END



PS. 100 лет уже ASM PIC не юзал, учитывая, что еще и не знаю его толком smile.gif Для AVR и 8051 учил smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DrLan   Как включить GPIO в PIC10f200 ?   Jul 14 2010, 20:13
- - @Ark   Такое впечатление, что в даташит на PIC10 Вы даже ...   Jul 14 2010, 20:42
|- - DrLan   Цитата(@Ark @ Jul 15 2010, 00:42) Такое в...   Jul 14 2010, 20:44
- - @Ark   ЦитатаЗаглядывал, честно :-) Читайте по новой. Сам...   Jul 14 2010, 20:55
|- - DrLan   Цитата(@Ark @ Jul 15 2010, 00:55) Читайте...   Jul 14 2010, 21:08
- - @Ark   В PIC10 запись в регистр TRIS производится только ...   Jul 14 2010, 21:27
- - xemul   Если MCLREN, то GP3 должен быть притянут к Vcc (н-...   Jul 14 2010, 21:34
|- - DrLan   Цитата(xemul @ Jul 15 2010, 01:34) Если M...   Jul 14 2010, 21:36
|- - xemul   Цитата(DrLan @ Jul 15 2010, 01:36) Угу, с...   Jul 14 2010, 21:46
|- - DrLan   Цитата(xemul @ Jul 15 2010, 01:46) GP3 мо...   Jul 14 2010, 21:58
- - DrLan   Цитата(mrKirill @ Jul 15 2010, 11:07) Дер...   Jul 15 2010, 07:29


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01443 секунд с 7
ELECTRONIX ©2004-2016