Forum: Mikrocontroller und Digitale Elektronik Mal wieder LED Treiber MAX6966


von Marcel K. (viewer)


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…

von holger (Gast)


Lesenswert?

>#pragma vector = TIMER1_OVF_vect
>__interrupt void interrupt_timer1(void)
>{
>  write_data(0x04,toggel);
>>>>>>  uart_putchar(toggel);  //Weg damit, löschen, entsorgen
>  toggel +=0x0c;
>}

von Marcel K. (viewer)


Lesenswert?

Hallo Holger. Danke für deine Antwort. Auch das enfernen hat nichts 
gebracht. Ich benutze diese Zeile um per Hyperterminal zu debuggen.
Viele Grüße...

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.