www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mal wieder LED Treiber MAX6966


Autor: Marcel K. (viewer)
Datum:

Bewertung
0 lesenswert
nicht 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…

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;
>}

Autor: Marcel K. (viewer)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.