Fürs erste nur kurz eine minimale Beschreibung, weiter bin ich gerade nicht.
Hardware:
P25Q128HA - Nor Flash.
PY32F030K28 - MCU
Display - Noch nicht genau ergründet, hat aber einen beschrifteten connector. I2C Bus steht schon mal fest!
Touch - Muss ich noch schauen, vermutlich morgen genaueres.
Unter dem flex vom LCD liegt RST, RX,TX und Boot.
Schön einsammeln Freunde! Gratis Displays!
Bilder mach ich morgen welche bei gutem Licht!
Ich schau mal was die Möhre auf der seriellen quatscht.
...und das scheint ja sowas wie ein 160x240 Pixel Farbdisplay zu sein (!)
Die haben doch einen an der Waffel. Versteh mich nicht falsch, für Bastler super - aber als Wegwerfware ist das doch Verschwendung pur.
Aber mit LiIon Akku, Ladeschaltung und noch einer Leistungsendstufe und ein paar Knöpfchen fast schon fertige Hardware fü alles mögliche.
Widerstandsheizung oder Induktion?
Naja, Stiller Zeitgenosse. Auf der seriellen ist nix.
Ich würde halt fast wetten die haben (laut übersetztem DB) RDP/WRP für den internen Speicher des MCU gesetzt. Somit dürfte das erneute verwenden des Cortex M0+ der da werkelt vermutlich eher nicht möglich sein.
(oder kennt jemand einen Trick?)
Morgen geht's weiter. Irgendwie hab ich einen R an Boot0 in Verdacht der verhindert das ich in den Bootloader komme.
Selbst wenn ich nur den Touch (Separates PCB, Ttp223! Sicher sogar, sind 0,08€ teure Sensormodule) LCD und den Flash benutzen kann. Das Zeug liegt GRATIS auf der Straße!
Das sind alleine die LCD wert aufgesammelt zu werden und ausnahmsweise haben sie es ja einfach gemacht: Beschriftung auf dem PCB.
Das ist Elektronik aus so einem Suchtnuckel, aber das ist ja wohl einer zum Nachfüllen, denn wozu sonst sollte der eine USB-C-Buchse haben, mit der man den Akku wieder aufladen kann?
Insofern werden diese Drecksdinger nicht in der gleichen Menge in die Pampa geworfen wie die Einweg-Suchtnuckel.
Das ist Elektronik aus so einem Suchtnuckel, aber das ist ja wohl einer
zum Nachfüllen,
Nein, ist er nicht!
Typ und Marke im Titel, das sind ALLES Einweg, der einzige Grund warum die Teile USB-C haben und den Akku laden können ist weil das Ding 25.000 Züge beherbergt. Das schafft ein so kleiner Akku natürlich nicht ohne nachgeladen zu werden.
Hier ist das Gehäuse mit Tank zu sehen. Ein mal Vorderseite und Rückseite.
Theoretisch (pinker Deckel, an der Rückseite entfernen und der Tank liegt frei) könnte man den nachfüllen. Aber auch wenn der Trend dazu Grad online die Runde macht, das ist ekelhaft!
Wie lange die Watte in den Heitzelementen unverkohlt bleibt ect. Und die Heitzwendeln lassen sich nicht tauschen ohne riesen Sauerei.
Wie lange die Watte in den Heitzelementen unverkohlt bleibt ect
So lange wie genügend Liquid enthalten ist - garnicht.
Ich dampfe mit einem Voopoo Drag M100S Smart - also ein Mehrwegdampfer mit einem UFORCE Kopf. Der Drag erkennt die Coils anhand ihres Widerstandes automatisch und stellt sich darauf ein. Im Grunde, wie schon gesagt, braucht der Coil - solange er nicht trocken betätigt wird - garnicht gewechselt werden. Ich wechsle dennoch alle 50k Züge.
Und man muss mal sagen, ich dampfe relativ viel, den Drag habe ich jetzt ein Jahr und genau 97.727 Züge gemacht. Aber 25.000 Züge von diesem Fumot sind schon extrem viel für ein Einwegdampfer. Das Ding hält dicke 5-6 Monate - so oft wird man den mit Sicherheit nicht finden.
Auch die hochkapazitiven (25000 Puffs = Züge) Einweg-Dinger haben USB-C, weil dann können die Akkus kleiner (=billiger) sein. Und bei Fumot heißen die Typ-C-Anschluss und Typ-C-Schnellladung, vermutlich weil sie sich dadurch Lizenz-Gebühren sparen.
Der Tornado Vape ist in Deutschland nicht generell verboten, allerdings gibt es strenge Vorschriften, die das Gerät in seiner aktuellen Form auf dem deutschen Markt einschränken. Ein Grund dafür sind die in Deutschland geltenden Regelungen zur E-Zigaretten-Nutzung. Die maximale Liquid-Menge in einem Einweg-Vape darf hier 2 ml nicht überschreiten. Der Tornado Vape, der bis zu 12.000 Züge bietet, enthält deutlich mehr als diese Menge und verstößt damit gegen die deutsche E-Zigaretten-Richtlinie.
Zudem gibt es Vorschriften bezüglich der Nikotinmengen, die in Vaping-Produkten erlaubt sind. Diese strengen Gesetze sollen den Verbraucherschutz stärken, insbesondere in Bezug auf minderjährige Nutzer. Deshalb sind viele Einweggeräte, die in anderen Ländern problemlos verkauft werden, in Deutschland nicht zugelassen.
Zitatende
Man kann sie dennoch kaufen. Bestellen oder "unter der Hand".
Das Ding hält dicke 5-6 Monate - so oft wird man den mit Sicherheit
nicht finden.
Der Kollege der mir den gab, hatte ihn ca. Ne Woche.
Glaub mir die Teile gehen hier an den Kiosken Rum, an Jugendliche verkauft, ohne Skrupel. Die halten nicht lange, da nuckeln dann 1000 Leute dran:"Probier mal".
Und je nach dem wie schnell und lange da wer dran zieht. Ich hör öfter mal:"Schmeckt verbrannt". Ich bekomm die ja regelmäßig für die Akkus von Freunden und Bekannten.
Smog Mag GRIP 225TC, Kopf weiß ich Grad nicht auswendig, einfaches Modell mit Dual Coil.
Benutze ich aber kaum, dampfen ist schön und gut, da hau ich mir aber immer zu viel Nikotin rein. Irgendwie bin ich da einer "dem fehlt da was". Schwer zu erklären.
Man kann sie dennoch kaufen. Bestellen oder "unter der Hand".
Leider ja, das schlimmste ist das Gilt sogar für harmlos aussehende aber gar nicht so harmlose HHC Vapes. Ich hab die Dinger hier an einem Kiosk gesehen und mich gefragt:"HHC?"... Googelt mal, krass was sich so mancher da freiwillig in die Synapsen zwiebelt.
Solch ein Exemplar würde ich gern auch mal finden! Leider habe ich hier auf dem Land aber bisher kaum E-Vapes in der Pampa gefunden, und wenn, dann die einfachen 0815-Teile ohne LED- oder gar LCD-Anzeige.
Kannst du nicht die Verbindungen vom LCD an den MC durchpiepsen?
Hab ich. Ich hab sogar mit dem proxon die oberste Schicht abgetragen und so gut es eben ging durchleuchtet ect.
Daher kam ich ja zur Vermutung das es in Richtung ST77XX geht, DCN an SCL und Data an MOSI.
Scheint aber kein ST77XX zu sein ODER ich hab noch nicht die richtige Variante ausprobiert.
Ich scheine jedenfalls dem Rätsel auf der Spur zu sein. Ohne Ansteuerung bleibt es einfach Weiß, mit wird es zumindest schon mal Grau und flackert leicht. Es versucht also was zu tun.
Da bin ich zuversichtlich das auch noch Platinen von dem Modell Reinflattern, bis dahin muss ich mir noch einen LA besorgen.
Gleich löte ich erst mal den Flash um, reinschauen was da so drin ist.
In Kapitel 4.6.2 steht was zur Flash Read Protection. M.E. sollte es möglich sein, die Protection wieder rückgängig zu machen, wobei natürlich dadurch das on-chip Flash gelöscht wird. Aber der Chip müsste prinzipiell neu programmierbar sein.
In Kapitel 4.6.2 steht was zur Flash Read Protection. M.E. sollte es
möglich sein, die Protection wieder rückgängig zu machen, wobei
natürlich dadurch das on-chip Flash gelöscht wird. Aber der Chip müsste
prinzipiell neu programmierbar sein.
Der inhalt des Flash, 16MB für eine verdammte E-Zigarette! Pffff!
Irgendwie geil für uns bastler, vor allem weil das OTP register komplett leer ist usw. Bis auf den inhalt ist der komplett jungfräulich!
Übrigens lohnt es sich auch die anderen Modelle zu Sammeln.
Wer die in Rund oder flach mit 12.000/15.000/20.000 Zügen und Charlyplexing für die Siebensegmentanzeige aufsammelt, da sitzen (SOP16/TSOP20) PY32F002 drauf.
Allerdings muss dazu das BOOT1n Bit in den Option Bytes auch auf 1
stehen, Und das scheint auf 0 programmiert zu sein.
Wenn ich nen passendes Breakout organisiert bekomme, versuch ich es nach DB mit dem ISP Tool. Aktuell hab ich nix passendes und "Dead Bug" hab ich grad echt keine lust zu. 0,5mm pitch is mir grad zu fummelig.
Ein Komplettes Löschen würde ja schon reichen, das würde den anteil von "Müll" von den teilen regelrecht auf Gehäuse, Platine und Verdampfer reduzieren.
Es gehen sogar die stehenden USB-C Buchsen gut runter.
Ich hab grad die meisten der platinen (platz!) abgeerntet, geht echt gut!
Geduld, einen J-Link hab ich hier. Mein hauptaugenmerk gilt dem Display, denn das ist halbwegs "Bastlerfreundlich" mit connector versehen. Das passende Breakout dafür wird es bestimmt auch irgendwo geben.
Die aktuelle platine ist zu nix mehr zu gebrauchen weil ich mir die layer angesehen hab. ;)
Der MCU liegt aber hier, bisschen angeschliffen bei der aktion, sollte aber noch funktionieren.
Zitat:"During my initial teardown, I noticed that the microcontroller’s SWD (Serial Wire Debug) programming lines were brought out to the USB-C port, but in an unusual way. The CC1/CC2 lines were not only used as regular 5.1k pulldowns to enable USB-C chargers to recognize the vape, but also as a programming connector"
Er hat recht, das ist bei diesen Fumot ebenfalls so.
Ich komm allerdings damit gerade nicht wirklich weiter.
Mein J-Link Clon will anscheinend nicht bzw. alles deutet auf fehlerhafte verbindungen hin, Pulldown drauf oder entfernt, spielt keine rolle.
Auf der einen ist DAT/CLK sogar herausgeführt als testpad, die hab ich gerade in der mangel und bekomme einfach keine verbindung.
Die tools aus dem link funktionieren auch, hier mal ein ergebniss nur mit einem "Schnellen test".
Ist natürlich nicht "Richtig" aber das format scheint zumindest mal zu stimmen. ;)
langsam sieht das aus als hätte jemand zuviel Zeit.
Nö, haben nicht, die Nehm ich mir aber einfach, es pisst mich mega an das die Dinger nix können als ausgenuckelt werden und danach irgendwo im Müll oder Gebüsch zu Landen.
Da ich die Teile grundsätzlich (seh ich auch ein wenig als Jugendschutz) einsammel und entsorge sofern Defekt oder die Akkus nach Prüfung selbst verwende/entsorge und die Dinger mittlerweile immer bessere Hardware haben, dachte ich mir das man neben den "Alten" (Drucksensor + IC ) als kleine notladegeräte doch bestimmt auch aus den neueren was machen könnte.
Die sch.. Dinger haben aber teils Custom Marking, außerdem verschiedene Pinout im gleichen Gehäuse ect. Daher kam mir tatsächlich die Idee nicht früher. Ich hielt es bis zur 25000 mit Display für Custom IC.
Und die mit TFT (ich hab aktuell auch ganz stark ein ST7735/S/P ect. oder sowas in Verdacht, hab einfach 1,77 Zoll Displays verglichen.) war jetzt die "Zündende" Hardware.
Ich fände das schon geil die PY32 nach dem zerlegen der kippen auf ein breakout zu löten und neben den Akkus so auch noch "on mass" gratis "Arduinos" für mich zum basteln und lernen zu haben.
Oder stell dir vor das ganze Forum macht mit und die gesammelten IC gehen als "Anfängergeschenke" an die Jugend von Freunden und Bekannten oder an sonst jemanden der damit "Gefördert" werden kann.
Kostet uns dann doch nur ein breakout und pinheader! (<=1€)
Das sind die Gedanken die mich dabei antreiben, vor allem jetzt wo die Modelle mit richtigem Display einfach total verlockend sind.
Immerhin, ich versuchs öffentlich zu machen damit mehr Leute darauf aufmerksam werden. Vielleicht können wir so dafür sorgen daß die Dinger nicht mehr nur weggeworfen werden.
Das gute ist, meine Tochter sieht was Papa macht, findet sie welche beim Spielen (nein sie nuckelt nicht daran, auch nicht an sonstigem was sie findet!) BRINGT sie mir die:"Papa musst du reparieren!"
Sie ist oft bei mir wenn ich hier was mache. Das ich die Akkus zb. Für Lampen benutze ect. kennt sie. Daher das "reparieren".
Ich bezeichne das als "Networking". Bei dem Thema waren die Eule und ich uns nie einig, aber ihre Kenntnisse über viele andere Dinge habe ich trotzdem sehr geschätzt.
Höflich fragen kann man immer! Und wer fragt hat auch häufig Erfolg.
Aber schön das du auch noch was sinnvolles beizutragen hast außer über Erinnerungen an Tote Freunde Rundumeckern?
Oder ist das weil ich etwas "sozialverträglicher" bin und daher erfolgreich und kurzfristig Nachschub bekommen kann?
Fragen über Fragen warum du so "blöd" antworten musst.
Ich bezeichne das als "Networking". Bei dem Thema waren die Eule und ich
uns nie einig, aber ihre Kenntnisse über viele andere Dinge habe ich
trotzdem sehr geschätzt.
Habe ehrlich keinen Schimmer wovon du redest.
Höflich fragen kann man immer! Und wer fragt hat auch häufig Erfolg.
Siehe oben. Wen fragen? Nach was?
Aber schön das du auch noch was sinnvolles beizutragen hast außer über
Erinnerungen an Tote Freunde Rundumeckern?
Oder ist das weil ich etwas "sozialverträglicher" bin und daher
erfolgreich und kurzfristig Nachschub bekommen kann?
Immer noch keine Ahnung. Nachschub an was? Toten Freunden?
Meine letzte Antwort bezog sich allein auf deine Aussage zum Karma. Was man auch am Zitat sehen kann. Eine Funktion die dir unbekannt sein dürfte.
Reset übrigens doch auf GND halten, sonst bekommt man die CPU nicht in halt.
So, Feierabend für heute.
Ich such mir zwar eigentlich noch nen Wolf wie genau ich das ISP Programm von Puya dazu bekommen kann mit meinem CH340/Jlink zusammen zu Arbeiten, alternativ wie ich das alles mit Jlink hin bekomme. (Flashdump ect..) Aber immerhin!
Jetzt wo die Kommunikation passt ist es aktuell allein nur mein fehlendes wissen, das lässt sich nachholen.
Morgen noch das Display mit dem LA beobachten.
Den Arduino Core hab ich auch bereits, ich muss also eigentlich (da ich noch mal die gleiche CPU habe eigentlich auch nicht!) nur noch den (vollständigen) flashdump hinbekommen damit das alles hier so weit komplett wird.
So können Leute die daran interessiert sind was damit machen.
Im externen Flash sind 302 RGB565 Images mit jeweils 128x160 Pixel, die konvertierten Images sind als BMP Dateien im angehängten Archiv ("test000.bmp" bis "test301.bmp"). Einige der Dateien ergeben Animationen (u.a. das Würfelspiel und die Umschaltung der Heizleistung).
Im externen Flash sind 302 RGB565 Images mit jeweils 128x160 Pixel, die
konvertierten Images sind als BMP Dateien im angehängten Archiv
("test000.bmp" bis "test301.bmp"). Einige der Dateien ergeben
Animationen (u.a. das Würfelspiel und die Umschaltung der Heizleistung).
Vielen Dank für die Hilfe!
Ich bin dabei den zweiten "Käfer" zum Leben zu erwecken.
Fleißarbeit seit heute morgen, mit Unterbrechungen, mit der Ausrüstung geht das ganz schön auf die Augen!
OK, das spielen mit dem "originalen" PCB hat erst mal einen MCU gekillt.
Wurscht, der zweite liegt nun angepiekst in der Testvorrichtung (Pin 6/PA0 als wackelpin für ne LED, RX/TX, VCC, GND) und gibt mir über die serielle jedes Mal den Text von Setup und der Loop aus. (?)
Aber weshalb, den hatte ich vorher (Deadbug) umgedreht auf dem PCB, da hat er das nicht gemacht. Ohne pullup an Reset o.ä, ohne C Zwischen VCC und GND.
Ich zieh Reset gleich mal mit 1k auf VCC, schauen ob das was verändert. Muss nur die LED kurz entfernen.
Wenn ich das in Hex umrechne, kommt da 0x20000430 raus, was zufällig (oder absichtlich) eine Adresse im RAM des PY32 ist.
Weiterhin ist natürlich verwunderlich, das die Abbruchbedingung in
1
for(int i;i<10;i++){
ignoriert wird. Als oller C-Programmerer würde ich vermutlich mal auf das Arduino Zeugs verzichten und ein simples C Programm einnageln. Wenn es eine Startup.S oder so gibt, solltest du dir die mal angucken.
Ich hab schon wieder vergessen was er eigentlich tun will...
Schlaf weiter, wir wecken dich wenn's nötig wird.
Aber zusammengefasst nochmals für dich:
Ziel (Neben der Identifikation des Display und der Nutzbarmachung selbigen) war es die PY32F030 mit der Arduino IDE programmierbar zu machen.
Ist erledigt, Grundsätzlich geht's.
Oder anders gesagt eines von zwei Zielen erreicht.
Wenn ich das in Hex umrechne, kommt da 0x20000430 raus, was zufällig
(oder absichtlich) eine Adresse im RAM des PY32 ist.
Weiterhin ist natürlich verwunderlich, das die Abbruchbedingung in
for(int i;i<10;i++){
ignoriert wird. Als oller C-Programmerer würde ich vermutlich mal auf
das Arduino Zeugs verzichten und ein simples C Programm einnageln. Wenn
es eine Startup.S oder so gibt, solltest du dir die mal angucken.
Danke für den Hinweis.
Was sagt man dazu, mit folgendem Syntax funktioniert es einwandfrei, Setup nur ein mal ausgeführt (wie es soll) und der Zähler läuft sauber durch.
1
for(inti=0;i<10;i++){
2
...
3
}
"Normales" C kommt noch für mich.
Jetzt ist nur die Frage, wieso ignoriert der Compiler die zuweisung in der Schleife?
Für mich ist int i; eqivalent zu int i=0; Das muss aber irgendwo zwischen zählen und Ausgabe verändert Werden, nur wo und wieso?
Ich will ja wissen wie gut sich die Dinger eben für Arduino eignen.
Ich hab hier einige an der Hand die das nutzen, daher liegt der Fokus darauf.
Was ist "Normales" C und mit was arbeitest du aktuell?
Aktuell Arduino, da nimmt einem die IDE einfach viel ab.
Unter "Normalem" C verstehe ich eher sich die sachen per hand zusammen zu stricken anstelle eines fertigen core der so sachen wie compiler ect. für einen bedient.
Was ist "Normales" C und mit was arbeitest du aktuell?
Aktuell Arduino, da nimmt einem die IDE einfach viel ab.
Unter "Normalem" C verstehe ich eher sich die sachen per hand zusammen
zu stricken anstelle eines fertigen core der so sachen wie compiler ect.
für einen bedient.
Das ist eine Abstruse Ansicht. C ist C auch bei Arduino (oder C++ stellvertretend gemeint).
Weder hängt das davon ab, ob du ein Million fertiger Funktionen aufrufst oder ob die IDE dir die Einrichtung der Toolchain abnimmt. Es ist und bleibt C.
Ein Beispiel wo C nicht mehr C (oder C++) ist, wäre z.B. QT, wo man das native C++ mit Makros so lange vergewaltigt hat bis man de facto neue Sprachelemente reingepfuscht hat. Das könnte man durchaus als nicht mehr echtes C++ bezeichnen.
Dann versuch doch mal, da irgendwie ein paar Abblockkondensatoren in die Nähe zu bringen. Ein 8031 läuft auch ohne alles an der Motorradbatterie, aber diese neumodischen Controller mit internen Corespannungen verstehen da relativ wenig Spass.
Kann es nicht einfach an der abenteuerlichen "Deadbug" Kontaktierung mit
viel zu dicken Anschlussleitungen liegen?
Ne, das vermute ich weniger.
Das sind P50-01 nadeln die sauber auf den kontakten aufliegen.
Das gleiche verhalten zeigt er mit kurzen stücken draht einer relaisspule auf einem stück platine.
Was sagt man dazu, mit folgendem Syntax funktioniert es einwandfrei,
Setup nur ein mal ausgeführt (wie es soll) und der Zähler läuft sauber
durch.
for(int i=0;i<10;i++){
...
}
"Normales" C kommt noch für mich.
Jetzt ist nur die Frage, wieso ignoriert der Compiler die zuweisung in
der Schleife?
Für mich ist int i; eqivalent zu int i=0; Das muss aber irgendwo
zwischen zählen und Ausgabe verändert Werden, nur wo und wieso?
Wenn du nur
int i;
schreibst, wird die Variable i nicht initialisiert, der Wert ist also undefiniert, entsprechend dem Wert, der an dem verwendeten Register oder im entsprechenden Stackbereich steht.
Wenn du nur
int i;
schreibst, wird die Variable i nicht initialisiert, der Wert ist also
undefiniert, entsprechend dem Wert, der an dem verwendeten Register oder
im entsprechenden Stackbereich steht.
OK, danke für den Hinweis. Ich dachte das wäre das gleiche. Wenn ich den gleichen Code auf einem Mega oder ESP8255 benutze passiert das lustigerweise nicht.
(muss ich bei einem Projekt tatsächlich noch ändern bevor das mal zu Problemen führt!)
Interessant was man so alles finden kann, schaut aus wie die nicht initialisierte RTC (die letzten vier stellen in der Ausgabe der seriellen sehen halt wie ein Datum aus) die ich auf diesem weg ausgegeben habe.
Bleibt Frage Nummer zwei, weshalb verhält sich der erste PY32 nicht wie der zweite.
Der eine wurde nach dem erfolgreichen schreiben des "serial" Testprogramm und ausführen des selbigen einfach unter der Testvorrichtung "heraus geschoben" und der andere in Position gebracht, erfolgreich programmiertund getestet.
Wo der erste ausgibt:
ON0
Loop:
Loop:
Macht der zweite:
ON0
ON0
ON0
In der Zwischenzeit wurde nur der Chip getauscht, sonst gab's keine Änderungen.
Heute noch mal mit den Kids zum Umzug, dann geht's langsam weiter.
Kurzer "Status":
Patient "ON ON ON" ist bereits auf einem breakout, Display breakout ist fertig, ein einfacher 8 Kanal LA+SW läuft.
Ich muss schauen ob ich selbst noch eine Vape besorge oder warte bis der Kollege zurück ist und seine leer hat.
Pinout habe ich ja, ich könnte also mit den breakout Boards das notwendige (Flash + Display) verbinden und das originale flashdump verwenden.
Mal schauen, ich hab für den Fall der Fälle ein 12pin FPC Kabel das passt und als Erweiterung an der originalen Platine dienen kann.
Ich hab jetzt X mal hin und her, das liegt nicht am "Deadbug" Design oder den Drähten ect. Beim Aufbau.
Ich erinnere mich das ich beim ISPTool beim einen IC eine andere Einstellung (Full Erase) nutzen musste um ihn erneut mit der IDE flashen zu können.
Beim anderen reichte ein Flash Erase.
Ich lese mich bezüglich der Register noch ein, vermutlich kann es aber auch daran liegen.
Geduld, das Display zu identifizieren steht aktuell mit ganz oben auf der Liste!
Geschenkidee für meine Frau.
Ich hab hier so ne schöne Glaskuppel die so toll auf einen Messingsockel passt, das wäre mit dem kleinen Display ein echt schöner "Mini Digital Fotorahmen".
Bevor Du fragst:
Ich habe 30J geraucht und habe vor dem Schlaganfall aufgehört.
Das dicke Ende kommt aber vielleicht noch.
Der Körper vergisst 30J Schindluder nicht.
Du wirst doch wohl die innere Stärke finden mit einer Gewohnheit aufzuhören?
'Schatz, ich habe Dir was aus Müll gebaut' käme bei meiner nicht so gut an.
Geh lieber Flaschen sammeln.
In der Zeit in der Du jetzt ekelhafte, verkeimte, vollgespeichelte und versiffte E-Zigaretten auseinanderbaust, hättest Du da mehr Kohle über und könntes Dir die Bauteile kaufen die Du brauchst.
'Schatz, ich habe Dir was aus Müll gebaut' käme bei meiner nicht so gut
an.
1.) Die Dinger kommen aus dem Bekanntenkreis, "verkeimt" ist da nicht viel schlimmer als der normale Kontakt den man sonst so pflegt. Deren Kaffeetasse muss ich auch wegräumen wenn die gehen.
2.) Meine Frau findet das (sie ist selbst handwerklich begabt) viel besser als gekauft. Kaufen kann jeder!
3.) Sind die Teile nur theoretisch "Müll". Aktuell kostet mich so ein "PY32Duino" 96 Cent. (breakout Platine)
Für das Display 86 Cent.
Ich kann mir meine Zeit gut selbst einteilen und entscheiden was ich mache!
Es geht nicht um Geld, es geht darum das die Dinger für jeden GRATIS rumliegen und so eben nicht die Umwelt mit Nikotin (schau mal was das mit dem Grundwasser macht) Plastik und sonstigem was mit der Zeit verottet, wenn die Leute alles damit zu Müllen, belastet und eventuell noch einer sinnvollen Verwendung zugeführt werden können.
Meine Frau ist totaler Fan von "Die schöne und das Biest".
Daher ist die selbstgemachte "Rosenkuppel" mit einem "Schrottdisplay" als Fotorahmen in Handarbeit nicht nur schöner als gekauft, es ist wirklich persönlich!
Die Optik passt auch schön zum Film, sieht halt aus wie aus dieser Zeit.
Ich hätte Hundekacke in großen Mengen abzugeben.
GRATIS für jeden!
Einzeln verpackt in bunten Plastiktüten, die für sich alleine ja schon einen Wert darstellen.
Was man alles tolles damit machen kann:
Kompost
Gesichtsmasken
Handschmeichler
Immerhin kostet 1m² Kompost locker 30€
Was man da alles sparen kann!
Darüber hinaus biete ich Tetrapacks, Wurstpelle und Hundefutterdosen in rauen Mengen.
Rasenschnitt und Laub, Holzasche und nur einmal benutztes Klopapier.
Bedarf aber einigem an Verbesserungen bezüglich des "Arbeitskomfort".
Das positionieren der spitzen ist etwas fummelig.
Variante 2, kugelgelagerter drahtarm mit fixierschraube im Messing klemmblock ist bereits (Prototyp) in Arbeit. Ich muss nur mehr der Messing klemmblöcke besorgen oder eben Stangenmaterial zum selber herstellen. ;-)
Ich empfehle stark (wenn jemand nachbauen möchte) Variante 2 nachzubauen! Das aufdrücken der Pogopins geht damit viel besser.
Breakout für den LA ist vorbereitet, jetzt lüftet sich bald das
Geheimnis um das Display!
Im Firmware Dump vom weiter oben sieht man sehr schnell wie das Display initialisiert wird. Allerdings scheint es keiner der verbreiteten Display Controller zu sein, auch wenn man einige der verwendeten Kommandos bei anderen Display Controllern findet.
Hast du irgendeinen Hinweis was eventuell "nahe dran" sein könnte?
Das Problem ist dass die Kommandos zum Schreiben von Daten in den Display Speicher (das benutzt die Firmware) bei vielen Display Controller (auch von unterschiedlichen Herstellern) fast gleich sind, daher ist eine Zuordnung kaum möglich.
Und da ich ich kein so ein Teil zum Testen habe kann ich es auch nicht ausprobieren (Nein, hier in der Gegend liegt so was nicht rum und mir ist auch niemand bekannt der diese Teile benutzt).
Uff, viel zu lernen.
Dank Ghidra und dem svd bin ich jetzt jedenfalls schon mal zuversichtlich das ich in absehbarer Zeit Fortschritte mache.
Die Initialisierung des Displays scheint in mehrere Funktionen aufgeteilt. Außerdem verknüpft mit einem Timer?(Dazu eine Antwort wäre sehr nett,
Ja/Nein reicht, dient nur der Selbstkontrolle. Den Rest will ich selbst herausfinden.)
Jedenfalls zerlege ich aktuell die Funktion die das Interface über das AFL Register konfiguriert. Oder sagen wir so, ich Versuche es so gut es geht.
Hier ist ein "Proof of Concept" um das Display zu initialisieren.
Es handelt sich um ein Code-Fragment dass das Prinzip zeigt, man muss es allerdings erst in eine Display Library einbinden um es sinnvoll nutzen zu können.
Gezeigt wird welche Pins der PY32F030 zur Ansteuerung des Displays verwendet, wie der Display Controller initialisiert wird und noch ein kleiner Test der ein paar Farbbalken anzeigt (siehe das nicht besonders gute Bild im Anhang).
Einen bestimmten Display Controller konnte ich nicht identifizieren, ein paar der Kommandos findet man aber z.B. im Datenblatt des GC9A01A, vermutlich gibt es aber auch noch andere mit änlichen Kommandos.
Das Ganze ist "Bare Metal" und die seriellen Daten werden per Bit-Banging zum Display übertragen. Die entsprechenden Funktionen lassen sich aber leicht durch etwas anderes ersetzen (z.B. SPI per Hardware mit/ohne DMA).
Mein Testcode läuft direkt im RAM des PY32F030, daher war es zum Testen nicht nötig die Firmware im Flash zu überschreiben.
Was man unabhängig davon beachten sollte: Die Firmware verwendet IWDG als Hardware Watchdog, das wird im Konfigurationsbereich des Flash festgelegt. Daher startet der IWDG unmittelbar nach dem Reset. Das sollte man beachten bzw. die Konfiguration entsprechende ändern sonst bekommt man periodisch einen Reset wenn man den IWDG nicht regelmäßig triggert.
Die Firmware verwendet IWDG als Hardware Watchdog, das wird im
Konfigurationsbereich des Flash festgelegt. Daher startet der IWDG
unmittelbar nach dem Reset. Das sollte man beachten bzw. die
Konfiguration entsprechende ändern sonst bekommt man periodisch einen
Reset wenn man den IWDG nicht regelmäßig triggert.
Mal doof gefragt, wie machst du das?
Über USB-C scheitert es schon am "Halt" (kann nicht angehalten werden?!) geschweige denn am lesen oder schreiben von Registern.
DBGMCU_APB1_FZ zb. Ist für mich überhaupt nicht erreichbar. Also selbst wenn ich Versuche an Adresse 0x40015808 zu schreiben (so macht es Ozone so weit ich gelesen habe) bekomme ich das nicht hin.
Irgendwie mach ich gerade was grundlegend falsch, ich komm nur nicht drauf was es ist.
Wenn der Watchdog aktiv ist und man eigenen Code im RAM laufen lassen will baut man das Triggern des Watchdog in den eigenen Code so ein dass es regelmäßig passiert. Außerdem sperrt man die Interrupts damit einem die Firmware nicht in die Quere kommt (z.B. die Timer Interrupts der Firmware). Das Ganze ist zum schnellen Testen kleiner Code-Teile gedacht, nicht für umfangreiche Software (dafür ist der RAM des PY32F030 zu klein).
Den Code kann man vom J-Link Commander aus mit "loadbin" in den RAM laden und danach den PC auf den eigenen Code setzen, das geht schnell genug (man kann auch mehrere Kommandos per "Paste" hintereinander ausführen).
Den Code kann man vom J-Link Commander aus mit "loadbin" in den RAM
laden und danach den PC auf den eigenen Code setzen, das geht schnell
genug (man kann auch mehrere Kommandos per "Paste" hintereinander
ausführen).
Genau das Versuche ich.
Aktuell Versuche ich folgendes:
1
Halt
2
Loadfile fumot.bin, 0x20000000
3
Setpc 0x20000000
4
Go
Noch bevor ich bei "Go" bin, kommt der Reset.
Natürlich hab ich bisher noch nicht herausgefunden wie ich den watchdog abgeschaltet bekomme.
Je mehr ich lese um so undurchsichtiger wird es aktuell.
Der Watchdog ist im PY32F030 Reference Manual beschrieben ("22. Independent watchdog (IWDG)"). Abschalten kann man ihn nicht mehr wenn er mal gestartet wurde und wenn er als Hardware Watchdog konfiguriert ist (siehe "4.4. Flash option byte") startet er nach dem Reset. In diesem Fall muss man den Watchdog also regelmäßig triggern (0xAAAA ins IWDG_KR Register schreiben).
Im RAM stehen ab 0x20000000 die Interrupt Vektoren (die Firmware kopiert sie dort hin). Am einfachsten schreibt man eigenen Code in den RAM ab 0x20000C20, der Bereich von dort bis zum RAM Ende (0x20001FFF bei 8 kByte SRAM) wird von der Firmware nicht verwendet.
Und die vier Kommandos kann man auf einmal per "Paste" an den J-Link Commander schicken, dann werden sie ohne Unterbrechung hintereinander ausgeführt.
Ich habe oben bereits geschrieben dass man die Interrupts sperren muss und der Watchdog periodisch getriggert werden muss wenn man Code im RAM laufen lassen will, beides sehe ich nicht in "fumot_kilo.bin".
Außerdem liegt das Hauptprogramm an Offset 0x4FC in der Datei "fumot_kilo.bin", man muss also den PC auf diese Stelle setzen.
TH (Touch_High, Touchsensor) liegt auf Pin 8/PA2/USART1_TX/ISP
Den man auch anzapfen muss um mit der Arduino IDE zu Flashen! Ist eine leiterbahn, Pin9 PA3/USART1_RX/ISP ist eine VIA, nur ganz knapp am MCU angebunden, die rupft man auch leicht ab. (Grrr, bitte lass das nicht den schalter für POWER sein der auch die hintergrundbeleuchtung mit aktiviert, das geflicke....)
"M" (Unterdrucksensor) liegt auf Pin 25/PA15.
So weit bisher...
Code gibt es da grad keinen zu, hab die mit dem Multimeter so weit es ging durchgeklingelt.
SPI für das Display und externen Flash sind unterschiedliche GPIO Pins (das Display ist SPI1, der Flash SPI2), die SPI Transfers im Code gehen also wohl alle zum externen Flash.
Außerdem sollte PA9 auf High gesetzt sein (siehe wieter oben im Bezug auf Run/Sleep in der Firmware).
Außerdem sollte PA9 auf High gesetzt sein (siehe wieter oben im Bezug
auf Run/Sleep in der Firmware).
Lustige Sache, mit denen hatte ich vorher testweise gewackelt Um zu sehen welchen Einfluss sie genau haben.
Ich Versuche mal was passiert wenn ich die SPI init vom Flash auf die Pins vom LCD (das sollten zwei Initialisierte SPI Interfaces sein und SPI1 sollte theoretisch das Display sein) anwende.
In den Funktionen lcdCommand und lcdData würde ich erst den Pin LCD_PIN_CMD_DATA setzen und danach LCD_PIN_CS. Hat evtl. zwar keinen Einfluss, ist aber besser verständlich.
Kommentiere ich SPI.setSCLK(LCD_PIN_SCK); aus geht die
Hintergrundbeleuchtung.
PA11 hat als mögliche Funktion SPI1_MISO. Eventuell macht die Arduino Runtime hier irgendwas falsch, vielleicht mal "pinMode(LCD_PIN_BACKLIGHT, OUTPUT)" nach "SPI.setSCLK(LCD_PIN_SCK)" aufrufen und schauen ob das hilft.
Bild bleibt das gleiche, anscheinend um 90° nach rechts/links gedreht und nur vier streifen die je ca 1/4 der 128 pixel breite belegen. (hell,dunkel,hell,dunkel)
Ich hab eben auch ne Soft SPI variante ausprobiert.
Das exakt gleiche verhalten.
Möglichkeit A: Ich hab irgendwo die init oder sonst was verkackt!
Möglichkeit B: Der Arduino core ist nicht ganz fehlerfrei.
Lustig, hab es mal mit dem core für "Generic" STM32F03 ausprobiert.
Nach der anderung einiger kleinigkeiten kam zwar ein bin bei raus, funktioniert aber leider nicht.
Kleine änderungen ab jetzt: Watchdog ist aus, mit dem ISPtool beides auf "Software" (0,0) gesetzt. Einfach zum test ob es einen unterschied macht. (Ich vermute es macht keinen, wenn doch beiss ich mir in hintern!)
Jetzt "Kratzt" er beim init des LCD ab, springt mit lcdInit nicht in die loop, kommentiere ich lcdInit aus (egal welche varinte gewählt, also ob 1/0) läuft die loop klaglos.
Kurze Runde frische Luft schnappen und dann geht's weiter!
Backlight ist aus wenn das Schreiben klappt, immer, immerhin konnte ich eben (Taschenlampe zur Beleuchtung) schon mal genug testen um wenigstens einen Teil des Displays (knapp weniger als das obere Drittel) zu beschreiben.
(lcdFillScreen Funktion)
Kaum geht das Backlight ist nix mehr mit schreiben des Displays.
Und wie man sieht, erweiterte Fehlersuche ist auch gestartet.
Auch die hochkapazitiven (25000 Puffs = Züge) Einweg-Dinger haben USB-C,
weil dann können die Akkus kleiner (=billiger) sein. Und bei Fumot
heißen die Typ-C-Anschluss und Typ-C-Schnellladung, vermutlich weil sie
sich dadurch Lizenz-Gebühren sparen.
Folgende 2-Milliliter-Regelung habe ich nicht verstanden, dadurch erhöht
sich doch der Einweg-Müll:
Zitat https://jr-vape.com/
Warum sind Tornado-Vapes in Deutschland verboten?
Der Tornado Vape ist in Deutschland nicht generell verboten, allerdings
gibt es strenge Vorschriften, die das Gerät in seiner aktuellen Form auf
dem deutschen Markt einschränken. Ein Grund dafür sind die in
Deutschland geltenden Regelungen zur E-Zigaretten-Nutzung. Die maximale
Liquid-Menge in einem Einweg-Vape darf hier 2 ml nicht überschreiten.
Der Tornado Vape, der bis zu 12.000 Züge bietet, enthält deutlich mehr
als diese Menge und verstößt damit gegen die deutsche
E-Zigaretten-Richtlinie.
Zudem gibt es Vorschriften bezüglich der Nikotinmengen, die in
Vaping-Produkten erlaubt sind. Diese strengen Gesetze sollen den
Verbraucherschutz stärken, insbesondere in Bezug auf minderjährige
Nutzer. Deshalb sind viele Einweggeräte, die in anderen Ländern
problemlos verkauft werden, in Deutschland nicht zugelassen.
Zitatende
Man kann sie dennoch kaufen. Bestellen oder "unter der Hand".
Naja, ich zerlege hauptsächlich, was daran liegt das ich diese am häufigsten finde, die illegalen Modelle.
Und ja, die Menge an Müll ist enorm.
In den 12/15-000 Züge Modellen (Rund) sind 850mAh Zellen verbaut. Flache haben 680mAh. In den 25.000 ~680mAh.
Die legalen haben meist zwischen 350-400mAh.
Aktuell habe ich herausgefunden das sich die Palette an "Nutzbaren" IC in den Teilen erweitert hat.
Neben den 25.000 Zügen mit LCD und F030 befinden sich scheinbar auf einigen der Runden und Flachen 12/15-000 Züge mit Charlyplexing LED Anzeige PY32F002AW15 (Das A ist wichtig, dafür gibt es einen Arduino Core.)
Leider ist die Rate Verwertbar/Schrott sehr niedrig, auf insgesamt drei Platinen mit F002AW15 und drei mit Risc V PY32C642F15 kommt der kleine Eimer "Schrott". Also 6 Nutzbare (!) MCU und beim Rest hauptsächlich die Akkus.
Auf den platinen für den schrott sind zwar Kleinteile (Laderegler, USB-C Buchsen, manchmal P-Channel Fet's) aber am liebsten wäre mir ich könnt noch mehr der MCU identifizieren und nutzbar machen.
Das unter Ausschluss der aktuell in Wellen und selten auftauchenden 25.000 Züge Modelle mit LCD.
Die können direkt inklusive Platine für Kleine Projekte verwendet werden. Die einzigen bei denen diese Lösung denkbar ist. Die anderen höchstens wenn man sich ein neues Cover für die LED Displays druckt, ansonsten ist es sinnvoller die IC auf eine eigene Platine zu bringen.
Das man sowas als nützlichen Vorteil erachten könnte um die Teile für alle, inklusive Schulkindern und wenn's sein soll sogar der Oma von nebenan programmierbar zu machen!
Aber sei's mal wieder drum, nochmals als Erklärung: Ziel ist es möglichst viel von den MCU Wieder zu Verwenden und das so einfach das "Jedermann" aus dem Kram was basteln kann.
Das ist wichtig um die Einstiegshürden klein zu halten und das Interesse daran besser wecken zu können.
Was ist der Unterschied zwischen einem Fachforum und einem persönlichen
Tagebuch?
Wenn man sich ansieht was hier inzwischen für Threads laufen gelassen werden: Knackers Lauf- und Gartentagebuch, Kochrezepte, Esoterik, Musik usw. usw.
Sachliche Beiträge werden hingegen rigoros gelöscht. Möchte man hier nicht mehr haben.
Nur noch seniles Geronten-Gelaber ist erwünscht.
Dieter S. (ds1) Und andere helfer haben mit ihrer freundlichen Hilfe bewiesen das dieses Forum hier durchaus dazu im Stande ist gemeinsam was zu schaffen.
Das Display ist verwendbar, jeder der möchte kann nun wenn er so ein Ding aufsammelt das Display abstecken, ein 12 Pin FPCC breakout kaufen und dann an seinen Arduino klemmen oder auch die ganze E-Zigarette nutzen.
Ich finde das ist schon ein ERFOLG für das Forum.
Noch dazu hab ich bisher schon viel von den anderen lernen können.
Und natürlich werde ich auch bei der neuen E-Zigarette schauen ob ich mehr als ein Exemplar organisieren kann. ;-)
wie genau kontaktierst du die Tornado 2500 ? Du schreibst man kann auch den internen MC benutzen. Kann man den Tornado über die Pins die auf der USB C Buchse programmieren und die Hardware (LCD, Touchscreen) mit dieser verwenden ? Gibt es eine Integration in der Arduino IDE ? Sind DIO herausgeführt auf dem Board so das man eigene Sensoren etc daran anschliessen kann ?
Sorry für die vielen Fragen. Aber der Thread ist so lang und in viele kleine Infos zerlegt...
Guten morgen David, entschuldige die späte Antwort.
Es gibt zwei Möglichkeiten:
1.) SWD über USB-C.
2.) ISP über USART.
Der UART liegt auf Flash Select (Pin 9 am μC USART RX) und Touch Signal (Pin 8 am μC USART TX)
SWD hab ich über einen alten OTG Adapter gelöst, die musst du dir je nach Adapter durchmessen, meiner hat mehrere lagen und ich musste zwei R entfernen um über SWD zu verbinden.
Die Pins RX/TX unter dem flex Kabel sind leider die zweite Serielle Schnittstelle, die eignet sich nicht zum Flashen wie es scheint.
Leider ist der Core fehlerhaft, ein Pin kann nicht vernünftig initialisiert werden. (PF3, Physikalisch Pin 5 am μC)
Der ist leider für die Stromversorgung des Display Controller verantwortlich und kann daher nur mit einem entsprechenden Stück C Code verwendet werden.
Sind DIO herausgeführt auf dem Board so das man eigene Sensoren etc
daran anschliessen kann ?
Die zweite Serielle Schnittstelle lässt sich problemlos benutzen, auch als GPIO und ist herausgeführt, ein paar Pins müssten zumindest theoretisch frei sein. Aber ob die noch irgendwo herausgeführt sind hab ich bisher nicht nachgesehen.
Ich packe dir gleich mal ein Beispiel zusammen. Das beinhaltet aktuell aber NUR die ADC und Displayfunktionen. Die Textfunktion ist auch nicht wirklich gut gelungen.
Hi,
Das sieht ja richtig gut aus.
Erstmal ein großes Lob an dich.
Die Hardware ist doch super um mobile Tester damit zu bauen. Mir schwebt da schon ein anwendungsfall vor. Hast du eventuell rausbekommen ob der Controller einen sleep Modus hat ? Um die Batterie zu schonen. Oder ist das bei der großen Batterie nicht erforderlich ? Wie wird die vape normalerweise eingeschaltet ? Auf den touch Button drücken ? Oder dran ziehen ? Wenn über den touch dann wird damit wahrscheinlich der richtige PIN bedient um das Teil aus dem depp sleep zu bekommen.
Und die letzte Frage. Wo kriegt man so ein Teil (leer) am besten organisiert ?
Er ist der mit der größeren refahrung und hat die sachen zum laufen gebracht.
Ich bin aktuell nur der, welcher durch die tipps lernt und die erkentnisse hier postet.
Gute frage, hab ich mich absolut noch nie mit auseinandergesetzt.
Das initiale aktivieren hab ich aktuell nicht gefunden, vermute aber das die original firmware auf den touch oder zugsensor reagieren wird. (n X tippen/ziehen) Bis dahin bleibt ja nur sleep, hardwareschalter gibt es keinen!
Wenn über den touch dann wird damit wahrscheinlich der richtige
PIN bedient um das Teil aus dem depp sleep zu bekommen.
Eleganter als meine lösung ist ja ein timer/interrupt für die abfrage, wenn ich das richtig in erinnerung hab gibts nen timer der auch im sleep läuft und der rest vermutlich nur in software.
Hab das Ding auch mal auseinandergebaut. War bei mir ein PY32F030 + P25Q128 Flash, Display über SPI, GC9A01 passt.
Spannend ist, wie viel Technik in so nem Wegwerfteil steckt – zum Basteln gar nicht schlecht.
Wer vergleichen will, was in den verschiedenen Modellen drin ist (LCD oder nicht, Akku usw.), findet z.B. hier ’ne ganz brauchbare Übersicht: https://randmsmoke.net
Ist zwar eigentlich ein Shop, aber als Modell-Referenz nicht verkehrt.
Früher habe ich Produkte dieser Firma verkauft, aber jetzt habe ich
meine Karriere geändert.
Oh, interessant.
Sag mal, du weißt nicht zufällig wie man anhand der Innereien (Aufdruck auf den Platinen, verwendeten IC ect..) Fälschungen (bei den 12000/15000) erkennt?
Es ist erstaunlich wie viele verschiedene Platinen (Layout, Bauteile, Aufdruck) ich von denen schon gefunden habe. Herauszufinden welche davon nun "Fake" und welche original sind, wäre nur nach einer Analyse eines "frischen" echten Karton möglich.
Es gibt tatsächlich viele Imitationen auf dem Markt. Um die Echtheit zu gewährleisten, muss man sie offiziell bei Fumot kaufen. Ich weiß nicht, ob sie in Deutschland einen offiziellen Shop haben. Es gibt viele Imitationen auf dem Markt, das gilt auch für Elfbar.
Hallo zusammen,
ich schließe mich Kilo S. absolut an ein klasse Projekt und toller Teamgeist hier im Forum!
Genau das, was Kilo S. angesprochen hat, versuche ich gerade umzusetzen. Ich möchte das nackte 12-Pin-Display über ein FPC-Breakout-Board autark an einem ESP8266 betreiben, ohne die originale Tornado-Platine zu nutzen.
Da ich mich in der Elektronik-Welt noch nicht so gut auskenne, bin ich hier voll auf eure Hilfe angewiesen.
Hat jemand von euch (Dieter, Kilo S. oder die anderen Experten hier) zufällig das vollständige 12-Pin-Pinout dieses Displays parat?
Ich bräuchte die exakte Belegung für alle Leitungen (VCC, GND, SDA, SCL, CS, DCN, RESET und Backlight), damit ich weiß, wie ich mein Breakout-Board mit dem ESP8266 verkabeln und das Display im Code ansteuern muss.
Vielen Dank für eure Geduld und die Hilfe für einen Einsteiger!