Det är inte ofta man ser mjukvaruprojekt i Projekt-forumet.

En wizard för att skapa AVR-projekt kom på tal i den här tråden för ett tag sedan...
En wizard kan vara väldigt smidig precis då man ska starta ett projekt för att räkna ut timer-värden och att välja värden för UART:en t ex. Framför allt slipper man allt databladsletande och kan snabbt komma igång med ett projekt. Den wizard som finns i CodevisionAVR är rätt bra, förutom att koden den genererar inte är vacker. Tyvärr är den också rätt värdelös efter att man väl har skapat sitt program också. Jag skulle vilja ha ett program som man även kan ha användning för under kodandets gång. Dessutom är Codevisions wizard, och alla andra jag har sett, absolut inte fria programvaror.
Hur som helst tog jag och gjorde en egen wizard, som är tänkt att användas tillsammans med den fria C-kompilatorn/paketet avr-gcc/WinAVR. Den är faktiskt rätt användbar redan nu. Sen får man väl se hur bra man kommer och trivas med den när man väl börjar på ett AVR-projekt. Som det är nu genereras koden utifrån de val man gör i programmet. Än så länge finns bara de AVR-funktioner som man använder oftast (Timer, UART, A/D och Externa interrupts). Under Timer-delen fattas fortfarande en hel del, främst PWM. Men det är rätt enkelt att lägga till nya flikar.
Jag har väl tänkt försöka komma på något bra sätt hur den ska kunna underlätta när man sitter och kodar också. Hur jag ska lösa det har jag inte riktigt kommit fram till. Man kan visserligen använda wizarden, som den är nu, till det, men jag letar efter något effektivare sätt. Det lutar nog åt att man i varje flik presenterar relevanta register och bitar, för att åstakomma det man har ställt in att man vill göra. Eller något åt det hållet.

Programmet ska gå att använda som det är nu. Men det är fortfarande en del detaljer som ska fixas.
Att göra
* Informationsrutor, för att bl a informera om vilka i/o-pinnar som påverkas av en viss inställning och register som är aktuella för en viss funkton (t ex UDR för UART:en).
* Försöka fixa "utseendebuggar" som vissa har upplevt
* Ordna till i Timer-fliken
* Bestämma hur i/o-ports-kommentarerna ska se ut
* Lägga till ytterligare AVR-funktioner (SPI, TWI osv.)
* Komma på lite nya funtioner som skulle underlätta utvecklandet
* Ringbuffert för UART:en
* Lägga in stöd för flera AVR:er
* Snygga till layouten
* + lite till
Lite bilder (nyaste först)
Jämförelse-rutan efter ändring av prescalern från 1 till 8 (Linux):

I/O-portar (Linux):

UART + delay-generatorn (Linux):

Timer (med PWM-inställningar) (Linux):

Äldre bilder:
Timer (Linux)
A/D (Windows)
Programmet är ett experiment för att se om programidéen kan visa sig vara användbar eller inte. Det finns inga garantier att programmet genererar helt korrekt kod, även om det är det som är tanken. Hittar du fel i programmet så får du gärna höra av dig.
Ladda ner
Senaste versionen av programmet (60kB) om någon vill prova. Kräver att Python och wxPython är installerat (i den ordningen) för Windows. Ledsen om det är en del och ladda hem för er med modem, men kombinationen Python och wxPython kan jag bara inte säga nej till.

En färdigbyggd version av programmet för Windows finns också att ladda hem. Tyvärr har jag inte möjlighet att alltid hålla den lika uppdaterad som själva py-filen här ovan. Zip-filen finns att ladda hem här. (~3.8 MB) Packa upp zip-filen och kör programmet avr_app.exe. Varken Python eller wxPython behöver alltså vara installerat.
Vi Linux-användare (eller *nix-användare i allmänhet) installerar Python och wxPython genom distens paketsystem eller i värsta fall genom att kompilera det själva och installera. Sen är det bara att köra programmet med "python avr_app.py" eller göra den körbar och sedan köra den direkt.
Kör du Mac OS X finns Python här och wxPython här. Jag har dock ingen möjlighet att testa programmet under Mac OS X tyvärr.
Uppdateringar
080308: Bugfix: Uträkningarna av _delay_loop_1 och _delay_loop_2 var felaktiga!
071212: Uppdaterat bild (compare)
070405: Grupperat inställningar i rutor och förbättrat Timer-fliken. Windows-exe:n _ej_ uppdaterad
060426: Lagt in stöd för Mega128 och fixat lite
060320: Lagt in stöd för Tiny2313.
060319: Fixat buggen med att jämförelsefunktionen inte fungerade för vissa typer av inställningar (kryssboxar).
060131: Gjort om mycket i koden. Lagt in kod, den nya jämförelsemetoden (se bild) och delay-generatorn i flikar.
060110: Lagt in inställningar för PWM och input capture. Lite justeringar behövs dock. Lagt in ny bild.
060107: Ändrat i "Att göra"-listan
060107: Inställningar för I/O-portarna. Nya bilder.
060106: Bugfix + ny bild
0601??: (Se bild 3) Lagt till val av klockfrekvens och en mycket enkel delay-uträknare + plus lite småfix.
0601??: Ändrat i "Att göra"-listan
0601??: Gjort så att den kan generera fullständig kod.