So kommt das raus, gerade nochmals angeschaut.
Standard Code aus der mcp_can Lib hierfür verwendet:
// CAN Receive Example
//
#include <mcp_can.h>
#include <SPI.h>
long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];
char msgString[128]; // Array to store serial string
#define CAN0_INT 2 // Set INT to pin 2
// wenn von 2 auf andere Wert dann läuft der BUS
MCP_CAN CAN0(10); // Set CS to pin 10
void setup()
{
Serial.begin(57600);
//Serial.begin(115200);
//Serial.begin(9600);
// Initialize MCP2515 running at 16MHz with a baudrate of 500kb/s and the masks and filters disabled.
if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK)
Serial.println("MCP2515 Initialized Successfully!");
else
Serial.println("Error Initializing MCP2515...");
CAN0.setMode(MCP_NORMAL); // Set operation mode to normal so the MCP2515 sends acks to received data.
pinMode(CAN0_INT, INPUT); // Configuring pin for /INT input
Serial.println("MCP2515 Library Receive Example...");
}
void loop()
{
if(!digitalRead(CAN0_INT)) // If CAN0_INT pin is low, read receive buffer
{
CAN0.readMsgBuf(&rxId, &len, rxBuf); // Read data: len = data length, buf = data byte(s)
if((rxId & 0x80000000) == 0x80000000) // Determine if ID is standard (11 bits) or extended (29 bits)
sprintf(msgString, "Extended ID: 0x%.8lX DLC: %1d Data:", (rxId & 0x1FFFFFFF), len);
else
sprintf(msgString, "Standard ID: 0x%.3lX DLC: %1d Data:", rxId, len);
Serial.print(msgString);
if((rxId & 0x40000000) == 0x40000000){ // Determine if message is a remote request frame.
sprintf(msgString, " REMOTE REQUEST FRAME");
Serial.print(msgString);
} else {
for(byte i = 0; i<len; i++){
sprintf(msgString, " 0x%.2X", rxBuf[i]);
Serial.print(msgString);
}
}
Serial.println();
}
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
WOW @my_xy_projekt das funktioniert.
Erst einmal vielen Dank, das ist ja krass...
Darf ich Dich fragen, wie lange es dauert für Dich, so etwas zu programmieren?
Ich bin ehrlich, für mich wäre das unmöglich gewesen.
Vielen vielen Dank Dir.
Ich werde dann die Tage mal das System wirklich zusammen bauen und dann "live" Daten anschauen. Danach melde ich mich sicher wieder.
Ich danke Dir und auch Euch für den Support tolles Forum, in diesem Sinne eine schönen Freitag und langes Wochenende bald.
Es ist gut, wenn ein Plan funktioniert...
Das war nur ein Schnellschuß.
Keine Ahnung, wie lange ich dafür gebraucht habe.
/edit: vermutlich ne Stunde mit Theorieüberlegung. 19:30 hab ich in nem anderen Thread den Code fertig gehabt. Aber wie gesagt, das kopieren und zwischen Doku und Code Fenster wechseln braucht mehr Zeit als alles andere.
Ist keine Raketenwissenschaft. Ich schreib auf nem Netbook, bzw. Minilaptop. Das ist die größere Schwierigkeit, weil ständig gescrollt udn Fenster gewechselt werden muß
Der Code ist auch noch nicht so richtig schick.
Normalerweise gehört für ``ìsNew```noch eine Prüfung der empfangenen Daten mit den bereits vorhandenen Daten dazu, um bei einer Änderung diese sofort zu bekommen.
Vorbereitet ist es schon, aber ich wollt einfach mal zeigen, dass es gar nicht so schwer ist an die Daten zu kommen.
Gibt es zu der Doku noch mehr? Denn für 3 Werte gibt es ein Bitpattern, was irgendwo dokumentiert sein muss, damit man zu den Bits die passenden Meldungen für Error, Warning und Notice in Klartext dekodieren kann. (Paket 4 und 5)
Sag einfach Bescheid, was Du brauchst, ich friemel Dir da alles raus, was geht.
/edit2: Noch für das Btpattern die richtigen Elemente eingetragen.... Du musst den Code also nochmal holen.
Hi,
ja gibt noch eine dedizierte Fehlerliste, die muss ich suchen. Ist dann genau aufgezeigt welche Bytes zusammen welchen Fehler ergeben.
Habe soeben versucht das Display ST7789 anzuschliessen, aber leider ist der UNO zu schwach für die Lib. Denke ich werde in Ruhe auch erneut alles auf den Teensy transferieren. Der packt einfach ein Vielfaches mehr.
Ich melde mich heute Abend wieder mit der Fehlerliste (hoffe ich finde sie in meinem "gut organisierten" Chaos).
Ich muss ehrlich sagen, dass ich Deinem Code wenigstens folgen kann, sprich ich konnte verstehen, wie Du was zusammenbringst, wo Du was ausliest und so weiter. Ich finde den Code sehr ordentlich, als Laie verständlich.
Kannst Du bitte die Library und einen Link zum tatsächlich verwendeten Display angeben?
7789 ist etwas exotisch, jedenfalls scheint die famose U8G2 von Oli Kraus den nicht direkt zu unterstützen. OLED in 128x64, -x128, -x160 sollten eigentlich am Uno kein wirkliches Problem darstellen.
Ich hab mal was gebaut.
Der passt super in einen UNO.
Der Sketch verwendet 18850 Bytes (58%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes.
Globale Variablen verwenden 755 Bytes (36%) des dynamischen Speichers, 1293 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Library ist notwendig, solltest aber finden
HInweis: Normalerweise sollte bei der Installation der 7789-Lib der notwendige Rest mitinstalliert werden.
585 flash / 36% RAM Ja sieht gut aus. Trotzdem sollte der TO mal auflisten was er insgesamt alles im Programm haben will.
Wenn da jetzt noch das dazukommt
Nicht dass es dann nach her doch eng wird.
Wie viele Symbole sind das in der Wunschausbau-Version?
Wie viele Pixel werden diese Symbole haben?
Diese Pixel wollen alle im Flash-Speicher definiert sein.
Könnte es evtl. mit Atmega 328P doch eng werden.
So aus dem Bauch heraus würde ich vermuten, dass der Teensy 4.0 recht gute Arduino-Unterstützung hat. Da es ein anderer Prozessor ist würde ich da trotzdem möglichst bald wenigstens mal mit Prozessoreinstellung Teensy 4.0 compilieren um herauszufinden ob da noch Haken sind.
also eigentlich nur das Display - mit den Daten. Kein Logging oder so.
Was nice wäre, wäre noch GPS mit Geschwindigkeit
Aber das ist dann ne weitere Baustelle.
Also das wäre die Antwort zur Wunschfrage: "Was alles noch".
Auf einem anderen Teensy läuft bereits der PWM Generator mit dem ST7789 Display.
Ich weiss nicht ob das Alles für einen Prozessor zu viel werden würde.
PWM plus CAN Bus zusammen. Muss heute Abend schauen, was für ein Fehler kam beim Compillieren.
Falls der Transfer auf den Teensy läuft, würde ich dann auch versuchen den PWM Part reinzukopieren und schauen ob die Performance noch stimmt.
Übrigends ich heisse Fabian, finde das wäre weniger anonym oder?
Falls ihr das auch so seht, lebe seit 15 Jahren in der Schweiz am Zürisee und gebürtig aus dem tiefsten Süden (Singen/Konstanz).
ich habe den Code hochgeladen und er läuft - wow, einfach krass.
Anbei ist noch das Manual des Reglers.
Auf Seite 56 und folgende Seiten gibt es die Fehler-Codes.
Wobei eigentlich der Regler an sich "sehr konservativ" eingestellt ist, noch
Bei dem anderen Code für den Teensy habe ich das Flackern des Displays mit Sprites eliminiert. Ist das der richtige Ansatz? Oder gibt es bessere Wege?
Das mit den Sprites hat immerhin geklappt nach langem Versuchen.
Oder liegt das an dem UNO und seiner Frequenz mit welcher er "rechnet"?
Ich hatte das Gefühl, dass der Teensy schon ein "flickering" hat aber der UNO ist deutlich langsamer.... HBCi_Global_manual_PRELIMINARY-F4.pdf (3.7 MB)
@wno158 habe ich noch nie in den Händen gehabt. Vielleicht wäre das auch eine Möglichkeit. @my_xy_projekt das mit der fehlenden Kompatibilität kenne ich vom Teensy, das ist manchmal, vor allem als Anfänger, sehr frustrierend.