roboforum.ru

Технический форум по робототехнике.

Не могу запустить AT91SAM7S128

ARM7, ARM9, ARM11 etc.

Re: Не могу запустить AT91SAM7S128

Сообщение Ku6opr » 18 сен 2009, 22:40

Сам делал, изготовление заказывал
Аватара пользователя
Ku6opr
 
Сообщения: 50
Зарегистрирован: 19 май 2008, 12:04
Откуда: Украина, г. Харьков
прог. языки: C#, C++

Re: Не могу запустить AT91SAM7S128

Сообщение Ku6opr » 21 сен 2009, 00:21

Пытаюсь скомпилировать и прошить пример мигания светодиодом, вроде все происходит без ошибок, но светодиод отказывается мигать...

Код: Выделить всёРазвернуть
#include "AT91SAM7S256.h"

#define   BIT29       0x20000000

void InitFrec(void);
void InitPeriphery(void);

AT91PS_PMC pPMC   = AT91C_BASE_PMC;

void Delay_s (unsigned long a);

//MAIN POINTER
AT91PS_PIO    p_pPio   = AT91C_BASE_PIOA;
AT91PS_PMC    p_pPMC   = AT91C_BASE_PMC;
AT91PS_USART  p_pUSART = AT91C_BASE_US0;
AT91PS_PDC    p_pPDC   = AT91C_BASE_PDC_US0;
AT91PS_MC     p_pMC    = AT91C_BASE_MC;
AT91PS_AIC    p_pAic   = AT91C_BASE_AIC;

void InitFrec(void)
{
  // Disable watchwog
  AT91C_BASE_WDTC->WDTC_WDMR= AT91C_WDTC_WDDIS;

  //Enabling the Main Oscillator:
  //SCK = 1/32768 = 30.51 uSecond
  //Start up time = 8 * 6 / SCK = 56 * 30.51 = 1,46484375 ms
  pPMC->PMC_MOR = (( AT91C_CKGR_OSCOUNT & (0x06 <<8) | AT91C_CKGR_MOSCEN ));
  //Wait the startup time
  while(!(pPMC->PMC_SR & AT91C_PMC_MOSCS));


  //Setting PLL and divider:
  //- div by 5 Fin = 3,6864 =(18,432 / 5)
  //- Mul 25+1: Fout =   95,8464 =(3,6864 *26)
  //for 96 MHz the erroe is 0.16%
  //Field out NOT USED = 0
  //PLLCOUNT pll startup time estimate at : 0.844 ms
  //PLLCOUNT 28 = 0.000844 /(1/32768)
  pPMC->PMC_PLLR = ((AT91C_CKGR_DIV & 3) | (AT91C_CKGR_PLLCOUNT & (28<<8)) | (AT91C_CKGR_MUL & (24<<16)));

  // Wait the startup time
  while(!(pPMC->PMC_SR & AT91C_PMC_LOCK));
  while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));

  //Selection of Master Clock and Processor Clock
  //select the PLL clock divided by 2
  pPMC->PMC_MCKR = AT91C_PMC_CSS_PLL_CLK | AT91C_PMC_PRES_CLK_2 ;
  while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));

}


void InitPeriphery(void) {

  //enable the clock of the PIO
  p_pPMC->PMC_PCER = 1 << AT91C_ID_PIOA;

  //LED 1
  //configure the PIO Lines corresponding to LED1
  p_pPio->PIO_PER |= BIT29;    //Enable PA29
  p_pPio->PIO_OER |= BIT29;    //Configure in Output
  p_pPio->PIO_CODR |= BIT29;   //set reg to 0

}

//Simple program that blinking leds

//MAIN POINTERS
AT91PS_PIO    m_pPio   = AT91C_BASE_PIOA;

//it's a simple delay
void Delay (unsigned long a) { while (--a!=0); }

int main()
{
  //Init frequency
  InitFrec();
  //Init leds
  InitPeriphery();

  // loop forever
  while(1)
  {
    m_pPio->PIO_CODR = BIT29;  //set reg to 0 (led1 on)
    Delay(5000000);            //simple delay         
    m_pPio->PIO_SODR = BIT29;  //set reg to 1 (led1 off)
    Delay(5000000);             //simple delay
  }
}

Аватара пользователя
Ku6opr
 
Сообщения: 50
Зарегистрирован: 19 май 2008, 12:04
Откуда: Украина, г. Харьков
прог. языки: C#, C++

Re: Не могу запустить AT91SAM7S128

Сообщение galex1981 » 21 сен 2009, 00:28

Светодиод как себя ведет?
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Не могу запустить AT91SAM7S128

Сообщение Ku6opr » 21 сен 2009, 10:23

На ножке всегда высокий лог. уровень
Аватара пользователя
Ku6opr
 
Сообщения: 50
Зарегистрирован: 19 май 2008, 12:04
Откуда: Украина, г. Харьков
прог. языки: C#, C++

Re: Не могу запустить AT91SAM7S128

Сообщение galex1981 » 21 сен 2009, 16:40

Значит порт не принимает логический 0, то есть не верно настроены порты
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Не могу запустить AT91SAM7S128

Сообщение Ku6opr » 22 сен 2009, 18:37

Мерял напряжение на выводах и обнаружил, что когда один щуп на земле, а второй на ножке кварца, то светодиод начинает мигать. Когда убираешь щуп, то программа прекращает свое выполнение, и светодиод остается в том состоянии, в котором находился.
Прозвонил все цепи, вроде все в порядке. Не могу понять причину такого странного поведения...
Аватара пользователя
Ku6opr
 
Сообщения: 50
Зарегистрирован: 19 май 2008, 12:04
Откуда: Украина, г. Харьков
прог. языки: C#, C++

Re: Не могу запустить AT91SAM7S128

Сообщение Vooon » 22 сен 2009, 19:37

А емкости на кварце на месте? (Правда ЕМНИП обычно кварцевый генератор наоборот останавливается...)
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Не могу запустить AT91SAM7S128

Сообщение Ku6opr » 22 сен 2009, 19:51

И с ними, и без них пробовал; результат один.
Аватара пользователя
Ku6opr
 
Сообщения: 50
Зарегистрирован: 19 май 2008, 12:04
Откуда: Украина, г. Харьков
прог. языки: C#, C++

Re: Не могу запустить AT91SAM7S128

Сообщение galex1981 » 22 сен 2009, 19:58

А попробуй заземлить корпус квакца
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Не могу запустить AT91SAM7S128

Сообщение Ku6opr » 22 сен 2009, 20:05

Не помогло.

Что в вольтметре такого, что он вызывает данный эффект? Просто резистором такого не получается добиться.
Аватара пользователя
Ku6opr
 
Сообщения: 50
Зарегистрирован: 19 май 2008, 12:04
Откуда: Украина, г. Харьков
прог. языки: C#, C++

Re: Не могу запустить AT91SAM7S128

Сообщение yak-40 » 22 сен 2009, 20:25

Ku6opr писал(а):Что в вольтметре такого, что он вызывает данный эффект?

В вольтметре не только сопротивление есть, но и ёмкость. Обычно порядка 40 пФ.
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: Не могу запустить AT91SAM7S128

Сообщение galex1981 » 22 сен 2009, 20:25

Вообще верно, а на МК емкости по питанию поставил?
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Не могу запустить AT91SAM7S128

Сообщение Ku6opr » 22 сен 2009, 21:19

Да, согласно схеме.

Почему прошивка заливается нормально, а выполняться не хочет? Значит же тактовый сигнал все-таки есть во время программирования.
Аватара пользователя
Ku6opr
 
Сообщения: 50
Зарегистрирован: 19 май 2008, 12:04
Откуда: Украина, г. Харьков
прог. языки: C#, C++

Re: Не могу запустить AT91SAM7S128

Сообщение yak-40 » 22 сен 2009, 21:49

А что за программатор? Может у него принудительное тактирование...
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: Не могу запустить AT91SAM7S128

Сообщение Ku6opr » 22 сен 2009, 21:50

Программирую через USB
Аватара пользователя
Ku6opr
 
Сообщения: 50
Зарегистрирован: 19 май 2008, 12:04
Откуда: Украина, г. Харьков
прог. языки: C#, C++

Пред.След.

Вернуться в ARM

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron