Технический форум по робототехнике.
wintersun » 25 окт 2009, 14:22
Подскажите пожалуста в чём проблема. Написал простенькую прожку вращающую моторами робота. Программа компелируется без ошибок. Прошиваю в МК, а программа не запускается. Тыкаю порты, нет сигнала. Использую:
1) МК: PIC18f4620.
2)MPLAB 8.33
3) MCC18 3.30
Собственно сама прога
#include <p18f4620.h>
void delay(unsigned short ms)
{
unsigned short i, j, k ;
for (i=0; i<ms; i++)
for (j=0; j<185; j++)
k++;
}
void main(void)
{
TRISD = 0xff;
while (1) {
PORTDbits.RD7=1;
PORTDbits.RD6=0;
PORTDbits.RD5=1;
PORTDbits.RD4=0;
delay(1000);
PORTDbits.RD7=0;
PORTDbits.RD6=1;
PORTDbits.RD5=0;
PORTDbits.RD4=1;
delay(1000);
}
}
Mamed » 25 окт 2009, 14:27
Смотри биты конфигурации. Скорее всего неправильно тактовый настроен и как следствие - он не запускается.
avr123.nm.ru » 25 окт 2009, 14:27
Упростите программу до мигания одним светодиодм, проверьте в MPLAB и PROTEUS. Включите внутренний генератор МК если щас используете кварц.
wintersun » 25 окт 2009, 14:33
Спасибо.Сейчас попробую
zaman » 25 окт 2009, 15:13
TRISD = 0xff; - порт на вход настроен, для настройки на выход нужно писать:
TRISD = 0x00;
wintersun » 25 окт 2009, 15:31
Всёравно незапускается. Я в конфигурации битов выставил Oscillator на HS и поменял TRISD=0xff на TRISD=0x00

contr » 25 окт 2009, 15:39
у 18 и выше запись порт не PORTDbits.RD7 - это при чтении,
а LATSDbits.LATD7=1;
Чтобы не путаться, можно прописать примерно так:
#define LED LATBbits.LATB5 // светодиод на RB5
чтобы потом
LED=1; //зажигать
LED=0; //или гасить
wintersun » 25 окт 2009, 15:57
Пробывал.Неработает(((
avr123.nm.ru » 25 окт 2009, 15:58
wintersun писал(а):Всёравно незапускается.
В симуляторе то работает ?
contr » 25 окт 2009, 16:00
в симуляторе значение на ножке порта меняется?
wintersun » 25 окт 2009, 16:01
незнаю. Ща посмотрю, я просто PICами дня два как стал заниматься.
contr » 25 окт 2009, 16:31
Вы слишком сложный PIC для освоения выбрали, для тренировки больше подходит pic16f628
У вашего чипа RD5..7 мультиплексированы с ECCP. Отключите их на всякий случай от этого модуля ECCP1AS=0;
Debagger->select tool->MPLab sim так подключается симулятор
View->Watch а так окошко, где можно смотреть выбранные регистры
Mamed » 25 окт 2009, 17:58
Вы слишком сложный PIC для освоения выбрали, для тренировки больше подходит pic16f628
Согласен с земляком, 18-я серия весьма сложна для начинания. PIC16F628 хороший вариант, еще если АЦП надо - PIC16F819. Но и то в них, кроме настройки порта, надо еще аналоговые цепи отключать, чтобы работало.
Очень хорошо симулировать работу PICа в протеусе. Сразу видно, что и как работает. Если в протеусе пошло, то и в железе пойдет.
avr123.nm.ru » 25 окт 2009, 18:35
Возможно.
wintersun » 26 окт 2009, 17:27