Forum: Mikrocontroller und Digitale Elektronik SPI Anfänger


von Axel1 (Gast)


Lesenswert?

Hallo zusammen,

ich benutze Atmega32/STK600
für meine persönlische Forschung, möchte ich die gewonnen von dem IC 
DDC118(Integrator und A/D wandler)  Daten  in einem Atmega32 
abspeichern.
Jeder 1s soll  der DDC118 getakt werden und nach 120us die Daten 
abgeholt werden.  Der DDC liefert 20 x 8 bits.
Before Daten Abholen, bekomme ich ein  intern signal von der DDC118 bzw. 
wenn der Low drive. Wie kann ich dieses signal erfassen. Ich neheme an , 
dass ich der PORTB1 für dass signal reserviere. Kann ich so das signal 
erfassen : while(!(PIN1&(1<<1))).
Wie kann ich auch die gesendeten Daten visialusieren

Hier mein code

#include<avr/io.h>
#include <avr/interrupt.h>

int main (void)
 char unsigned Data[20];

{

  DDRB=0b10100000;// Set Serial Data in(MOSI), SCK Output
  TCCR1B |=((1<<CS10)|(1<<CS11)|(1<<WGM12));// Set up timer in CTC Mode
  TIMSK  |= (1<<OCIE1A);//manage specifics inetrrupt___Enable compare 
match with Timer/counter1
  OCR1A=15624;// each one second
  SPCR |=(1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0); // each ~120 us, data 
write on the EEPROM
  sei();


   while(1)
    {}
}

ISR(TIMER1_COMPA_vect)

{
  PORTB ^=0b10100000;// Led toggle (LED7 und LED5 zu visialusierung )
}

ISR(SPI_STC_vect)
{
    SPDR= Data;
    Data++;
    while (!(SPSR &(1<<SPIF))&&(!(PIN1&(1<<1))));// Wait for total 
transmission

}


Danke


Axel1

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.