Nutzung in Bascom zur Ansteuerung von LED-Displays und Komm. mit PC

sHINE

Neues Mitglied
02. Aug. 2011
25
0
0
Sprachen
Hallo Leute!

Ich bastel seit einiger Zeit an einem schicken LED-Display und stoße an die Grenzen meines Atmega 644'.

Im Anhang könnt Ihr Euch eine Vorstellung meines Projektes machen. Es ist mit Bascom realisiert.

Die Ansteuerung erfolgt vom PC direkt über einen FTDI-Controller mit 115200 Baud aus .Net. Dies funzt sehr gut bei einer Display-Größe von 128x64 über SPI.

Nun hatte ich den Drang, das Teil noch größer zu bauen und habe mal zwei weitere Displays angehängt, sodass ich jetzt 128x96 habe. In Wirklichkeit sind es 384x32, lege einfach jedes zweite Display unten an.

Da Bascom nun natürlich mehr Zeit für das Raushauen der Daten per SPI benötigt, musste ich zwangsläufig die Baudrate auf 57600 verringern, was sich natürlich negativ auf die Performance auswirkt. Ich habe den Takt bereits auf 22,11 MHz angehoben, aber das nützt nichts...

Nun habe ich mir das XMega-A1 Board mal angesehen und denke, dass ich dort mit 32MHz weiter komme, allerdings weiß ich nicht, ob ich den Silabs direkt aus meinem .NET-Programm angeschnackt bekomme, da das eine Beispiel doch etwas dürftig ist.

Meine Frage ist also, hat jemand Erfahrung mit dem Boards unter Bascom und mit der Ansteuerung aus .NET heraus? Von den Funktionen her benötige ich lediglich SPI für die Displays und einen UART für die Kommunikation mit dem PC...Leider kenne ich den CP2102 nun gar nicht, daher hab ich mit dem Kauf des Moduls noch gewartet...Kann man in der nächsten Revision nicht nen FTDI 232H draufpacken ;)

Vielen Dank und Gruß

Jan

IMG_1186.jpg
 
Hallo Jan,

eine Lösung für .NET habe ich leider noch nicht. Hast du dir mal das USBXpress Development Kit von Silabs genauer angesehen, da sind einige Beispiele in C enthalten, vielleicht hilft dir das weiter. (TDI werden wir wahrscheinlich nicht einsetzen, da wir Silabs in größerer Stückzahl bereits seit Jahren erfolgreich in industriellen Projekten einsetzen und hier entsprechend auch hoher Lagerbestand vorhanden ist.)

Was mich mal interessieren würde, welche SPI-Übertragungsrate du mit Bascom erreichst, bzw. welche du benötigst. Die Hardware des ATmega644 erreicht fosc/2, also maximal 10MHz, das ist schon einiges. Setzt du den ATxmega128A1 ein, sind maximal 16MHz möglich. Vielleicht läßt sich die SPI-Übertragung noch optimieren, nutzt du vielleicht SoftwareSPI, das ist sicherlich nicht so effektiv wie HardwareSPI? Vielleicht benötigst du aber auch mehr als 10MHz, dann läßt sich natürlich nichts mehr optimieren, aber hier würde ich vielleicht erst mal ansetzen.

Grüße,
Dirk
 
Moin!

das Kit habe ich mir schon gelutscht, allerdings kann ich kein C, daher nehme ich ja auch BasCom ;)
Dort ist auch ein rudimentäres C# bzw. VB.Net-Sample drin, aber das zeigt mir nur, wie ich einzelne Ports schalte und nicht, wie ich direkt den UART bediene...

Die SPI-Rate ist bei mir in etwa 5,5MHz, da ich als kleinsten Teiler nur 4 einstellen kann und mein Quarz 22,11...MHz hat. Lt. Datenblatt unterstützt der M644 den "Double-Speed" SPI nicht, das habe ich mit direktem Setzen der SPI-Register versucht.
Daher ja meine Hoffnung, dass ich mit dem xMega da ordentlich Schub geben kann, denn die Displays, die ja im Grunde nur aus Schieberegistern (HC595) bestehen, haben damit keine Probleme. Meine gelesen zu haben, dass die erst ab 50 MHz zicken.

Ich nutze natürlich Hardware-SPI, die Software-Implementierung war schon lange am Ende...

btw. Ich muss ja nicht den SiLabs nehmen, der xMega hat ja n paar UART's, da korke ich einfach meinen FTDI ran, dann muss ich mein .NET-Tool nicht ändern. Wie erfolgt die Programmierung aus BasCom heraus? Hoffe, das geht über USB. Wollte ungern noch nen Programmer kaufen...bin mit meinem, jetzt mittlerweile knapp 10 Jahre alten STK500 immer noch glücklich :)

Gruß
Jan
 
Hi Jan,

dass der ATmega644 nicht mit DoubleSpeed im MasterMode läuft ist mir neu ... das steht im Datenblatt?

Für das Modul haben wir hier im Forum eine Programmiersoftware und den passenden Bootloader, Voraussetzung ist jedoch der CP2102 im USBxpress Mode.

Ich würde mir aber den AVRISPmkII Atmel Programmer zulegen (gibt es zum Beispiel bei uns im Shop www.mikrocontroller-praxis.de). Dieser programmiert Xmega über PDI, der passt auch direkt auf den PDI-Stecker des Moduls.
Mit Bascom kenne ich mich leider nicht aus, soweit ich weiß, wird der aber auch durch Bascom unterstützt. Solltest du Xmega einsetzen, denke an die Betriebsspannung 1,8V bis 3,6V, also keine 5V.

Um noch mehr SPI-Speed zu erreichen, könntest du vielleicht auch einen anderen Atmega einsetzen der zwei USARTs hat, davon einen in MasterSPI schalten und mit zwei SPI-Bussen Daten zu den Anzeigen übertragen, das ist vielleicht nicht so elegant, könnte aber vielleicht auch eine Lösung sein.

Gruß,
Dirk
 
Hi!

Ich meine es andersrum; es steht nicht drin, dass er ihn unterstützt und das Setzen der entsprechenden Registerwerte schlägt auch fehl...

Der xMega ist anscheinend nicht 5V-tolerant, muss ich also Level-Shifter einsetzen.

Gruß Jan
 
Hallo,

doch der Mikrocontroller unterstützt es schon. Es steht auch mit Sicherheit im Datenblatt.
Eine Einschränkung bezüglich der maximalen zulässigen Geschwindigkeit gibt es bei den AVRs im SlaveMode und bei der ISP-Programmierung über SPI.

Ich weiß nun auch nicht, wie du die aktuelle SPI-Frequenz ermittelt hast (Oszi?). Effektiv ist die Übertragungsrate natürlich geringer, wenn du das Statusbit pollst und dann erst Daten für die nächste Übertragung aufbereitest, hier könntest du eventuell mal schauen und ggf. optimieren. Also nachdem du in das Datenregister schreibst, Daten aufbereiten und dann pollen, so dass das Datenbyte sofort zur Verfügung steht, wenn du wieder senden kannst. Ich weiss aber nicht, wie das in Bascom gelöst ist (vollständigkeitshalber: Alternative zum pollen ist Interrupt).

Dirk
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)