Hallo, kannt jemand eine Project Wizard, wie z.B. in CodeVision oder anderen Tool? (man kann die basis Konfiguration für den AVR im Project Wizard machen, dieser generiert dann das main C file mit der richtigen Konfiguration der jeweiligen Register) Florian
Hi, ich bin mit diesem Projekt vor einiger Zeit angefangen. Leider komme ich erst ab naechste Woche dazu damit weiter zumachen. Ich muss noch ein bischen Bugfixen und noch einigen Code implentieren. Es ist mein erstes VB Projekt aus diesem Grund geht es auch nicht so schnell wie ich gedacht habe. Als Betarelease soll verraussichtlich in 14 Tagen sein. Anbei ein kleines Bild. Mfg Dirk
hallo, sehr schoen, vielleicht kannst uns schon mal vorab einen kleinen Einblick ueber die Funktionen geben. Wird das Projekt open source? Dann koennten wir dich vielleicht etwas unterstuetzen. Florian
wie wärs das teil in irgend einer schönen scriptsprache zu verfassen die auf den meisten os läuft... z.b könnte man doch gleich tcl nehmen.. siehe mfile das eh schon in winavr includiert ist... möglich wären auch perl,python,ruby oder vielleicht ganz was anderes??? dann müsste man nur module auswählen...durchconfigen und fertig... man nimmt dann noch z.b die lcd-lib die hier im forum herumschwirrt, usart lib,... und dann könnte man schon die ganzen init-funktionen konfigurieren... 73 de oe6jwf / hans
Die Idee, sowas in Tcl/Tk zu machen, hatte Eric übrigens schon mal. Aber er hat natürlich auch nur drei Hände und sein Tag nur 28 Stunden. :-) Aber die Motivation dafür war genau das: Tcl/Tk sind durch tkinfo sowieso schon dabei. (Das hat mich dann auch auf die Mfile-Idee gebracht.)
gut dann wird sowas geschrieben... man bringe ideen und libs ein ;) ich hab noch eine woche ferien... und so wies ausschaut ist mein nächstes semester durchaus so gestaltbar das sich neben geld schäffeln und studieren auch sowas ausgehn sollte ;D also darf ich mal tcl lernen... sollte aber nicht so schwer sein was ich bis jetzt drüber gelesen hab... 73 de oe6jwf / hans
also nachdem ich mal etwas reingeschnuppert hab in tcl scheint mir das ganze doch recht einfach lösbar zu sein... im grunde bastl ich einfach nur ein framework... das script schaut in einem dir nach welche files drinnen sind.. das sind weitere tcl scripts für die jeweilige lib...also alles schön zerstückeln um es leichter wartbar zu machen... dann führt es für jedes modul ein init durch..damit registrieren sich die module im framework, legen menüpunkte an und sagen welche parameter zu konfigurieren sind... damit kann das framework schon im vorfeld abprüfen ob nicht der selbe name 2 mal verwendet wurde ;) wenn dem so ist müssen die auch noch syncronisiert werden... also variablen werden vom framework gehalten... das muss ich mir noch anschaun wie man das am sinnvollsten gestaltet..aber nachdem es ja listen gibt dürfte das auf jedenfall machbar sein ;) wie da zu konfigurieren ist überlasse ich dann den modulen.. die können dann beliebige guis haben.... zu guter letzt werden alle vars einfach in eine file geschrieben.. ich würd "config.h" oder sowas ähnliches vorschlagen... die muss einfach in allen libs als include drinnen sein und fertig.. dann klickst man sich gemütlich alle libs zusammen die man haben will, kopiert sich die libs ins projekt rein.. macht seine makefile und kopiert noch die config dazu... fertig... möglicherweise könnte man makefile-anpassungen auch noch umgehen indem man z.b in der makefile eine file linken lässt die dem präprozessor sagt es sollten noch andere files gelinkt werden..das sollte doch auch nicht so das problem sein... und das zusammenkopieren kann ich mir auch noch gut vorstelln das man das automatisch machen könnte... 73 de oe6jwf
hallo, ich bin richtig überrascht von den vielen antworten, ist echt super! DANKE also tcl kenne ich auch nicht, aber ich hab da mehr an c/c++ gedacht, ich weiss nicht wie das so mit string operationen in tcl aussieht! man müsste aber erst ein gutes konzept entwerfen, bevor man los legt. ich bin mir selbst schon garnicht sicher was es so alles können soll. "macht man es sehr flexibel z.B. legt für jeden prozessor ein file an in dem die hardware beschreiben ist, und die dafür nötige konfiguration, so kann man neue prozessoren sehr schnell und einfach hinzufügen. Wenn alles im script oder prog steht dann kann das schon etwas aufwendiger und weniger komfortabel werden." desweiteren müssen die funtionen vorher mal grob festgelegt werden, denn es ist fast alles denkbar. mal zu den grundlagen, es soll auf linux/windows laufen oder? die script- oder prog.sprache? wer würde mit machen? also ich hätte auch noch gut eine woche ferien bis das neue semester wieder startet. 73 de dc1mat / florian
meine idee ist schon fast umgesetzt... ich bastl grad am variable-managment... dann könnt ich mal z.b für die lcd-lib ein modul schriftln und dann hier posten... die frage ist wie lang ich heut noch wach bin g btw wieviele oms tummeln sich denn noch hier ?? ;) 73 de oe6jwf / hans
Hatte auch mal mit sowas angefangen: http://www.apetech.de/avrCodeWizzard.php Das ganze ist in Java geschrieben und sollte durch die Verwendung von XML-Files auch modular gestaltet werden, hab aber irgendwann die Lust verloren und mich anderen Dingen zugewandt :)
Also ich hab ein ganz grobes gerüst mal soweit das man auch was eintippsn kann.. tcl ist eigentlich ja genial für sowas und eigentlich sau simpl... man glaubt ja garnicht wie gut sowas altes sein kann... ;) also ich werd glaub ich die registrier-routine noch aufblasen, dass da auch gespeichert ist welches modul was braucht... damit müsste ich das eigentlich so zerpflücken können, dass ich die einstellungen gruppieren kann... derzeit wird nur 1ne header file erstellt und alles mit defines..das sollte eigentlich schon ganz brauchbar sein... eingaben-checks dürfen alle in den modulen selber machen... sonnst wird das ganze nur viel tippserei für alle... so ich bin mal für vorschläge offen :) btw das mit den zeilenumbruch der zu viel ist nervt mich auch..aber es ist halb 5 und ich geh jetzt pennen g btw bitte nicht zu kritisch sein was den code anbelangt.. ich spiel mit der sprache erst seit 3h und es ist immerhin schon wieder nacht für mich...(derzeit schlaf ich von ca 4 bis 12 ;) 73 de oe6jwf / hans
Nichg schlecht für den Anfang. Paar kleine Anmerkungen: . #define bekommt kein = danach. . du solltest wohl auch das existierende config.h parsen . ein paar keybindings fehlen noch, bspw. sollte ein TAB zwischen den Feldern springen, ein Enter sollte wie OK wirken . jeder Modul sollte eine Hilfefunktion registrieren . jeder Modul sollte einen einleitenden Kommentar haben . im Rahmen dieses Kommentars wäre ich dir dankbar, wenn du in der ersten Zeile ein -*- tcl -*- reinschreiben würdest ;-) (damit schaltet der Emacs in den Tcl-Modus; bei auf .tcl endenden Dateien oder solchen mit #! ... wish macht er das von allein)
Nur zur Info: der OP hat (in Verletzung gängiger Netiquette-Regeln) die Frage gleichlautend bei avfreaks.net gestellt. Auch dort scheint es Leute zu geben, die sich bereits erste Gedanken über derartige Codegeneratoren gemacht haben. Hans und eventuell auch Dirk, vielleicht wollt ihr ja mal eine private Mailkonversation mit diesen Leuten anwerfen, damit nicht alles dreimal geschrieben wird. Drei kleine Prototypen sind sicher OK, als proof of concept, aber irgendwann sollte man die Kräfte dann wohl besser bündeln.
hallo, ja sorry, aber andere leute andere ideen und da es hier in deutsch ist, kann nicht jeder mitreden. ich teste gleich mal das tcl script, hört sich echt gut an! dc1mat / florian
Klar ist das so, dass andere Leute andere Ideen haben, aber hast du dir jemals Gedanken darüber gemacht, dass so ein Doppelposting unnütz Ressourcen bei denjenigen verschwendet, die dann über deine Frage nachdenken?
hallo, wieso unnütz ressource verschwenden, es muss ja keiner darüber nachdenken, ausserdem wird keiner zweimal unabhängig voneinander über das gleiche problem nachdenken und so doppelt so viel zeit benötigen! ausserdem interressiert es vielleicht auch nicht deutsch sprechende basstler, aber lassen wir die diskusion und verschwenden keine weiteren ressourcen, es war ein fehler schluss aus. ich entschuldige mich nochmals ausdrücklich für das durcheinander, aber ich würde mich freuen wenn wir doch noch alle zusammen ein tolles projekt auf die beine stellen könnten das vielleicht sogar in eine zukünftige version von WinAVR integriert wird. 73 de dc1mat florian
Du beschäftigst, ob du das nun so gewollt hast oder nicht, zwei voneinander unabhängige Scharen von Leuten mit dem gleichen Problem, wobei sie zumindest teilweise zu gleichen Erkenntnissen kommen, aber doppelt so viel Gehirnschmalz dafür aufwenden müssen. Das ist schlicht und einfach unhöflich. Man nimmt ein Forum (oder eine Newsgruppe), stellt die Frage dort, und nur wenn man nach angemessener Zeit keine Antworten bekommen hat stellt man sie woanders nochmal. (Sinnvollerweise kann man dabei im ersten Thread noch einen Hinweis auf den zweiten fallen lassen, falls ein Nachzügler kommt.) Wenn du sowas öfter machst, riskierst du, dass alle die, die dir gewillt sind zu antworten, dich irgendwann ignorieren.
soo gähn.. ja das mit dem define ist eine dumme angelegenheit ;) das mit der config parsen hab ich mir auch schon gedacht und wird wohl oder übel irgendwie zu machen sein (gott sei dank hab ich keine ahnung von regexpr ;)... dann noch die keybindings... (wie gut das ich diese sprache seit gestern lesen kann ;) summa summarum... die änderungen hab ich heute drinnen g das mit der hilfe funktion weis ich noch nicht wie ich das machen werde.... ich hab mir schon gedacht man könnte da tooltips registrieren und unter den edit boxen anzeigen lassen oder so was.. da muss ich noch drüber nachgrübln und die module sollten auch irgendwie auswählbar sein.. damit man auch nur das in der config hat was man auch braucht... 73 de oe6jwf / hans
hans eine bitte beschreib mal kurz wie du das tcl script startest, ich kenne tcl überhaupt nicht, und kann es unter linux mit tclsh leider nicht starten fehler: invalid command name "frame" florian
tjo das liegt warscheinlich daran das es auch die tk verwendet... ist gleich zu starten wie mfile... also unter win mit der im winavr packet enthaltenen wish.exe 73
Mhmm also unter Windows gehts ganz einfach in dem man auf das tcl-File rechtsklickt -> Öffnen mit und dann [WinAVR-Verzeichnis]\bin\Wish84.exe auswählt. Aber unter Linux... keine Ahnung :) Ich hab mich vor ewigen Zeiten mal mit tcl befasst. Mein Eindruck war damals das man damit zwar sehr schnell eine Grafische Oberfläche erstellen kann, aber wenns wirklich ans Eingemachte geht (vorhandene Header-Files parsen...) eine "richtige" Programmiersprache doch um einiges einfacher zu handhaben ist. Java ist übrigens auch Platform unabhängig :P
Oft genug sollte die #!-Mimik es sogar tun. Tooltips gehen, wenn du tix benutzen willst. Das ist eine alternative Tk-Implementierung, die den Standardsatz von Widgets um einiges erweitert. Läuft mit einer eigenen Shell, tixwish genannt. Für Mfile wollte ich aber ausdrücklich nicht zwingend tix vorschreiben (schon, weil Eric das nicht unbedingt noch zur Distribution hinzufügen wollte). Für einen eigenständigen Codegenerator wäre es aber sicher eine Option. Ansonsten kannst du allemal kontextabhängig die Taste F1 binden. Da die Bindung an Widgets hängt, wird das automatisch kontextsensitiv (d.h. du kannst eine allgemeine Hilfe für die ganze Applikation machen und separate Hilfemethoden für die Popups).
hmm das muss ich mir noch anschaun... du ape ich hab gesehen, dass tcl mit regexpr umgehn kann... damit ist das ding schon fast so eine eierlegende wollmilchsau was parsen anbelangt wir perl ;) und das ist für solche zwecke geschrieben worden g aber man will ja nicht mit der allzweckkettensäge auf eine arme config file losgehn ;D und das widgetset muss ich mir noch genauer anschaun.. damit kann man sicher viele lustige dinge machen... java ist meiner meinung nach nicht gut geeigent...weil unter c hätt ich mir gemütlich ein CPtrArray angelegt und da gemütlich meine config drinnen gehalten (so hab ich das übrigends auch mit einem ini-parser unter c++ gemacht der etwas mehr kann wie die dumme win-api implementierung) aber nachdem java ja keine lustigen ptr hat... kommt eben eine schöne script sprache ins spiel.. und tcl kann ganz lustig mit arrays umgehn.. das teil wird mir immer sympathischer G 73
ja unter win läuft es! eine frage noch, wie implementierst du die verschiedenen cpu typen, und muss man um einen neuen cpu typ hinzufügen zu können das script ändern? florian
wie cpu typen ? meinst du z.b für die uart config usw??? das wär ganz einfach.. man müsste ja nur einen define wie XTAL haben der dann halt MCU heisst (wenns das nicht eh schon gibt ;) und anhand von dem wissen die module dann schon wie sie zu arbeiten haben.. und eine lib die eine cpu icht unterstütze.. naja die muss eben einen fehler ausspucken... das ist nur etwas implementiererei.. 73
das mit den cpu typen hab ich so gemeint, da ja (fast) jede cpu eine anderem hardware besitzt, und es bei der einen UART gibt die andere hat USART die eine 2 TIMER die ander 3 usw. und auch die konfiguration nicht immer absolut identisch ist, wusste ich nicht wie dies berücksichtigt wird, oder werden soll! ich hab mir gedacht, das das wie bei anderne programme mit einer config datei z.B. XML nicht schlecht währe wenn man z.B. für jeder cpu (at90s1200,...,atmega8,...) eine solche beschreibung (textdatei, XML) macht und darin definiert was und wie zu konfigurieren ist, kann man sehr schnell und einfach neue cpu typen hinzufügen. das heisst, das das prog selber keine cpu spezifischen dinge kennt, sondern nur die oberfläche generiert und anhand der anweisungen die in der "beschreibung" stehen anschliessend die main.c generiert. damit ist zwar das eigentliche "prog" sehr allgemein und etwas aufwendiger zu programmieren, aber anschliessend wirklich universell, und es kann sich jeder einen neuen cpu typ generieren und den anderen zur verfügung stellen, ohne sich in das "prog" selber einarbeiten zu müssen, was auch eine spätere arbeitsteilung sehr gut ermöglicht. desweitern sind bei bugs in der cpu configuration nur die "beschreibungen" auszutauschen und das "prog" selbst kann fast unabhängig davon weiter entwickelt oder verbessert werden. 73 de dc1mat florian
so in die richtung läufts bei mir auch ab... nur das ich nicht daten aus xml holt sondern dass alles in einem script drinnen stehn... im grunde wenn du dir mein beispiel von der lcd lib anschaust kannst du da ja ganz einfach das teil abkupfern um einen uart zu configen... aber was machst du z.b wenn du ein lcd zeichen konfigurieren willst... bei mir kein problem.. du klickst dir dein fenster mit http://spectcl.sourceforge.net/ zusammen und schreibst noch ein bisserl code dazu.. fertig.. damit kannst du dann gemütlich zeichen generieren... das wäre mit der xml methode nicht so einfach zu bewerkstelligen.. dafür ist meine methodik für kleine sachen aufwendiger.. unter umständen baut man noch einen modul-builder für reine variabeln wie bei der lcd lib.. wäre aber kein aufwand... es müssten nur die funktionsnamen dementsprechend geändert werden (PFleuryLCD_init,...) und die variablen rein (über PFleuryLCD_AddParam LCD_LINE_LENGTH).. das wars.. man könnte sogar hergen.. das modul kopieren.. drüber esetzen und fertig.. so einfach sind die gestrickt... nur wenn du zuweisungen hast, die der präprozessor von c nicht mehr schaft(eben z.b aus irgend einem string ein zeichen fürs lcd zu bastln) dann ist meine methode flexibler... auch das bitmap zeug wär denkbar über solche module zu machen..http://wiki.tcl.tk/6298 die möglichkeiten sind so meiner meinung nach einfach viel besser... und wer sagt denn das man nicht ein modul machen könnte, das deine xml files parst, und aus deinen daten ein modul bastelt g wobei dann wäre xml fast schon überladen... für verschiede cpus gibts verschiedene module.. z.b ein ATMega USART modul und ein AT90S UART modul... ich glaube das wäre doch das beste... weil wenn schon dann richtig g aber ich lass mich gerne umstimme wenn einer eine bessere idee haben sollte... 73
soo jetzt tut das teil schon fast das was ich will g jetzt kann man einzeln module auswählen so wie man es halt gerade braucht.. und das save zerpflückt sich alles so, dass man für alle module getrennt die variablen raus bekommt.. und die mehrfachverwendeten werden natürlich auch noch geblockt ;) soweit steht das framework... jetzt wär mal gut zu wissen welche libs alle unterstützt werden sollen.. damit ich ein paar beispiel codes generieren kann... 73 de oe6jwf
Ok nachdem ich jetzt insgesamt einen ganzen arbeitstag an dem util verschwendet habe würde ich jetzt gerne mal wissen ob das jetzt sowas ist was sich die leute vorstellen ;) Angehängt ist nun eine version in der eigentlich alles verwirklicht ist was hier an verbesserungen an pre1 herumgeschwirrt ist... mit dabei ist jetzt ein schöner config teil für HD44780 LCDs... also mit kofigurator für die lcd lib + ein custom-char generator ;) tooltips sind natürlich auch mit von der partie G alles läuft auf jeden fall über den wish84 interpreten... weiter ideen sind jetzt gefragt ;) 73 de oe6jwf
Guckst du eigentlich auch mal in deine Mail? ;-) Das Teil werde ich mir dann mal ansehen...
servus, versuch mal in der pre2 im char designer -> new char und dann cancel! florian
huch da hat sich doch tatsächlich ein deppfehler eingeschlichen... in der file zeile 350 muss das stehn.. dann gehts: -command HD44780_Character_Designer_NerwCharNameCancel \ und damits jetzt generell bekannt wird.. oe6jwf ist per mail erreichbar unter: technik at honey dot at oe6jwf at sbox dot tugraz dot at 73 de oe6jwf / hans
so nachdem nun schon im hintergrund ein paar tage diskutiert wird hier mal ein kleiner überblick... der WizAVRd (so soll das projekt heißen) wird in python geschrieben.. als Widgetset wird wxPython verwendet... das teil soll ein komplettes projekt erstellen können (incl makefile) man klickst sich durch die ganzen module durch und am schluss bekommt man ein kompilierbares projekt... mich würde jetzt noch interessieren ob hier einer einige extrawünsche hat... man weis ja nie was man vergessen haben könnte was das teil können soll ;)
Ergänzung: eine öffentliche Mailingliste zum Mitdiskutieren wird's dann hoffentlich auch bald geben.
Was für Module sind denn bisher enthalten? Im allg. benutze ich - Interrupts (uart,timer,ext.) - serielle Schnittstelle - I2C - LCD - PWM - AD-Wandlung ... Generell gefällt mir die Idee eines CodeGenerators sehr gut. Bisher greife ich häufig auf ältere Projekte zurück und "strippe" sie, um dann die neuen Sachen mit reinzunehmen. Den Namen find ich übrigens auch klasse ;-) mfg Werner
hmm im prinzip ist das eh auch das was mir so vorschwebt.. mal schaun wie sich das in der diskussion noch entwickelt... aber im prinzip sind unsere ideen schon fast irgendwie miteinander verbindbar...hoffe ich zumindest.. denn wenn dem so ist wird das die eierlegende-woll-milch-sau g mal schaun wie das sich mit der uni unter einen hut bringen lässt... aber ab 8. sollte ich wieder genügend zeit haben (physik prüfung ;) 73
Finde ich sehr spannend, ein Open-Source-Projekt von Anfang an direkt mitzuerleben :-)) Haltet uns bitte auf dem Laufenden, was alles weiter passiert! Viele Grüße, Stefan
Hallo, wollte mal hören, ob es hier schon was Neues gibt, oder ob das Projekt schon wieder gestorben ist? Grüß, Tommy
@Tommy, der Wunsch nach einem Wizard kommt eigentlich nur bei Anfängern auf, die erstmal von den vielen Möglichkeiten des µCs erschlagen sind. Aber ganz schnell merken sie, daß man alle die Features, die man gerade nicht braucht, einfach links liegen lassen kann. Und auch ganz schnell hat man sich einen Fundus an Objekten angelegt, die dann bei Benötigung der entsprechenden Funktion einfach mit zu einem neuen Projekt dazu gelinkt werden. Auch ist ein Wizard irgendwann unpraktisch, da er nicht alle Anwendungen vorhersehen kann. Z.B. habe ich allein für den UART-Empfang nen Haufen verschiedene Routinen: - empfang ungepuffert im Polling-Mode - empfang mit Ringpuffer im Polling-Mode - empfang mit Ringpuffer im Interrupt - empfang mit Zeilenpuffer und 0x0A/0x0D-Erkennung im Interrupt - empfang mit protokollspezifischem Paketpuffer im Interrupt ... Deshalb wundert es mich in keinster Weise, daß beliebig oft der Wunsch nach einem Wizard aufflammt und ebenso schnell wieder in der Versenkung verschwindet. Peter
hallo, nein das projekt lebt noch schaumal auf http://savana.gnu.org/ unter WizAVRd nun ja das mit den anfängern ist so eine sachen, natürlich hilft es einem anfänger, aber es kann auch für "personen die schon etwas fortgeschrittener sind" eine arbeitserleichterung darstellen!!! denn jedes register und seine belegung kennt wohl keiner wirklich auswendig (besonders wenn man mit mehreren unterschiedlichen cpu typen arbeitet), und immer im datenblatt nachschlagen, kostet immer wieder zeit! mfg'florian
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.