PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PORTC bei Atmega16 hat Problem



hardware.bas
27.03.2011, 10:36
Ich möchte den PORTC des Atmega16 als 8-bit-Datenausgang nutzen,
jedoch kommen undefinierte Daten beim Beschreiben des PORTs heraus.
Die einzige "Beschreibbarkeit" ist 255, also 11111111. Ansonsten lassen
sich einige BITs nicht auf 0 setzen. Ich vermute einen Vorrang der
Doppelbelegung der PINs. Frage: Wie kann man diesen PORTC so
einrichten, dass er für diesen Anwendungsfall funktioniert?
Vielen Dank und viele Grüße, Micha

for_ro
27.03.2011, 10:51
Hast du denn an den Klassiker gedacht, JTAG abzuschalten?
Ansonsten hat der PortC keine Zusatzfunktionen, die dir in die Quere kommen könnten.

hardware.bas
27.03.2011, 11:36
JTAG ist mir leider kein Begriff. Wenn das der Grund sein sollte, wie
schaltet man den ab. Bisher betreibe ich den Atmega16 bisher im
Auslieferszustand, werde ihn jedoch auf einen Baudratenquarz umfusen.
jedoch muss erst der PORTC funktionieren. Für einen Tip, wie diese
Abschaltung funktioniert, wäre ich dankbar. Bin Umsteiger von
Atmega8 auf Atmega16. VG Micha

hardware.bas
27.03.2011, 12:01
Ach so.... hatte ich vergessen, ich programmier in BASCOM,
schätze jedoch, das Problem ist Sprachenunaghängig oder
eine Fusebit zu setzen? Vielen Dank und viele Grüsse, Micha

for_ro
27.03.2011, 12:14
Wenn du eh die Fuses änderst, dann schalte JTAG ENABLE auf DISABLE.

hardware.bas
27.03.2011, 12:17
OK, JTAG auf DISABLE...
Wichtig ist jedoch, dass im die Ports für RX und TX noch
als UART laufen!
VG Micha

for_ro
27.03.2011, 12:31
Die liegen doch auf PortD und haben mit JTAG nichts zu tun.

hardware.bas
27.03.2011, 13:49
OK, ich nahm an, dass JTAG alle Alternativbelegungen steuert. Ich werds probieren,
wichtig ist dass PORTC 8-bit-weise angesteuert werden kann, ohne Zusatzfunktionen
und alle anderen Funktionen auf den anderen PORTs so bleiben.
Vielen Dank und viele Grüsse, Micha

hardware.bas
28.03.2011, 03:34
Das JTAG-Fusebit habe ich geändert und das Ergebniss entspach danach
meinen Vorstellungen. Leider setzt sich dieses JTAG-Fusenit nach jedem
Programmflash wieder zurück. Da ich später auch das Fusebit für den
Quarzoszillator gesetzt habe, welches auch nach einem Programmflash
stabil bleibt, setzt mich das doch etwas in Erstaunen! Ich kann doch nicht
dauernd nur dieses Bit umfusen, immer wenn ich einen Programmflash
mache - die Schaltung ist noch in Entwicklung. Gibts da noch was Besseres
oder mache ich was falsch? VG Micha

Searcher
28.03.2011, 05:20
Hallo hardware.bas,

Ich kann doch nicht dauernd nur dieses Bit umfusen, immer wenn ich einen Programmflash machemit der Compiler Directive $PROG kann man Fuses beim Schreiben des Programmes verändern. Nicht, daß das irgendwo in Deinem Programm steht. (Das wird zB automatisch ins Programm eingefügt, wenn man auf der "Lock und Fuses Bits" Seite mit dem "Write PRG" Button spielt. Sonst mal das Programm posten.

Gruß
Searcher

hardware.bas
29.03.2011, 04:33
Stimmt, wenn man diesen Button drückt, werden igendwelche
Hiroglyphem ins Programmlisting an irgendeiner Stelle zurückgegeben.
Leider nutzlos, da beim Compilieren Dies als Fehler gesehen wird.
Daher leider nutzlos. Das JTAG-Fuse-Bit muss, genau, wie die
Anderen auch nach dem Programmieren stehen bleiben, oder
gibt es eine "saubere" Methode. Bei eventuell gemachten Firmware-
updates des fertigen Gerätes, darf es kein Umfusen geben. VG Micha

Searcher
29.03.2011, 08:04
Hallo,


mit der Compiler Directive $PROG kann man Fuses beim Schreiben des Programmes verändern. Nicht, daß das irgendwo in Deinem Programm steht. (Das wird zB automatisch ins Programm eingefügt, wenn man auf der "Lock und Fuses Bits" Seite mit dem "Write PRG" Button spielt. Sonst mal das Programm posten.


Stimmt, wenn man diesen Button drückt, werden igendwelche
Hiroglyphem ins Programmlisting an irgendeiner Stelle zurückgegeben.
Leider nutzlos, da beim Compilieren Dies als Fehler gesehen wird

Mein Hinweis auf das $PROG war so gemeint, daß in Deinem Programm unabsichtlich das $PROG mit Fuse Einstellungen steht und damit beim Flashen immer wieder das JTAG Bit falsch gesetzt wird. (könnte man natürlich auch für das Programmieren der Fuses benutzen)

Bei mir kommen keine Hiroglypen sondern die Einstellung der Fuses und Lock Bits in Hex Darstellung plus ein Remark.
$prog &HFF , &H62 , &HDF , &HFF ' generated. Take care that the chip supports all fuse bytes.

Die zusätzliche Zeile bringt bei mir keinen Fehler beim erneuten Compilieren. Da ist noch was anderes bei Dir faul.

Bei mir hat es auch eine xxx.prg Datei mit den Fuse Einstellungen im BASCOM Projektordner mit den Fuseeinstellungen erzeugt. Die auch mal weglöschen, falls vorhanden bzw ganz frisch beginnen mit neuem Ordner und umbenanntem .bas Programm.

Vielleicht die übrige Schaltung von den ISP Pins trennen oder sogar "standalone" programmieren? Ansonsten vielleicht mal komplettes Schritt für Schritt Vorgehen beschreiben, BASCOM Einstellungen und Programm zum Nachvollziehen posten. Oder erstmal den Hiroglyphen nachgehen? Oder alter ATmega mit "Eigenarten"?

Ich habe leider keinen ATmega16, gehe aber auch davon aus, das Fuses beim nur Programm flashen nicht verändert werden sollten.

Gruß
Searcher

Richard
29.03.2011, 11:53
Stimmt, wenn man diesen Button drückt, werden igendwelche
Hiroglyphem ins Programmlisting an irgendeiner Stelle zurückgegeben.
Leider nutzlos, da beim Compilieren Dies als Fehler gesehen wird.
Daher leider nutzlos. Das JTAG-Fuse-Bit muss, genau, wie die
Anderen auch nach dem Programmieren stehen bleiben, oder
gibt es eine "saubere" Methode. Bei eventuell gemachten Firmware-
updates des fertigen Gerätes, darf es kein Umfusen geben. VG Micha

Da ich gerade davor sitze, Studio 4/Fuses/ Jtag geändert und Fuses zur Prüfung gelesen, OK übernommen.
Chip neu Programmiert, Fuse neu gelesen keine Änderungen... Das habe ich 3..4.x gemacht ohne das die Fuse Einstellungen beeinflusst wurden. Allerdings jetzt mit Studio 4, mit Bascom spiele (ich) nicht an den Fuse herum.

Jetzt habe ich es auch mit Bascom versucht scheint bei mir auch nicht zu klappen, Mit Bascom Jtag ausgeschaltet, Chip Prigrammiert und mit Studio 4 die Fuses eingelesen...war wohl nichts Jtag war Eingeschaltet? Entweder muss Standardmäßig bei Bascom etwas geändert werden? Wie auch immer, (ich) setze Fuses nur mit Studio 4 und programmiere ansonsten auch mit Bascom und dem STK 500, natürlich OHNE dem $Prog xxxxx im Header!

Gruß Richard

hardware.bas
29.03.2011, 16:43
Danke für die Hilfe. da scheine ich nicht der Einzige zu sein, mit diesem
Problem. Da jedoch in diesem Fall der PORTC nur zur Datenausgabe auf
2 Siebensegmentdecoder benutzt werden, werde ichs beim debuggen
ignorieren und muss eben nach den finalen Flash noch mal umfusen.
Schade, aber warscheinlich nicht zu ändern, da andere Programmiertools
als BASCOM meinen Horizont überschreiten. VG Micha

Richard
29.03.2011, 19:55
Danke für die Hilfe. da scheine ich nicht der Einzige zu sein, mit diesem
Problem. Da jedoch in diesem Fall der PORTC nur zur Datenausgabe auf
2 Siebensegmentdecoder benutzt werden, werde ichs beim debuggen
ignorieren und muss eben nach den finalen Flash noch mal umfusen.
Schade, aber warscheinlich nicht zu ändern, da andere Programmiertools
als BASCOM meinen Horizont überschreiten. VG Micha

Moin moin gerade gefunden http://bascom-forum.de/index.php?topic=1890.0 vieleicht hilt das ja, ich habe noch nicht rein geschaut.

Gruß Richard

hardware.bas
30.03.2011, 20:04
Danke für den Tipp. Da jedoch meine Anmeldung bei diesem inhaltlich sicher
interessanten Forum trotz nervigem Prozedere nicht möglich war, hat es sich
dort erledigt. Schade, dass hier ein sicherlich interessanten Forum, durch
nervige Hackerspielereien weitere Interessenten abschreckt.
Im Gegensatz zum hiesigen Portal. VG Micha

Rone
30.03.2011, 23:24
Hallo!

Wenn Du mit einer aktuellen BascomVollversion unterwegs bist, kannst Du JTAG per Software abschalten.

Laut Hilfe: "DISABLED JTAG"

Das sollte Dein Problem lösen.

MfG
Rone

hardware.bas
31.03.2011, 04:21
Ja, ich habe die Vollversion.
Das probiere ich heutabend aus.
VG Micha

Richard
31.03.2011, 06:12
Danke für den Tipp. Da jedoch meine Anmeldung bei diesem inhaltlich sicher
interessanten Forum trotz nervigem Prozedere nicht möglich war, hat es sich
dort erledigt.


Häääh? Bei mir ging das einfach und schnell? Kann es sein das Du etwas "unbedarft" bist und Deinen Mangel mit Kritik am Forum kompensieren möchtest? Warum hat das Forum zig tausend Mitglieder die anscheinend kein Problem mit der Anmeldung haben/hatten?

Studio 4 gibt es kostenlos und damit ist fuse setzen ein Kinderspiel. aber für Dich anscheinend auch zu kompliziert?

Kopfschüttelnd Richard

hardware.bas
31.03.2011, 16:31
An Richard: Warum so sauer?
An Rone: Danke, klappt jedoch nicht.
VG Micha

Richard
31.03.2011, 18:09
An Richard: Warum so sauer?
An Rone: Danke, klappt jedoch nicht.
VG Micha

Ooooch das sieht nur so aus. :-)

Gruß Richard

hardware.bas
31.03.2011, 18:46
Auch wenns nicht zum Thema passt, aber da ich es angeschnitten habe:
Vielen Dank an Micha vom BASCOM-FORUM für die Hilfe. Nun bin ich
auch Mitglied dort... eine prima Ergänzung zum RN. VG Micha

Rone
04.04.2011, 07:22
Hallo!

Hab mir mal kurz Zeit genommen und das ganze selber ausprobiert.
Mit Mega32 und myAVR USBlight Programmer.
-Mit dem Programmer zugehörigen Programm zum Flashen klappt es wie es soll, JTAG ausschalten und bleibt ausgeschaltet.
-Aus Bascom heraus dasselbe.
-Der Befehl lautet:"Disable JTAG" ist ein Schreibfehler in der Hilfe. Auch damit lässt sich JTAG deaktivieren.

MfG
Rone

hardware.bas
04.04.2011, 15:53
Hallo, Rone und alle, die es lesen.... Ich habe warscheinlich vergessen, nach dem
Umfusen die Betriebsspannung des Atmega16 wegzunehmen. Jetzt funktioniert alles.
War sicher meine Dussligkeit. Trotzdem vielen Dank an alle. VG micha

for_ro
04.04.2011, 18:09
Warum sollte man den µC aus- und wieder einschalten müssen, um die Fuse bits permament zu setzen? Es reicht absolut, den Programmiermodus zu beenden. Dazu kann man den µC ausschalten, muss aber nicht.
Seite 224 ATMEGA8 Manual:
Latching of Fuses The fuse values are latched when the device enters Programming mode and changes of the
fuse values will have no effect until the part leaves Programming mode. This does not apply to
the EESAVE Fuse which will take effect once it is programmed. The fuses are also latched on
Power-up in Normal mode.