Chyba při definování portů
Napsal: 06 úno 2011, 11:33
Při použití takto napsaného programu, mi to funguje bez problémů:
Pokud to ale nasíšu takto:
tak po zápisu do uProcesoru, program nefunguje. AVR Studio přeloží oba programy bez chyb.
Zajímalo by mě kde je chyba.
Děkuji.
Kód: Vybrat vše
//Příkaz reset
void RESET(volatile unsigned char *pPORT,unsigned char DQ)
{
#define DS_PORT *pPORT //PORT(x)
pPORT--; //
#define DS_DDR *pPORT //DDR(x)
DS_PORT&=~(1<<DQ);
DS_DDR|=1<<DQ;
_delay_us(480);
DS_DDR&=~(1<<DQ);
_delay_us(65);
PRESEN = 0;
//Pokud je připojeno čidlo PRESEN = 1
pPORT--;
if((*pPORT&(1<<DQ)) == 0)
{
PRESEN = 1;
}
_delay_us(480);
}
Kód: Vybrat vše
//Příkaz reset
void RESET(volatile unsigned char *pPORT,unsigned char DQ)
{
#define DS_PORT *pPORT //PORT(x)
/*
Snížení adresy pPORT o 1 např: pro PORTD(0x12)
bude po snížení pPORT(0x11) tj. DDRD
*/
pPORT--;
#define DS_DDR *pPORT //DDR(x)
/*
Znovu adresy pPORT o 1 tj. pro (0x11)
bude po snížení pPORT(0x10) tj. PIND
*/
pPORT--;
#define DS_PIN *pPORT //PIN(x)
DS_PORT&=~(1<<DQ);
DS_DDR|=1<<DQ;
_delay_us(480);
DS_DDR&=~(1<<DQ);
_delay_us(65);
PRESEN = 0;
//Pokud je připojeno čidlo PRESEN = 1
if((DS_PIN&(1<<DQ)) == 0)
{
PRESEN = 1;
}
_delay_us(480);
}
Zajímalo by mě kde je chyba.
Děkuji.