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

 
 
> Возврат из функции в gcc., не возвращается=(
osminog
сообщение Jun 27 2006, 12:23
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 15-05-05
Пользователь №: 5 060



Компилю проект в avr-gcc . Так вот проблема такая: не происходит возврата из функций - процессор зависает на следующей строчке программы после функции, при этом сама функция нормально вызывается и исполняется. Может кто-то с этим сталкивался, подскажите плиз.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Bill
сообщение Jun 27 2006, 12:38
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(osminog @ Jun 27 2006, 15:23) *
Компилю проект в avr-gcc . Так вот проблема такая: не происходит возврата из функций - процессор зависает на следующей строчке программы после функции, при этом сама функция нормально вызывается и исполняется. Может кто-то с этим сталкивался, подскажите плиз.

Код в студию!

Сообщение отредактировал _Bill - Jun 27 2006, 12:40
Go to the top of the page
 
+Quote Post
osminog
сообщение Jun 27 2006, 14:12
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 15-05-05
Пользователь №: 5 060



Код
#include <include.h>
volatile BASIC_RF_SETTINGS rfSettings;

//  void basicRfInit(BASIC_RF_RX_INFO *pRRI, UINT8 channel, WORD panId, WORD myAddr)

void basicRfInit(BASIC_RF_RX_INFO *pRRI, UINT8 channel, WORD panId, WORD myAddr) {
    UINT8 n;

    // Make sure that the voltage regulator is on, and that the reset pin is inactive
    SET_VREG_ACTIVE();
    halWait(1000);
    SET_RESET_ACTIVE();
    halWait(1);
    SET_RESET_INACTIVE();
    halWait(5);

    // Initialize the FIFOP external interrupt
    FIFOP_INT_INIT();
    ENABLE_FIFOP_INT();

    // Turn off all interrupts while we're accessing the CC2420 registers
    DISABLE_GLOBAL_INT();
    // Register modifications
    FASTSPI_STROBE(CC2420_SXOSCON);
    FASTSPI_SETREG(CC2420_MDMCTRL0, 0x0AF2); // Turn on automatic packet acknowledgment
    FASTSPI_SETREG(CC2420_MDMCTRL1, 0x0500); // Set the correlation threshold = 20
    FASTSPI_SETREG(CC2420_IOCFG0, 0x007F);   // Set the FIFOP threshold to maximum
    FASTSPI_SETREG(CC2420_SECCTRL0, 0x01C4); // Turn off "Security enable"
    // Set the RF channel
    halRfSetChannel(channel);

    // Turn interrupts back on
    ENABLE_GLOBAL_INT();

    // Set the protocol configuration
    rfSettings.pRxInfo = pRRI;
    rfSettings.panId = panId;
    rfSettings.myAddr = myAddr;
    rfSettings.txSeqNumber = 0;
    rfSettings.receiveOn = FALSE;

    // Wait for the crystal oscillator to become stable
    halRfWaitForCrystalOscillator();

    // Write the short address and the PAN ID to the CC2420 RAM (requires that the XOSC is on and stable)
       DISABLE_GLOBAL_INT();
    FASTSPI_WRITE_RAM_LE(&myAddr, CC2420RAM_SHORTADDR, 2, n);
    FASTSPI_WRITE_RAM_LE(&panId, CC2420RAM_PANID, 2, n);
      ENABLE_GLOBAL_INT();

} // basicRfInit

Соответсвенно косяк происходит с функциями halWait(), halRfSetChannel(), ну и наверное со всеми функциями в проекте, я просто больше пока не проверил эти функции находятся в отдельных файлах, вот к примеру halWait():
Код
#include <include.h>


//-------------------------------------------------------------------------------------------------------
//    void halWait(UINT16 timeout)

void halWait(UINT16 timeout) {

    // This sequence uses exactly 8 clock cycle for each round
    do {
        NOP();
        NOP();
        NOP();
        NOP();
    } while (--timeout);

} // halWait

Кстати такой же косяк происходит со структурой rfSettings, виснет на операции присваивания, просто может я чето в Makefile не так пишу. Если надо Makefile приложу=). Со стеком по идее проблем быть не должно, функций не так много, если только в gcc это как то регулируется.

Сообщение отредактировал osminog - Jun 27 2006, 14:14
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- osminog   Возврат из функции в gcc.   Jun 27 2006, 12:23
- - beer_warrior   Код классный, пожалуй проблема не в нем. Действите...   Jun 27 2006, 14:22
- - osminog   В отладчике пока не смотрел, понял в чем проблема ...   Jun 27 2006, 14:33
- - beer_warrior   На первый взгляд все в порядке. В отладчик его   Jun 27 2006, 14:43
- - aesok   > MCU = atmega128 Какое значение у бита M103C ...   Jun 27 2006, 15:07
|- - osminog   Цитата(aesok @ Jun 27 2006, 19:07) > M...   Jun 27 2006, 15:29
|- - 3.14   Цитата(osminog @ Jun 27 2006, 18:29) Цита...   Jun 27 2006, 18:36
- - Harbour   Если стек в ROM попадает, то оно так и будет работ...   Jun 27 2006, 16:57
|- - osminog   Цитата(Harbour @ Jun 27 2006, 20:57) Если...   Jun 27 2006, 18:26
|- - Harbour   Цитата(osminog @ Jun 27 2006, 21:26) Цита...   Jun 28 2006, 06:18
|- - osminog   Цитата(Harbour @ Jun 28 2006, 10:18) Если...   Jun 28 2006, 06:39
- - aesok   Цитата(osminog @ Jun 27 2006, 18:29) Цита...   Jun 27 2006, 18:36
- - vet   AVR в принципе не умеет выполнять код из ОЗУ. osmi...   Jun 28 2006, 06:48
|- - Harbour   Цитата(vet @ Jun 28 2006, 09:48) AVR в пр...   Jun 29 2006, 07:21
- - osminog   Fuse bit поставил равным единице. Не заработало=(....   Jun 28 2006, 07:44
|- - Harbour   Цитата(osminog @ Jun 28 2006, 10:44) Fuse...   Jun 29 2006, 07:34
- - Igor_U   Цитатаvoid basicRfInit(BASIC_RF_RX_INFO *pRRI, UIN...   Jun 28 2006, 11:35
- - _Bill   Цитата(Igor_U @ Jun 28 2006, 14:35) Цитат...   Jun 28 2006, 12:23


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 09:49
Рейтинг@Mail.ru


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