Salve Ich verwende meißtens C CodevisionAVR zum Programieren. Jetzt stellt sich mir eine Frage. Wie werden die einzelnen Datenregister verwendet? Werden sie auch bei der Verwendung von unsigned char bzw. unsigned int Variablen verwendet oder wird bei diesen Variablen dierekt auf den SRAM zugegriffen? Mich interresiert es desswegen weil ich mir eine Include erstellen will um meine LCD-Display's auch aus C herraus ansprechen zu können. Ich verwende die Assembler-includes von ...HanneS... als Anleitung. Da ich zur einfacheren Ansteuerung die Datenregister dierekt verwenden will/muß, möchte ich wissen in wie weit diese Register beim Arbeiten mit normalen Variablen und Funktionen verwendet werden. mfg Sepp
Wie C das managt, weiß ich auch nicht. Aber du musst das nicht (wie ich) über Exclusiv-Register machen. Du kannst im Prinzip alle Variablen im SRAM halten, nur dauert dann der Zugriff etwas länger. Der empfundene "Nachteil", dass dir C nicht freiwillig erzählt, wo es die Werte speichert ist ja eigentlich ein "Vorteil" von C, dass man sich darum nicht kümmern muss. Wenn du in C auf LCD zugreifen willst, dann schau dich mal bei Peter Fleury um. Ich selbst habe mir das nicht angesehen, aber ich programmiere auch nicht in C. ...
Es steht ja alles in der Hilfedatei von CodeVision. So weit, wie ich mich daran erinnere, sind ja einige Registers fuer spezifische Aufgaben vom Compiler verwendet, die kann man nicht ueberschreiben. 4 davon verwendet der Compiler fuer die Uebergabe von Variablen (so was aehnliches wie Stack), deshalb geht's bei CodeVision nur einn DWord an die Routine zu uebergeben (deshalb soll man lieber Pointer einsetzen). Und einige Registers kann man fuer irgendwelche eigene Zwecke einsetzen.
Dass CodeVision einige Register für seine eigenen Routinen verwendet habe ich schon rausgefunden. Leider habe ich in der Hilfe noch nicht gesehen welche genau. (Wie's aussieht wird immer die Obere Hälfte der Datenregister verwendet.) Mich interresiert die Verwendung der Register nämlich auch weil ich demnächst mit einem AVR-Mikrocontroller arbeiten möchte, welcher neben den Datenregistern kein SRAM hat(ATtiny15), ich aber sollange es geht mit C arbeiten möchte. mfg Sepp
@...HanneS... Ich will die Register bei den LCD-Routinen vor allem dazu verwenden um aus ihnen einfach boolsche Variablen zu basteln. PORTD.1 = 1; und if(PIND.1 == 1) { } ist doch viel schöner als: PORTD |= 2; und if((PIND & 2) == 2) { } Sowas ist leider nur mit Registern möglich. Und außerdem muß ich, wenn ich mit dem ATmega15 in C programieren will sowiso auf die Daten-Register zurückgreifen. mfg Sepp
Na den Tiny15 solltest du aber zum Anlass nehmen, dich etwas mit ASM zu beschäftigen. Einfacher als ASM geht es nunmal nicht. Da hast du den vollen Überblick über die Ressourcen. Und etwas ASM-Wissen wird dir beim Umgang mit C keinesfalls schaden, C erzeugt auch nur ASM. ...
ASM kann ich. Sogar ziemlich einigermaßen gut ;o)) Es gibt da da leider ein fast unüberwindliches Problem. Ich bin STINKEND FAUL!!! Und außerdem lebe ich nach dem Motto: Wieso einfach (mit ASM) wenn es kompliziert auch fast so einfach(mit C ) ist. mfg Sepp
OK du hast gewonnen. Ich werde jetzt auch teilweise in ASM programieren. Man kann bei Code Vision AVR zwar auf die Register zugreifen, aber da hat man nur scherereien. (Ich bekomme einen Fehler gemeldet, aber leider nicht wo, was, warum.) Ich werde also doch lieber beim ATtiny15 auf ASM umsteigen. (Es würde zwar funktionieren ihn in C zu programieren aber dass ist mir zu stressig.) mfg Sepp PS.: Ich raufe mir gerade meine letzten Haare aus. Dieses ****** LCD Display will sich ums Verrecken nur unter ASM initialisieren lassen. (Dabei ist ihm egal ob ich da meinen oder deinen Code verwende.) Sobald ich aber auf C umsteige werden mir nur schwarze Blöcke entgegengeworfen. Ich vermute mal stark dass ich da irgendwo Timingprobleme habe. Aber irgendwo ist leider eine etwas ungenaue Ortsangabe und ich muß weiter lustiges Fehlerraten spielen.
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.