Hallo, wenn ich ein Programm auf einen anderen µC transferiere, kann ich davon ausgehen, dass bei gleicher Hardware-Umgebung und gleichem Code alles gleich läuft? Problem: Ich habe das Programm auf einem Atmega8 geschrieben. Dieser ist aber nun für das fertige Projekt "überdimensioniert" und ich würde es gerne auf einen Attiny24 machen. Wenn ich den Sourcecode anpasse, also die Registernamen unterscheiden sich ja geringfügig, aber das Programm ansich sonst lasse, funktioniert das ganze dann? Oder kann dies trotzdem Probleme hervorrufen? Danke. Gruß Sven
>Wenn ich den Sourcecode anpasse, also die Registernamen unterscheiden >sich ja geringfügig, aber das Programm ansich sonst lasse, funktioniert >das ganze dann? Oder kann dies trotzdem Probleme hervorrufen? Meine Güte, probier es aus. Dann wirst du schon sehen ob es geht.
Es kommt darauf an, wie die integrierten Hardware-Features genutzt werden. Die Ausstattung der verschiedenen AVRs ist sehr unterschiedlich. Ein einfaches Programm ohne Verwendung von Interrupts und anderer Spezialitäten (z.B. Hardware-PWM) wird vermutlich laufen. ...
holger schrieb:
> Meine Güte, probier es aus. Dann wirst du schon sehen ob es geht.
Das habe ich. Und es treten Probleme auf, deshalb interessiert mich die
Frage.
Das Programm läuft mit ein paar Interrupts. Das Input Capture macht
Probleme. Vorher habe ich mit dem Noise Cancellor auf Atmega 8 saubere
Signale. Auf dem Atmega44 irgendwie nicht mehr.
Daher meine Besorgnis, ob beim transferieren was schief ging, obwohl ich
nun schon 2x mit den Datenblättern alles abgeglichen habe.
Laut Datenblatt soll das Input Capture identisch sein. Der Fehler müßte also woanders liegen. Vielleicht nen Pullup am falschen Pin gesetzt? Peter
Inzwischen versuchen sie bei den neuen AVRs, die kompatibilität über die Registernamen zu verbessern. Allerdings gibts immer Pferdefüße beim Portieren auf andere uCs, wie die Interrupteinsprungvektoren, unterschiedliche Anzahl der Peripherie...
Der Pullup ist extern und zusätzlich noch ein kleiner Kondensator gegen GND um Rauschen auch noch etwas hardwareseitig zu unterdrücken. Das funktionierte beim Atmega8 prima. Ein paar Unterschiede gibt es beim Interrupt enable ist es z.B. TIMSK1 statt TIMSK, aber das habe ich alles beachtet. Mir geht es prinzipiell darum, ob man so etwas transferieren kann ohne Probleme oder ob ich tatsächlich irgendetwas im Code vergessen hätte zu ändern/transformieren (was mir bis nach dem jetzigen 3. mal nicht aufgefallen ist).
Hi >Mir geht es prinzipiell darum, ob man so etwas transferieren kann ohne >Probleme oder ob ich tatsächlich irgendetwas im Code vergessen hätte zu >ändern/transformieren (was mir bis nach dem jetzigen 3. mal nicht >aufgefallen ist). Z.B. besitzen ATTinys, im Gegensatz zu den ATMegas, keinen Hardwaremultiplizierer. MfG Spess
spess53 schrieb: > Z.B. besitzen ATTinys, im Gegensatz zu den ATMegas, keinen > Hardwaremultiplizierer. > > MfG Spess Was bedeutet das konkret? In meinem Programm werden nur ein paar eingelesene ADC Werte in einen Wert umgerechnet mit einer Multiplikation. Das sollte doch kein Problem sein oder? Muss ich hierfür dann eine spezielle library aufrufen bzw. includieren?
Konkret bedeute es, dass die Multipliktion bei Programmierung in C auf Tinys etwas langsamer ist als auf Megas, sonst nichts. Das ist Sache des Compilers, nicht deine.
Hi
>Das ist Sache des Compilers, nicht deine.
Wenn man einen benutzt. Sonst schon.
MfG Spess
Das Programm ist mit GCC geschrieben (Programmers Notepad) und sollte daher wohl kein Problem sein. Naja, ich werde morgen mal das Programm kürzen und die Peripherie rausschmeisen und nur das ICP laufen lassen. Mal schauen, wie es sich dann verhält... Trotzdem Danke.
Hallo, ich habe heute das Programm reduziert, sodass wirklich nur die Ports und der Timer für das Input Capture initialisiert werden. Ebenso nur der Interrupt für Input Captute, welches bei einer Flanke die LED einschaltet, die Flanke wechselt, und wieder ausschaltet. Das Hauptprogramm ist eine leere Schleife. Das Programm ist also wirklich total abgespeckt, aber irgendwie bekomme ich trotzdem rauschen, da die LED manchmal nicht an- oder abgeschaltet wird. Kann so etwas sein? Das gleiche Programm bei gleicher Hardware läuft auf dem Atmega8 ohne Probleme....
Also das ist alles zu spekulativ. Poste mal den Schaltplan und den Code.
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.