ATmega128: M103C Fuse

Gast #97065
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.
Gast #97067
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
Gast #97068
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
Gast #97069
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.
Gast #97070
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.