N'Abend, ich habe eine Frage zum M103C Fuse beim ATmega128: Bei M103C gesetzt kann ich die eingehenden Signale z.B. über if(bit_is_set(PINC, 0))... abfragen, allerdings "versanden" Funktionsaufrufe und das Programm stürzt ab. Bei M103C gelöscht, klappen sämtliche Funktionen, jedoch kann ich die Eingangssignale nicht mehr abfragen (jedenfalls nicht auf obige Art und auch nicht indem ich das ganze als Bitfeld einlese). Meine Frage lautet nun: Wie kann ich mit der zweiten Vorgehensweise trotzdem die eingehenden Signale abfragen? Vielen Dank für alle Vorschläge, Matthias P.S. Über Suche in google und im Forum habe ich hierzu keine passenden Einträge finden können.
Hast Du Dir die anderen Sonderfunktionen, die Dein Port im Mega128-Modus hat, mal angesehen?
Hallo und danke für die Antwort, die Sonderfunktionen habe ich mir angesehen. Außer SPI brauche ich je einen Port zur Ein- und Ausgabe. Gibt es Erfahrungswerte für die Wahl des Eingabeports? Vielen Dank, Matthias
Vielleicht sollte ich meine Frage noch einmal neu formulieren: Wie kann ich dem ATmega128 klarmachen, dass ich einen Port nur zum Einlesen der eingehenden Signale brauche? Ich habe es programmtechnisch versucht durch entsprechende Belegung des DDRegisters, aber das Einlesen im 128er Modus auf keinem Port. Alternative Frage: Wie kann ich die Alternate Functions eines einzelnen Ports ausschalten? Ih stehe gerade total auf dem Schlauch (und habe leider auch in der Dokumentation keine Hinweise finden können) und bin für jeden Hinweis dankbar. Viele Grüße, Matthias
Für das Einlesen eines Ports muß man normalerweise keinerlei Vorkehrungen treffen, da alle Portpins standardmäßig auf Eingang geschaltet sind. Sonderfunktionen muß man in der Regel zuschalten, wobei die Ausnahme ist, daß die Zuordnung zum JTAG-Port bei den Controllern, die JTAG können, per Fusebit vorverdrahtet ist (damit man via JTAG programmieren kann); hier müssen also ggf. die Fusebits gelöscht werden bzw. die JTAG-Funktion per Controlregister ausgeschaltet werden. Mir dünkt aber, Du hast irgendwo ein anderes Problem. Du beschreibst das aber so wenig, daß man Dir nicht helfen kann.
Hallo Jörg, mein Problem ist folgendes: Ich setze Ausgänge und benutze dann Funktionen wie loop_until_bit_is_set bzw. frage die aktuellen Belegungen über ein Bitfeld ab und prüfe dann die einzelnen Bits in Schleifen. Dieser Vorgang funktioniert aber nur, wenn ich den M103C setze. Ansonsten kann ich die Eingänge nicht als (Abbruch-)Bedingungen verwenden, weil die Signale, die nachgewiesenermaßen an den Eingängen anliegen nicht verarbeitet werden (warum auch immer). Wenn ich allerdings um die Eingänge abfragen zu können den M103C setze versagen alle Aufrufe von selbstgeschriebenen Funktionen. Dies habe ich bislang auf die in der Atmel Doku als verschiedenen "internal ram space"s zurückgeführt. Das Problem ist nun: Wieso klappt die Abfrage von Eingängen nur wenn ich M103C setze? Vielen Dank, Matthias
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.