Forum: Mikrocontroller und Digitale Elektronik CH32V003 und Arduino


von Ralph S. (jjflash)


Lesenswert?

Okay, Ihr könnt meine folgende Frage gleich mit "Ja, du bist zu dämlich" 
beantworten.

Frage: Bin ich zu dämlich mit Arduino und CH32V003 irgendetwas anderes 
zu bewerkstelligen als bloß Logikpegel auf einem Pin wackeln zu lassen?

Hintergrund:
Ich möchte mein serielles Bootloader-Board, welches ich jetzt 
überarbeitet habe und dessen Vorgängerschaltung und Firmware ich hier 
gepostet habe, tatsächlich Arduinotauglich machen (ich arbeite im 
Normalfall nicht mit Arduino).

Grundsätzlich kann Arduino Codes compilieren und auch ein Upload in mein 
Board durch patchen von platform.txt und boards.txt funktioniert 
einwandfrei.

Aber jede etwas erweiterte Funktion scheint nicht zu funktionieren. Ist 
der Core von hier:

 https://github.com/openwch/arduino_core_ch32

wirklich so fehlerhaft und unvollständig wie es sich mir darstellt oder 
mache ich grundlegend etwas falsch.

Für mich stellt es sich so dar:

- class Serial kann nur schreiben, lesen funktioniert nicht
- Interrupthandler funktioniert nicht
- Wire.h bedient i2c nicht korrekt
- SPI.h ebensowenig

Gerade versuche ich so etwas einfaches wie analogRead und das 
funktioniert natürlich genausowenig wie analogWrite.

Für die obigen "Probleme" habe ich jetzt eigenständigen Ersatz 
geschrieben, der Funktionen bereitstellt, der die Funktionaltät der 
Hardware herstellt, aber es ist eben etwas ausserhalb der 
Standardklassen und ich weiß nicht ob das Sinn und Zweck der Übung ist, 
denn: für jedes SPI-Device, für jedes I2C-Device muß dann eine eigene 
"Library" geschrieben werden, weil alle Beispiele aus dem Netz dann 
darauf aufbauen (und eben nicht funktionieren).

Momentan habe ich für CH32V003 dann geschrieben SPI-TFT Display, 
OLED-Display, TM16xx 7-Segmenttreiber, DS18B20, DHT11, LM75 ... etc.

Irgendwie fühlt sich das an, als ob ich das gesamte Ökosystem neu 
aufsetze.

Bin ich zu dämlich?

:-) natürlich dürft ihr das mit "ja" beantworten

von Christoph M. (mchris)


Lesenswert?

Ralph S. schrieb:
> Gerade versuche ich so etwas einfaches wie analogRead und das
> funktioniert natürlich genausowenig wie analogWrite.

analogRead scheint zumindest implementiert zu sein:

https://github.com/openwch/arduino_core_ch32/blob/main/cores/arduino/ch32/analog.cpp

Vielleicht geht es ja trotzdem nicht, weil es auf einem anderen 
Prozessor probiert wurde.

Ich werfe jetzt einfach mal eine Vermutung den Raum: Wahrscheinlich ist 
eines der #defines nicht aktiv
1
#if (defined(CH32V20x) || defined(CH32V30x) || defined(CH32V30x_C) || defined(CH32V10x) || defined(CH32L10x) || defined(CH32VM00X) )

: Bearbeitet durch User
von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Christoph M. schrieb:
> Vielleicht geht es ja trotzdem nicht, weil es auf einem anderen
> Prozessor probiert wurde.
>
> Ich werfe jetzt einfach mal eine Vermutung den Raum: Wahrscheinlich ist
> eines der #defines nicht aktiv
> #if (defined(CH32V20x) || defined(CH32V30x) || defined(CH32V30x_C) ||
> defined(CH32V10x) || defined(CH32L10x) || defined(CH32VM00X) )

... sagen wir es einmal so: Der Core ist grundsätzlich irgendwie höchst 
unvollständig und höchst buggy. Aus diesem Grund, allerdings erst am 
Entstehen: siehe Anhang.

Daraus werde ich dann am We eine weitere, rein spezielle Library für den 
CH32V003 machen!

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.