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
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
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
..da war doch eine Besonderheit in der Adressierart oder wie man den Port ansprechen kann/soll.. grübel ich weiß es nicht mehr genau..
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.