hallo! habe schon wieder eine frage. wie kann ich denn bei der datenübertragung eine pause von 4bit erzeugen? mit einem atmega8! kann mir da jemand helfen? dachte an eine schleife oder so, aber wie bekomm ich da die zeit von 4bit hin?
Die Bitzeit kannst Du aus der Baudrate errechnen und die Pause für 4 Bit kannst Du entweder mit einem Timer oder mit einer Schleife realisieren. In Assembler ist die Zeitbestimmung mit der Schleife einfach, weil Du die Zeit für jeden einzelnen Befehl anhand der Befehlsliste ermitteln kannst. Einfaches Beispiel: nop nop nop nop Damit vertrödelt der Prozessor 4 Taktzyklen (was nicht identisch mit Deiner 4-Bit-Pause ist). Gruß, Frank
Hallo Ralph, aus welchem Grund brauchst du denn die Verzögerung und soll die Verzögerung zwischen den einzelnen Bytes sein? Gruß Oliver
hi oliver! ja, die pause soll immer zwischen jedem byte entstehen und is 4 bit lang. also in meinem fall ca 400microsecunden. hast du eine idee?
Hallo! Ich denke mit dem Hardware UART geht das nicht. Da hilft nur, das UART selber per Software zu erzeugen ... Dann ist es einfach!
ja, das mag sein. aber ich bin noch ein anfänger und kann es leider nicht. habe es jetzt geschafft, dass das signal ausgegeben wird. fehlen eben nur noch die pausen und das antriggern des signals.
gibt es da eine möglichkeit ein beispielprogramm irgendwo herzubekommen??? damit ich mir das anschauen kann???
@Ralph Hi, bei den Links findest du einen Verweis auf den AVR delay loop genearator, ein kleines Windows-Programm, das dir nach Vorgabe der Zeit ein Stück Assembler-Code generiert. Den kannst du dann in dein Programm mittels Drag/Drop importieren.
@Ralph: Tut mir leid, vergiss das mit dem Software UART! Ich habe etwas überlesen. ich dachte, du willst nach jedem BIT 4 bit Pause machen. Du hast aber Byte geschrieben. Das geht natürlich auch mit dem Hardware UART, einfach mittels nops nach dem Senden eines Bytes das Senden des nächsten verzögern. Eben wie oben beschriben. Ich werd die Beiträge nächstes Mal genauer lesen! Grüße Steffen
Du setzt einfach einen Timerinterrupt mit der Länge von 14 Bitzeiten auf und in diesem startest Du dann immer das Senden des nächsten Bytes. Alternativ könntest Du, wenn schon 2 Bitzeiten Pause reichen würden, die UART auf 9 Bit + 2 Stopbits setzen. Peter
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.