Moin Forum, bin neu hier im Forum und hoffe Ihr könnt mir weiterhelfen. Also.... Mir hat jemand eine Schaltung gebaut auf welcher ein Atmega8 verbaut ist. Nun habe ich das Problem das ich die 8kb Grenze erreicht habe und mein Programm ist noch nicht ganz fertig :-) Kann ich den Atmega8 einfach auslöten und einen Atmega16 einbauen?? Oder kann ich den Speicher erweitern ? Vielen Vielen dank für Eure Hilfe. So long Brainy
naja, der Atmega16 ist ja nicht zum ATmega8 pinkompatibel, der hat noch nichtmal das selber Gehaeuse. Ich wuerde daher eher zu einem Atmega168(16kB) oder Atmega328(32kB) raten. Soweit ich weiss sind die alle pinkompatibel, ggf. einfach in der Parametric Search bei Atmel nachsehen ;-)
Wobei aber die Register teilweise unterschiedlich sind, d.h. das Programm muss vermutlich angepasst werden.
Ohne dich da jetzt irgendwie angreifen zu wollen oder ähnliches... Ich weiß ja nicht wie viel Erfahrung du im der Programmierung von µCs hast, aber kann es vielleicht sein, dass du entweder ziemlichen Spaghetticode produzierst oder anderweitg Platz verschwendest? Ich weiß ja auch nicht wie umfangreich dein Projekt ist, aber in die 8kb bekommt man schon das ein oder andere rein :) Sag doch mal was du da baust / programmierst...
Moin Moin, erstmal vielen Dank für die vielen und raschen Antworten. Ich habe einen Kameradolly gebaut der mit einem Schrittmotor gesteuert wird. Hauptsächlich steuert der Atmega den Schrittmotor und die den Auslöser. Im Programm kann man verschiedene Punkte auswählen. Automatisch Manuell Links Rechts Endschalter / Umkehr bei Endschalter / Geschwindigkeit wird mit Poti gesteuert. Alle "Menüpunkte" werden im Display angezeigt. Und alles Idiotensicher..... Welcher Taster macht was. Ich könnte wohl viel Platz im Programm sparen wenn ich die Variablenbezeichung abkürzt. Also nicht mehr Anzeigewert1 sondern AZW1. War halt am Anfang etwas übersichtlicher. Danke nochmals. Aber bevor ich einen Atmega einbaue der nicht 100% kompatibel ist lass ich es so und verkleiner das Programm. Vielen Dank So long Brainy
Ansonsten lassen sich auch 512 Byte ins EEPROM auslagern; gerade für "langsame" Displaytexte geeignet.
Martin Goerke schrieb: > Ich könnte wohl viel Platz im Programm sparen wenn ich die > Variablenbezeichung abkürzt. > > Also nicht mehr Anzeigewert1 sondern AZW1. Das Spart keinen Platz. Nachdem der Compiler an deinem Code war, sind die Variablennamen alle Weg, die kommen nicht in den Atmega... Befürchtung: Schätzt du deine Programmgröße an der Dateigröße deines .c-Sourcecodes ein?
Ins EEprom auslager.....??? Das hört sich gut an. Aber wie stell ich das an. Bin noch nicht so lange am Bascom programmieren. Danke So long BRainy
Ahso, Bascom... Nächstes Mal am besten gleich dazusagen, spart "inkompatible" Antworten.
Nein, das Kompilierte Programm ist 8KB groß. Darum bleibt die Steuerung wohl auch bei enem bestimmten Punkt stehen, weil der Rest fehlt ? So long
Kenn mich mit Bascom nicht wirklich aus, aber da sollte der Wechsel Atmega8 -> Atmega 168 oder 328 doch problemlos sein, oder? Aber: Ist bei der kostenlosen Bascom-Version nicht sowieso die max. Programmgröße Limitiert?
Stimmt auf etwas über 4kb aber mein kompiliertes Programm hat dann trotzdem mehr als 8 KB. Irgendwie komisch ?!?!?!?!?
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM Bei Bascom kann ich leider auch nicht weiterhelfen.
Tach auch, Martin Goerke schrieb: >Nein, das Kompilierte Programm ist 8KB groß. >Darum bleibt die Steuerung wohl auch bei enem bestimmten Punkt stehen, >weil der Rest fehlt ? Das kann ich mir beim besten Willen nicht vorstellen. Während des Proggens kann man prüfen ob Kompilat und gespeichertes Programm identisch sind. Sollte das Prog nicht komplett auf dem IC sein --> Fehlermeldung. Meine Vermutung: Während der Laufzeit wird Speicher für Operationen benötigt der nicht mehr vorhanden/verfügbar ist, der klassische Buffer Overflow. Gruß diskman
Hallo, welches Programmfile ist 8K groß? Das .hex? Da wäre Faktor 2,x völlig normal, weil der Code als Ascii-Hex gespeichert wird. Gibt der Bascom-Compiler denn keine Warnung aus, wenn das Codelimit erreicht ist?
Hi >Stimmt auf etwas über 4kb aber mein kompiliertes Programm hat dann >trotzdem mehr als 8 KB. >Irgendwie komisch ?!?!?!?!? Wenn du das Hex-File meinst, das ist ca. 2,3x grösser als der eigentliche Code. MfG Spess
Ok, dann hier mal mein Programm. Aber NICHT lachen :-) Das Programm habe ich angehängt, ist aber noch nicht fertig. Da im Teil "Fahren" was nicht stimmt. In dem Teil hier bliebt die Steuerung stehen. ... Fahren: Do Gosub Berechnen Loop ... Die Steuerung spring hier her und dann parkt sie. Wenn ich hier noch Do einen Goto einfüge sprint er dorthin. Ansonsten wars das. Danke für Eure Hilfe. So long Brainy
Hallo, die variable Strecke "Dim Strecke As Single" wird in deinem Programm offenbar nicht verwendet, jedoch bedingt die Verwendung des Typs Single den Einbau einer Gleitkommabibliothek - und die wird ordentlich Platz brauchen. Sascha
Hallo, danke für den Tip. Ich habe eben grad den Fehler gefunden. Es Reicht nicht in "Fahren" nur ein Gosub zu Berechnen ich muss den Wert auch anzeigen lassen. Jetzt geht es weiter. Achso..... beim Flashen zeig er 2904 von 8902 an, sollte also reichen. So long Brainy
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.