Hallo Forengemeinde! Kann man in dem bl.... AVR-Studio das einfügen eines zero-Bytes nach einem .db xyz irgend wie abschalten? Also so, dass das AVR-Studio die Flash-Adresse erst vor einem Befehl im Code-Segment die Adresse gerade biegt und nicht vor jeder Zeile. Oder gibt es wieder eine neue Version wo das möglich ist? Bin schon gaga vom Eingeben der Font-Bytes und möchte nicht noch mehr gaga werden, wenn ich zwei Zeilen mit .db xyz ändern muß zu .db xyz,xyz. MfG Andi
Ist beim avr Studio so nicht vorgesehen, würde wohl dann auch nicht mehr abwärtskompatibel sein. Im Codesegment arbeitet der Counter Word orientiert entsprechend der Busbreite. Bei IAR Assembler für den Atmel AVR ist das nicht der Fall. Den gibt`s auch zum kostenlosen Download.
Werde den IAR mal ausprobieren. Hoffentlich ist der dann kompatibel zum aktuellen AVR-Studio. Wenn nicht, mach ich die Font-Bytes mit dem IAR und versuche dann die HEX- oder BIN-Datei im AVR-Studio einzubinden. Ich hoffe, das geht dann irgend wie. MfG Andi
Ach ja, das wollt ich noch los werden. Die Entwickler vom AVR-Studio hätten doch von Anfang an daran denken können, die Byte-Adresse nach einem .db mit ungerader Anzahl an Bytes zu belassen wie sie ist und die erst zu begradigen bei einem Befehl außer .db, (Byte-Adresse + 1) / 2 um wieder auf die Word-Adresse zu kommen. Nicht umsonst lasse ich Strings nicht mit 0 sondern einem anderen Steuerzeichen beenden um mir das Abzählen der Zeichen zu ersparen nur damit zwischen den Strings, welche auf mehrere Zeilen verteilt sind, keine "0" eingefügt wird. Vielleicht ließt das ja jemand von den Entwicklern und führen das irgend wann mal als Option ein. MfG Andi
Dazu aber müsste der Atmel-Assembler im Programmbereich mit Byte-Adressen arbeiten. Tut er aber nicht, im Programmbereich arbeitet der Assembler mit Wort-Adressen. Und da ist das hier verlangte etwas schwierig.
So schwierig dürfte das nun auch nicht sein. Um in einer Zeile eine Kette von Data-Bytes zu erzeugen, muß der AVR-ASM sowieso in Byte weiterzählen und wenn das in einer Zeile mit 10 Bytes geht, warum dann nicht auch in einer Kette von 10 Zeilen mit je 1 Byte? Ich glaube auch nicht, das im AVR-ASM alles Word-Weise passiert, es wird nur dafür gesorgt, dank des PC in einem AVR, das jede Anweisung oder Befehl bei einer geraden Byte-Adresse beginnt. Im Fall von .db find ich das völligen Quatsch. MfG Andi
Da? Texte über eine Zeile hinweg gehen, habe ich bisher noch nie benötigt, eine komplette Ausgabe auf ein LCD 2*20 kriegt man bequem in eine Zeile. Vielleicht kann ja der neue Assembler auch die Zeilenverlängerung wie unter C. Die alten Assembler hatten allerdings einen Bug, dann stimmten alle RJMP und RCALL nicht mehr, wenn man nicht abgezählt hatte. Peter
Hallo Peter! Es geht mir im Moment nicht um Textausgabe sondern um Font-Definition für ein T6963C-LCD. Möchte Zeichen auf dem Grafikarray ausgeben, proportional und evtl. in alle Richtungen und auch evtl. große Zeichen. Das mit dem Umbruch einer Zeile habe ich in der Hilfe von AVR-Studio endlich gefunden und auch angewandt und auch endlich eine Lösung: ;18 Bytes in 18 Zeilen ;z { .db 6, \ 0b00000000, \ 0b00000000, \ 0b11111000, \ 0b00010000, \ 0b00100000, \ 0b01000000, \ 0b11111000, \ 0b00000000, \ 4, \ 0b00100000, \ 0b01000000, \ 0b01000000, \ 0b10000000, \ 0b01000000, \ 0b01000000, \ 0b00100000, \ 0b00000000 Hier werden 2 Zeichen (max. 5x8) mit je 9 Bytes definiert wobei das erste Byte die Pixelbreite inkl. Space (1 Pixel) angibt. Mit dem Backslash wird eine Zeile auf die nächste erweitert womit eine schöne, saubere Ansicht bleibt und ich jederzeit, ohne Krämpfe und ohne Font-Editor, was verändern kann. Mit dem Format, 1 Byte Pixelbreite und 8 Bytes Font-Daten oder Tabelle mit Pixelbreiten und danach die Fontdaten, bin ich noch nicht ganz schlüssig, aber das ist ja schon mal ein Anfang. MfG Andi
Danke Andi, das hat mir sehr geholfen. Fontdaten mit ungeraden Bytemengen je Buchstaben können jetzt im AVR Studio z.B. so aussehen: .CSEG FONT_5x8_DATA: .db 0x05, 0x08 ; width , height FONT_5x8: .db \ 0x00,0x00,0x00,0x00,0x00,/*0x00*/\ 0x78,0xAC,0x8C,0xAC,0x78,/*0x01*/\ 0x78,0xAC,0xEC,0xAC,0x78,/*0x02*/\ 0x70,0xF8,0x7C,0xF8,0x70,/*0x03*/\ 0x10,0x38,0xFE,0x38,0x10,/*0x04*/\ 0x18,0x52,0xFE,0x52,0x18,/*0x05*/\ 0x38,0x72,0xFE,0x72,0x38,/*0x06*/\ 0x00,0x00,0x00,0x00,0x00,/*0x07*/\ ... ... 0x00,0xA8,0xA8,0x50,0x00,/*0xFC*/\ 0x00,0x98,0xA8,0x48,0x00,/*0xFD*/\ 0x00,0x3C,0x3C,0x3C,0x3C,/*0xFE*/\ 0x00,0x00,0x00,0x00,0x00 /*0xFF*/ Letzte Zeile natürlich ohne Komma und Backslash.
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.