Forum: Mikrocontroller und Digitale Elektronik ATmega128: M103C Fuse


von Matthias S (Gast)


Lesenswert?

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.

von Jörg Wunsch (Gast)


Lesenswert?

Hast Du Dir die anderen Sonderfunktionen, die Dein Port im
Mega128-Modus hat, mal angesehen?

von Matthias S (Gast)


Lesenswert?

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

von Matthias S (Gast)


Lesenswert?

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

von Jörg Wunsch (Gast)


Lesenswert?

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.

von Matthias S (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.