Advertisement
Guest User

Paralelo para SPI

a guest
Sep 26th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.96 KB | None | 0 0
  1. // NÃO TESTADO
  2. // Dados da porta paralela em D0 a D7 (Port D do ATmega)
  3. // Strobe: A0 (PC0)
  4. // Busy: A1 (PC1)
  5. // Ligação ao Rasp Pi via SPI
  6. // Rasp Pi Ready: A2 (PC2)
  7. //
  8.  
  9. // Iniciacao
  10. void setup()
  11. {
  12.     DDRD = 0x00;    // Port D é entrada
  13.     DDRC = 0x02;    // PC1 é output, demais são input
  14.    
  15.     // Iniciar a SPI a gosto
  16. }
  17.  
  18. // Laço para mover dados da porta D para o SPI
  19. void loop()
  20. {
  21.     uint8_t dado;
  22.    
  23.     // Espera baixar o strobe
  24.     cli();  // sem interrupções
  25.     while ((PINC & 0x01) != 0)
  26.         ;
  27.     // Baixou Strobe, levantar o Busy
  28.     PORTC |= 0x02;
  29.     sei();  // permite interrupções
  30.    
  31.     // Ler o dado
  32.     dado = PIND;
  33.     // Espera RASP Pi pronto
  34.     while ((PINC & 0x04) == 0)
  35.         ;
  36.     // Disparar envio pela SPI
  37.     SPDR = dado;
  38.     // Espera acabar de enviar
  39.     while ((SPSR & SPIF) == 0)
  40.         ;;
  41.     dado = SPDR;    // para limpara o flag
  42.     // Abaixa o Busy
  43.     PORTC &= ~0x02;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement