ATmega128 Frage

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Antworten
Benutzeravatar
timaks
Beiträge: 502
Registriert: So 11. Aug 2013, 21:01

ATmega128 Frage

Beitrag von timaks »

Hi zusammen,

bei einem aktuellen Projekt bin ich auf ein Problem gestoßen:
Ich verwende einen ATmega128 und würde gern Port G3 und G4 nutzen.
Port G2 funktioniert einwandfrei. G3 und G4 machen gar nichts. Der Mega ist ok, habe auch einen anderen ausprobiert.
Da der G-Port ja was Besonderes ist hier mal die Fakten:
Fusebits: Low 3F (Brown-Out 4V, Brown-out enabled, Ext. CRystal High Speed), High C0 (kein OCD, kein JTAG, SPI an, osc=0)
Extended: ATMEGA128 Mode an, Watchdog aus.
externer Quarz vorhanden, Grundsätzlich läuft der Chip.
Lasse ich nun G2, G3 und G4 im Sekundentakt togglen geht G2 einwandfrei, G3 und G4 aber gar nicht.
Im Datasheet steht nur, dass IM ATmega103 compatibility mode die beiden Pins als oscillator Pins genutzt werden, IM 128 Mode NICHT.
Google spuckt auch nix aus, ausser evtl. keiner Funktion wegen JTAG, dann aber bei anderen Ports und nicht G.

Hat jemand eine Idee?

Gruß
Markus
Benutzeravatar
Fritzler
Beiträge: 12597
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: ATmega128 Frage

Beitrag von Fritzler »

Ausversehen das Fusebit falsch gesetzt?
Hier kannste dir direkt die Häkcnen oder HEX Werte zeigen lassen:
http://www.engbedded.com/fusecalc/

Ansonsten ausversehn den Timer0 auf externen Takt gestellt?
Benutzeravatar
timaks
Beiträge: 502
Registriert: So 11. Aug 2013, 21:01

Re: ATmega128 Frage

Beitrag von timaks »

Die Fusebits habe ich ja oben angegeben. Meines Erachtens sind die ok.
In Frage kämen da ja nur OCD / JTAG (beides aus) oder osc (habe ich schon mit 0 und 1 probiert - kein Unterschied).

Ich bin zur Fehlersuche soweit heruntergegangen dass das Programm NUR noch Port G2-4 als Output definiert und die Ports
in einer Loop ein Mal pro Sekunde togglen.
Also kein Timer definiert.

Port G2 geht - G3 und G4 eben nicht. ALLE anderen Ports funktionieren wie im Lehrbuch.
Ein anderer Chip des selben Typs zeigt das selbe Phänomen.
Benutzeravatar
Fritzler
Beiträge: 12597
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: ATmega128 Frage

Beitrag von Fritzler »

Jo, die Fusebits sind aber invertierte Logik, da hat man ganz shcnell maln KNoten im Kopf.
Daher der Ratschlag mit dem Abgleich.
Womit haste die Fusebits ind en AVR gehämmert?

Aber im m103 Mode sollte ja ganz PortG nicht gehen *Kopfkratz*

Bau beim Init deines Programms mal bitte aus Spaß ein "ASSR = 0;" ein.
Benutzeravatar
timaks
Beiträge: 502
Registriert: So 11. Aug 2013, 21:01

Re: ATmega128 Frage

Beitrag von timaks »

Ich benutze BASCOM (jaja... ich komme sehr gut damit zurecht)...
Ich habe "aus Spaß" ASSR=0 gesetzt (heisst bei BASCOM auch genau so) und: geht.
MEINGOTTDERGEHT.
Keine Ahnung warum aber es klappt. Obwohl es im Datenblatt NUR den Hinweis auf den M103 Mode gibt.

Aber jetzt klappt's, jetzt kann ich wieder einige Ebenen höher weiter machen.

Großes Danke an Martin.
Benutzeravatar
Nicki
Beiträge: 3128
Registriert: So 11. Aug 2013, 20:16
Wohnort: wo Mosel und Rhein sich treffen

Re: ATmega128 Frage

Beitrag von Nicki »

timaks hat geschrieben:Ich benutze BASCOM (jaja... ich komme sehr gut damit zurecht)...
Was dieses Programm im Hintergrund tut bzw. die Ungewissheit darüber UND die Unzulänglichkeiten von Basic hindern mich daran, das Gefrickel damit zu vermissen.
Der fehlende Debugger ist noch das kleinste Problem.
Benutzeravatar
Fritzler
Beiträge: 12597
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: ATmega128 Frage

Beitrag von Fritzler »

Bascom nutzt im Hintergrund gewisse Dinge.
zB ist der UART auch immer aktiv und wenn man dann ein LCD mit an diese Pins knallt gehts nicht...

Aber warum jetzt Timer0 im async Mode läuft, keine Ahnung.
Der Timer steht dann still weil er kein Takt bekommt.
Die hamm doch vergammeltes Gras geraucht...

Ansonsten ist es empfehlenswert C zu lernen, das ist der beste Weg :mrgreen:
Antworten