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
Gast
#2298501
oder Programm verkleinern.
Gast
#2298509
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 ;-)
Gast
#2298512
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
Gast
#2298558
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 ?!?!?!?!?
Gast
#2298572
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM Bei Bascom kann ich leider auch nicht weiterhelfen.
Gast
#2298584
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
Gast
#2298585
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?
Gast
#2298586
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
Gast
#2298589
Wie wärs mit Programm herzeigen? Alles andere ist Raterei.
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.