Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // NÃO TESTADO
- // Dados da porta paralela em D0 a D7 (Port D do ATmega)
- // Strobe: A0 (PC0)
- // Busy: A1 (PC1)
- // Ligação ao Rasp Pi via SPI
- // Rasp Pi Ready: A2 (PC2)
- //
- // Iniciacao
- void setup()
- {
- DDRD = 0x00; // Port D é entrada
- DDRC = 0x02; // PC1 é output, demais são input
- // Iniciar a SPI a gosto
- }
- // Laço para mover dados da porta D para o SPI
- void loop()
- {
- uint8_t dado;
- // Espera baixar o strobe
- cli(); // sem interrupções
- while ((PINC & 0x01) != 0)
- ;
- // Baixou Strobe, levantar o Busy
- PORTC |= 0x02;
- sei(); // permite interrupções
- // Ler o dado
- dado = PIND;
- // Espera RASP Pi pronto
- while ((PINC & 0x04) == 0)
- ;
- // Disparar envio pela SPI
- SPDR = dado;
- // Espera acabar de enviar
- while ((SPSR & SPIF) == 0)
- ;;
- dado = SPDR; // para limpara o flag
- // Abaixa o Busy
- PORTC &= ~0x02;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement