Archiv verlassen und diese Seite im Standarddesign anzeigen : Grenzen des Asuro
Asuro hat ja Grenzen insbesondere bei Geschwindigkeit (8MHz) und Speichergröße (7KB verfügbar für Programme). Wie schnell kommt man in der Praxis an diese Grenzen und gibt es Möglichkeiten diese zu umgehen?
damaltor
13.05.2007, 00:28
8 mhz reichen absolut vollkommen aus. keine chance dass er zu langsam rechnet... schliesslich gibts nicht sooo komplexes zu berechnen, und wenn du bedenkst dass dein taschenrechner nicht mal 2 mhz hat und trotzdem verddammt schnell ist... ;)
7 kb können gelegentlich mal knapp werden, im allgemeinen aber auch kein ernstzunehmendes problem. 7 kb flash sind zwischen 10 und 20 kb code, also maximal etwa 20.000 zeichen. rechne für jede zeile 10 zeichen (mehr sinds meist nicht, und viele funktionen sind sogar noch kürzer), dann kannst du ein programm mit 2000 zeilen schreiben. da musste schon echt was tolles schaffen.
ich hatte mit beiden grenzen noch keine probleme.
Danke für die Info. Das habe ich bisher nicht in der Klarheit gelesen und schon über Aufrüsten nachgedacht.
"7 kb flash sind zwischen 10 und 20 kb code" - Kannst Du dies bitte exakt darlegen?
damaltor
13.05.2007, 10:06
nein, das ist bloss ne schätzung.
das was am ende rauskommt, also die hex-datei, ist maschinencode.
es werden alle funktionen in c erstmal in assemblerfunktionen umgewandelt, und dann in prozessorlesbare sprache gewandelt. prozrssorlesbare sprache braucht keine...
-namen für variablen
-namen für funktionen
-klammern, kommas, sonstige sonderzeichen
-kommentare
(damit ist schonmal fast alles was man so tippt raus)
jede unktion wird durch mehrere assemblerfunktionen ersetzt. deshalb kann man nochmal gut sparen, wenn man funktionen in assembler selbst schreibt. dadurch fallen überflüssige zeilen raus.
nochmal sparen kann man indem man nicht die ganze asuro library mitkompiliert (also entweder die neueste lib nutzen, oder nicht gebrauchte funktionen aus der asuro.c auskommentieren). beispielsweise braucht auch ein hochkomplexes geradeausfahr-programm nur MotorSpeed, MotorDir, und evtl Odometriedata oder die neuen Encoder-funktionen. werden keine leds benötigt, kann man schonmal alle led-funktionen rauslassen - die werden nämlich normaler weise immer mitkompiliert.
auch im makefile kann man noch in den compilereinstellungen einstellen, dass der code möglichst kompakt gehaltet werdenn soll, dafür dauert das kompilieren etwas länger. dadurch kann man nochmal ein paar bytes sparen.
und es geht noch weiter: das größte hex-file das ich mal gefasht habe war etwa 11 kb gross. warum? nicht alles was drinsteht ist echt das was in den prozessor kommt - es sind zeilennummern, steuerzeichen, und vor allen dingen zeilenweise checksums. auch hier wirds nchmal weniger...
trotzdem, wenn du aufrüsten willst:
besorge dir bei reichelt einen atmega168 und lade mithilfe eines programmers deine programme rein.
besser: baue dir einen ISP-snschluss (ist grade in einem der aktuellen threads thema) dann brauchst du den prozessor nicht mmer rausnehmen.
alternativ: lade dir den bootloader von henk runter
http://home.planet.nl/~winko001/Asuro/Bootloader/AsuBtlPagFrm.htm
und flashe diesen mithilfe des programmers. das ist zwar nicht der originale bootloader von arexx, aber er funktioniert um programme per infrarot rüberzuladen.
auf jeden fall brauchst du einen programmer um fusebits zu setzen (das sind sozusagen die einstellungen des prozessors, also zB dass der externe Quarz benutzt werden soll usw.)
nahc dieser aktion hast du dan 16 kB programmspeicher (bzw. 15+bootloader).
Danke für die interessanten Informationen.
HermannSW
13.05.2007, 15:36
Hallo,
Asuro hat ja Grenzen insbesondere bei Geschwindigkeit (8MHz) und Speichergröße (7KB verfügbar für Programme). Wie schnell kommt man in der Praxis an diese Grenzen ... ?
8MHz aus dem Beitrag hier (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=263706#263706)
...[list:8b41adac61] bei meinem Linienfolger wird die innerste Schleife in 0.8ms durchlaufen, der Asuro bekommt also selbst bei 2m/s noch alle 1.6mm neue Daten, auf die er dann reagieren kann...
7KB schau mal unter examples/SelfTest, der ist ziemlich umfangreich (Quelltext) und paßt auch noch rein ...
[/list:u:8b41adac61]
damaltor
13.05.2007, 16:33
kein problem.
Probier mal folgendes:
kommentiere die erste zeile des programms aus (#include asuro.h) und kopiere dann die funktionen die du wirklich brauchst aus der asuro.c in deinen programmcode (vor die main funktion!!).
also init(), motorspeed, motordir usw. aber eben nur die die du wirklich brauchst. und dann schreibe ein programm - du wirst sehen beim flashen, es ist sehr klein. ich laube auf den asuro passen etwa 150 "Pages" wie das flash tool sie nennt, ein "normales" programm (einfache linienverfolgung, gradeausfahen, server ein/ausgabe usw) hat mit der kompletten (!!) lib nur etwa 50 - 70 pages. mit der neuen, modularisierten lib wo von allein nur die benötigten funktionen kompiliert werden, sogar noch deutlich weniger. aber melde dich mal wenn du die 7kb geschafft hast, wir erzählen dir dann wie du aufrüsten kannst... ;)
@damaltor: Danke für die umfangreichen Infos! Klasse Forum hier.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.