Proszę o pomoc z uruchomieniem układu:
Rezystory dałem 1k, kwarc 11.0592MHz (nie ma go na schemacie), do scalaków dodałem kondensatory filtrujące 100nF.
Testuje to kodem:
W wyniku nie dostaję nic poza kontrolnym bajtem 0x55 (przycisk przytrzymuje dłużej niż sekundę więc zmiany powinny być widoczne). Dodawałem opóźnienia przy zmianie PL i CL - bez zmian. Czy schemat jest błędny i/lub kod ?
Rezystory dałem 1k, kwarc 11.0592MHz (nie ma go na schemacie), do scalaków dodałem kondensatory filtrujące 100nF.
Testuje to kodem:
// pominięty został kod obsługi USART
#define DS_PORT PORTD
#define DS_PIN 4
#define PL_PORT PORTD
#define PL_PIN 3
#define CL_PORT PORTD
#define CL_PIN 5
#define DS_low() DS_PORT &= ~_BV(DS_PIN)
#define DS_high() DS_PORT |= _BV(DS_PIN)
#define PL_low() PL_PORT &= ~_BV(PL_PIN)
#define PL_high() PL_PORT |= _BV(PL_PIN)
#define CL_low() CL_PORT &= ~_BV(CL_PIN)
#define CL_high() CL_PORT |= _BV(CL_PIN)
int main(void)
{
// 5 - PL
// 3 - CL
// 4 - D
DDRB = 0xff;
PORTB = 0x00;
DDRD = _BV(5) | _BV(3);
PORTD = 0x00;
// właczenie RS232
USART_Init();
unsigned char i = 0;
unsigned char old = 0;
unsigned char data = 0;
while (1)
{
// PL 0->1
PL_low();
PL_high();
data = 0;
for (i = 0; i < 8; i++)
{
// CL 1
CL_high();
if ((PINB & _BV(0)))
{
data |= 1 << i;
}
// CL 0
CL_low();
}
if (old != data)
{
RS_Send(data);
old = data;
}
RS_Send(0x55);
for (i = 0; i < 100; i++)
{
_delay_ms(10);
}
}
}
W wyniku nie dostaję nic poza kontrolnym bajtem 0x55 (przycisk przytrzymuje dłużej niż sekundę więc zmiany powinny być widoczne). Dodawałem opóźnienia przy zmianie PL i CL - bez zmian. Czy schemat jest błędny i/lub kod ?
