Ich mach mal einen neuen Thread auf, weil der alte Titel überhaupt nicht zu dem interessanten Thema paßt. Er würde in der Versenkung verschwinden und niemand würde ihn je wiederfinden. Original: Beitrag "Re: AVR Assembler-Frage" der alte Hanns schrieb: > arbeite mit einem entsprechenden AVR-Studio, das aber > meckerte, dass '.org' in einem macro nicht zulässig sei. Also beim alten AVR-Studio 4.18 mit Assembler2 geht es. Sonst hätte ich das Macro ja nicht geschrieben. Beitrag "Re: AVR Assembler-Frage" Die Sam-BAM ist wirklich sehr ausgefeilt, mit meinen Schnellschüssen nicht zu vergleichen. Darf man die benutzen? Das Problem mit der überschüssigen Bitzeit ist elegant gelöst. Die Schleife für Bit 4..7 muß ich mal durch den Simulator jagen. So trocken im Code lesen, ist mir das zu komplex. Mein Geradeaus-Code braucht mehr Flash, aber die PWM wird ja nicht der Codefresser sein. Das Sync wird an 2 Stellen aufgerufen, aber nach exakt der gleichen Zyklenzahl. Man darf die Latenzzeit auch nicht zu lang machen, damit alles noch in die 256 Zyklen paßt. Für nen weiteren Interrupthandler wird die Luft ziemlich knapp. Ich denke auch nicht, daß ein Lichteffektgerät weitere Interrupts braucht. Tasten, I2C, UART kann man bequem pollen. Für PWM >8Bit habe ich mir überlegt, den Timer T1 zu benutzen. Man hat dann 2 Interrupthandler, OCR1A für Bit 0..7 und OCR1B für die höheren Bits. Ist zwar mehr Code, aber man kann bequem die Startzeiten getrennt einstellen und muß beim Zyklenzählen nicht auf Gleichheit achten.
:
Bearbeitet durch User
Peter Dannegger schrieb: > Die Sam-BAM ist wirklich sehr ausgefeilt, mit meinen Schnellschüssen > nicht zu vergleichen. > Darf man die benutzen? Ja klar, dafür hab ich sie hochgeladen > Man darf die Latenzzeit auch nicht zu lang machen, damit alles noch in > die 256 Zyklen paßt. Für nen weiteren Interrupthandler wird die Luft > ziemlich knapp. 256 Zyklen sollten eigentlich reichen. Wenn man längere Interrupts benutzen möchte kann man diese im Interrupt wieder freigeben. > Für PWM >8Bit habe ich mir überlegt, den Timer T1 zu benutzen. Man hat > dann 2 Interrupthandler, OCR1A für Bit 0..7 und OCR1B für die höheren > Bits. > Ist zwar mehr Code, aber man kann bequem die Startzeiten getrennt > einstellen und muß beim Zyklenzählen nicht auf Gleichheit achten. Ein 16bit Timer macht das ganze natürlich viel komfortabler. Manche kleinen Avrs haben aber keine. Den Code kann man natürlich noch ein wenig auf Geschwindigkeit optimieren. Insgesamt gewinnt man aber damit nur wenig: Die CPU-Belastung liegt je nach Auslösung bei wenigen Prozent. Peter Dannegger schrieb: > Das Sync wird an 2 Stellen aufgerufen, aber nach exakt der gleichen > Zyklenzahl. Fast. Bei bam_step ist es ein Takt mehr. Man muss aber nicht zwingend darauf achten, dass die Aufrufe zur gleichen Zeit erfolgen. Solange die CYCLES_TO_SYNC Definition richtig eingestellt ist, wird beim früheren Aufruf entsprechend länger verzögert. Die Definition muss dann die maximalen Takte bis zum Aufruf enthalten.
:
Bearbeitet durch User
an Sam In Ihrem Programm sehe ich als Zeitbasis > TIMER0_OVF_vect: , kein CTC. Wie bekommen Sie Danneggers ursprünglichen Fehler in Griff, dass die größte Zeitscheibe ein Takt zu lang ist? an Peter Dannegger >> meckerte, dass '.org' in einem macro nicht zulässig sei. > Also beim alten AVR-Studio 4.18 mit Assembler2 geht es. Wie bringe ich dem 4.18 bei, sich die bookmarks (F2) zu merken?
an Sam Die Frage hat sich erledigt, ich war noch zu sehr im Hardware-Denken verhaftet.
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.