mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit PortF bei ATMega128


Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

Ich brauche für ein Projekt am PortF
2 analoge Eingänge und 6 digitale Ausgänge.

Ich hab den Port auch meiner Meinung nach richtig eingestellt.
Bit 0  |in | |T|
Bit 1  |in | |T|
Bit 2  |out| |P|
Bit 3  |out| |P|
Bit 4  |out| |P|
Bit 5  |out| |P|
Bit 6  |out| |P|
Bit 7  |out| |P|

Komischerweise brindt CodeVisionAVR bei diesem Programmteil
eine Fehlermeldung!?

      if (PIND.4 == 1)
        {
        PORTF.2 = 0;
        delay_ms(500);
        PORTE.2 = 1;
        }
      if (PIND.5 == 1)
        {
        PORTE.3 = 0;
        delay_ms(500);
        PORTE.3 = 1;

Laut Datenblatt kann man beim ATMega128 diesen Port für beides verwendet 
werden.
Hab auch noch etwas gelesen von JTAG und 103C ausschalten,
nur wo geht das im CodeVisionAVR?

Bitte um Hilfe - Danke

LG Roman

Autor: max.p (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

JTAG und der 103 kompatibilitätsmodus werden über die Fusebits 
deaktiviert. Ich kenn CodeVisionAVR nicht, aber ich würde sagen die 
Fusebits sin "in der nähe" der Funktion zum übertragen des Codes auf den 
MC.

Max

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die rasche Antwort

Hab das "JTAG" und "M103C" aktiviert und deaktiviert
und wollt den Code kompilieren.

while (1)
      {
      if (PIND.6 == 0)
          {
          PORTE.4 = 1;
          delay_ms(500);
          PORTE.4 = 0;
          }
      if (PIND.4 == 1)
          {
          PORTF.2 = 0;
          delay_ms(500);
          PORTF.2 = 1;
           }

       };

CodevisionAVR lässt den Code aber nicht compilieren und
bringt immer die Fehler "Code has no Effect" und Missing ';'

Komischerweise wenn ich statt PORTF.2 -> PORTE.2 nehme kann ich alles 
fehlerfrei kompilieren!!!

Kann es sein das der PORTF beim ATMega128 nicht als digitaler 
Ausgangsport verwendet werden kann ??

LG Roman

Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..da war doch eine Besonderheit in der Adressierart oder wie man den 
Port ansprechen kann/soll.. grübel

ich weiß es nicht mehr genau..

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mal in die Register-Summary im Datemblatt geschaut und PortF 
und das dazugehörige Richtungsregister DDRF liegen nicht mehr im 
normalen IO-Bereich von 0x00 bis 0x3F. Die außerhalb liegenden Register 
muß man ansprechen wie RAM-Speicherstellen.
Das eigentliche RAM startet dann ab 0x100.
Siehe Seiten 365-367 im Datenblatt.
Ich nehme mal an, daß der Compiler für diese Art von Port-Zuweisungen 
die normalen In/Out-Befehle verwendet, das würde der Logik der 
Fehlererscheinung entsprechen.
In/Out kann nur von 0x00 - 0x3F adressieren, die Adresse ist Teil des 
OpCodes, deshalb der eingeschränkte Bereich. Spart dafür einen Takt ein.

Gruss
Jadeclaw

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aha .... das klingt nicht sehr einfach,
muss ich mir näher mal anschaun.

Danke vorerst mal!
Ging sehr rasch!
Ein großes Lob an die Gemeinde  ;-))

LG Roman

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.