Hi! Habe grade folgendes Problem. Um 7-Segmentanzeigen ansteuern zu können habe ich mir im Flash eine Tabelle angelegt: digits: .db 0b11101110 ; 0 .db 0b01100000 ; 1 .db 0b11001101 ; 2 .db 0b11101001 ; 3 .db 0b01100011 ; 4 .db 0b10101011 ; 5 .db 0b10101111 ; 6 .db 0b11100000 ; 7 .db 0b11101111 ; 8 .db 0b11101011 ; 9 Hier meldet mir der Assembler aber für jede Zeile: warning: .cseg .db misalignment - padding zero byte D.h. er hängt an jedes Byte noch eine 0 dran da der Flash ja Wortorganisiert ist. Ja toll, ich möchte aber einfach dass alle Bytes einfach hintereinander stehen, ohne 0en dazwischen. Wenn ich folgende Schreibweise verwende funktioniert es. digits: .db 0b11101110, 0b01100000 .db 0b11001101, 0b11101001 .db 0b01100011, 0b10101011 .db 0b10101111, 0b11100000 .db 0b11101111, 0b11101011 Es funktioniert so zwar aber sieht nicht hübsch aus. Muss ich irgendwo noch was einstellen? mfg Paul H.
Was kann der Assembler für die Flash Organisation im AVR? entweder du machst die tabellen einträge gradzahlig oder du lebst mit der fehlermeldung.
Hi Wenn du es 'hübsch' haben willst, musst du halt mit dem doppelten Tabellenoffset rechnen. MfG Spess
Man kann es auch richtig hübsch machen, damit es egal ist, wo welches Segment angeschlossen ist. Ich ordne die Pins immer für ein optimales Layout zu und dann trage ich die Zuordnung im Programm ein:
1 | .equ _A = 0x10 ;segment order |
2 | .equ _B = 0x08 |
3 | .equ _C = 0x04 |
4 | .equ _D = 0x02 |
5 | .equ _E = 0x01 |
6 | .equ _F = 0x40 |
7 | .equ _G = 0x20 |
8 | .equ _DP = 0x80 ;decimal point |
9 | |
10 | .equ _0 = ~( _A+_B+_C+_D+_E+_F ) ;number pattern, low active |
11 | .equ _1 = ~( _B+_C ) |
12 | .equ _2 = ~( _A+_B+ _D+_E+ _G ) |
13 | .equ _3 = ~( _A+_B+_C+_D+ _G ) |
14 | .equ _4 = ~( _B+_C+ _F+_G ) |
15 | .equ _5 = ~( _A+ _C+_D+ _F+_G ) |
16 | .equ _6 = ~( _A+ _C+_D+_E+_F+_G ) |
17 | .equ _7 = ~( _A+_B+_C ) |
18 | .equ _8 = ~( _A+_B+_C+_D+_E+_F+_G ) |
19 | .equ _9 = ~( _A+_B+_C+_D +_F+_G ) |
20 | .equ Blank = ~( 0 ) |
21 | .equ Minus = ~( _G ) |
22 | |
23 | number_code: |
24 | .db _0, _1, _2, _3, _4, _5, _6, _7, _8, _9 |
Peter
ok hab gerade im tutorial den entsprechenden code-teil entdeckt der die wortweise adressierung berücksichtigt. danke. mfg paul h.
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.