Hallo ,
es läßt mich ja nicht los.
Unter YouTube gibt es ein Video , da wir genau das gemacht , was ich haben will .
https://www.youtube.com/watch?v=c3wwNW7BRPI Also neuer Versuch mit der LAZ-IDE und AVR.
Das nachgemacht , was im Video zu sehen war.
Leider ohne Erfolg (alle möglichen diffusen Fehlermeldungen) , keine Ahnung was der Kollege da noch vorher so alles vorbereitet hat.
Nun habe ich mal einen anderen Ansatz versucht , mit dem ich so halbwegs leben kann.
Zunächst habe ich mal den Ordner mit den ganzen Sammel-Files (siehe oben PAS_to_AVR_TEST.zip) aufgeräumt .
Alles was nicht benötigt wird weggeworfen.
Im Anhang ein neues ZIP (PAS_to_AVR_TEST2.zip).
Nun mach ich ganz normal die Laz-IDE auf .
Gehe nach 'Werkzeuge' und hier 'externe Werkzeuge einrichten...' .
Hier habe ich mir zwei Tools angelegt.
1) Compile PAS for AVR
2) Übertrage per USBTINY
Im Fenster 'externe Werkzeuge einrichten...' gibt es einen Button 'Mehr' und dort im Schalter 'Import' .
Mit diesen kann das File 'AVR_extern_tool.xml' geladen werden , welches in der (PAS_to_AVR_TEST2.zip) mit drinnsteckt.
Nach dem Laden sollten dann die beiden Einträge
Compile PAS for AVR
Übertrage per USBTINY
vorhanden sein .
Nun wählt man den ersten Eintrag (Compile PAS for AVR) an und dann auf den Button 'Bearbeiten' klicken.
Im Fenster oben findet man
1) Den Titel der Funktion
2) Der Pfad und das Programm , welches ausgeführt werden soll , hier wählt man das Programm 'ppcrossavr.exe' ,welches auch im (PAS_to_AVR_TEST2.zip) steckt.
Der Pfad ist von meinem Rechner , muß also geändert werden.
3) Die Parameter , die dem Crosscompiler (ppcrossavr.exe) übergeben werden sollen.
$Name($TargetFile()) -Wpatmega16 -a
$Name($TargetFile()) ist eine Liste von Macros (Beschreibung unten im Fenster) und geben den Pfad des Project-Files (z.B. Test2.pas) an.
-Wpatmega16 , ist der von mir benutzte Prozessor (ATMega16) , muß also an euern Prozessor angepasst werden.
-a sagt , das ein *.s File angelegt werden soll , ist ganz interessant , hier steht der Assembler-Code drinn , den der Crosscompiler erzeugt hat.
Nun zur zweiten Funktion 'externe Werkzeuge' (Übertrage per USBTINY).
Auch hier wieder anwählen und auf den Button 'Bearbeiten' klicken.
1) Titel der Funktion
2) der Pfad zum Programm 'avrdude.exe' einstellen , ist auch im (PAS_to_AVR_TEST2.zip) enthalten.
3) Die Aufrufparameter einstellen.
-u -B 1 -C "avrdude.conf" -p m16 -P usb -c usbtiny -U flash:w:"$NameOnly($TargetFile()).hex":a
AVRDude ist ein Programm , das unser HEX File in den Prozessor läd.
Die Parameter kann man in der Doku 'avrdude-doc-6.3.pdf' , auch im (PAS_to_AVR_TEST2.zip) lesen.
In der avrdude.conf stehen diverse Programmer , z.B. mein 'usbtiny' drinn.
Auch für den Arduino sollte das funzen , irgendwo hier hatte ich da schon was gelesen..
Die Parameter flash:w:"$NameOnly($TargetFile()).hex":a geben wieder den Pfad und den Namen des Projektfiles (unser Pascal-File) an .
So nun noch einiges zur Vorgehensweise :
wir löschen zunächt mal die Datei test3.hex in unserm neuen PAS_to_AVR_TEST2 - Ordner , damit wir kontrollieren können , ob der Crosscompiler richtig funzt.
1) test3.lpi starten
2) die neue Funktion (Compile PAS for AVR) unter Menü/Werkzeuge starten.
Es sollte nun eine LAZ-Nachricht kommen , 'Compile PAS for AVR: Erfolg'
und im Sammelordner sollte die Test3.hex zu finden sein.
3) Dann die neue Funktion (Übertrage per USBTINY) unter Menü/Werkzeuge starten.
Es sollte dann die LAZ-Nachricht kommen , 'Übertrage per USBTINY:Erfolg'
Der Prozessor sollte nun arbeiten.
Wenn nicht , dann ist vermutlich irgend etwas mit den Aufrufparametern nicht in Ordnung.
Achtung:
Wenn etwas im Quelltext verändert wurde , muß man den Programm-Code zunächst per 'alles Speichern' wegschreiben .
Den der Crosscompiler 'ppcrossavr.exe' und auch 'AVRDude.exe' greifen direkt auf die vorhandenen Files im Sammel-Ordner zu , wissen also nichts von der Änderung.
Das ist nun noch ein Nachteil meiner Vorgehensweise .
Schick wäre , wenn man den Startbutten in der IDE so umbiegen könnte , das er
1) das Projekt wegspeichert
2) die Funktion 'externe Werkzeuge/Compile PAS for AVR'.
3) die Funktion 'externe Werkzeuge/Übertrage per USBTINY'.
aufruft , ohne sich um die Standardaufgabe des Lazarus (Compilieren / Linken) zu kümmern .
Als nächstes steht die Aufgabe vor der Tür , den schmale Funktionsumfang des FPC-for-AVR etwas zu erweitern.
So gibt es z.B. keinerlei Unterstützung von Fließkomma-Operationen , das ist natürlich doof , wenn man etwas Mathe braucht.
Also müßen diverse Methoden nachgebaut oder irgenwo (z.B. als ASM-Code) zusammengeklaut werden.
Bei den Units 'convert.pas' , 'avr_serial.pas' , 'convert.pas' habe ich damit mal rumprobiert und etwas gesammelt.
In Test2.lpi werden sie benutzt.
Auch für so Geschichten wie LCD-Anzeige , Interupt usw. müßte noch was zusammengetragen werden.
Und die Einstellerei des Prozessortyps ist noch unelegant .
Man muß diesen per Parameter an 'ppcrossavr.exe' und auch 'AVRDude.exe' übergeben, dummerweise auch noch in verschiedenen Schreibweisen , einmal als '-Wpatmega16' und das andere Mal mit '-p m16' .
Ein wenig Automatik wäre schick, evetuell hat ja jemand eine Idee hierzu.
Gruß
Frank