Mal wieder LED Treiber MAX6966

OP #1124921
Lesenswert?

Hallo liebe Forumgemeinde,
ich habe eine Frage zum MAX6966. Generell funktioniert meine 
Kommunikation mit dem MAX6966. Allerdings dürfen keine all zu schnellen 
Befehle gesendet werden. Mal ein Register abfragen oder ein Wert in ein 
Register schreiben  geht aber permanentes, schnelles  „reinschreiben“ 
geht nicht.

Meine Werte:

ATmega16

12MHz Quarz

Hardware SPI mit einem Teiler von 4

Ich sende mit dem Timer1 beim „Überlauf“ (16 Bit, prescale 32) zyklisch 
einen inc.- Wert an den MAX um ein dimmen der LED zu erzeugen.

SCLK ist IDLE LOW und CS wird von mir im Quellcode bedient

Was ich allerdings auf meinem OSZI erkenne ist dass wenn ich zwei Byte 
sende, ist zwischen dem 1. Byte und dem 2. Byte eine längere Pause 
(hängt wohl von der Hardware ab) Laut Datenblatt des MAX ist eine SPI 
Fequenz von 26MHz möglich, also weit über meinen SPI- Takt.


Mein Code:


/////per SPI senden:

void spi_putchar(U8 data)
{
  SPDR = data;
  while (!(SPSR & (1<<SPIF)));
}


////// schreiben auf dem MAX

void write_data(U8 address, U8 data)
{
  CS_LOW();
  spi_putchar(address);
  spi_putchar(data);
  CS_HIGH();
}



///////Timer Interrupt

#pragma vector = TIMER1_OVF_vect
__interrupt void interrupt_timer1(void)
{
  write_data(0x04,toggel);
  uart_putchar(toggel);
  toggel +=0x0c;
}
/* Ende der Funktion 
---------------------------------------------------------*/


Ich habe auch mal ein Oszibild mitgeschickt. Die gelbe Linie ist der 
Takt SCLK die grüne das CS.

Vielleicht kann mir einer von Euch einen guten Tipp geben. Mit den 
besten Grüßen…

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren