Bascom EA-DOG Display anzeigefehler nach µC-Tausch

Hallo,

Würden Dir denn dann die knapp 64K reichen?
(kannst Du die verwendete lib mal hochladen oder so? Dann schau ich bei Gelegenheit mal selbst rein)
da muß man aufpassen !
Die meißten Libs dürfen nur im kompilierten Zustand und NICHT im Quelltext weitergegeben oder veröffentlicht werden. Also vorher in den Kopf der Lib reinsehen um da sicher zu gehen.

Gruß
Dino
 
Kann es sein, daß die Variable ROMSIZE bei Dir nicht stimmt?
...mmh- in wie fern meinst du das? Meinst du dass die Definition des Atmega1284p in Bascom
nicht stimmt?

@Dino: Ja hast recht, die lib darf nicht upgeloadet werden - sonst hätte ich sie berreits hochgeladen...
 
Hallo,

...mmh- in wie fern meinst du das? Meinst du dass die Definition des Atmega1284p in Bascom
nicht stimmt?
ich hab mal bei mir reingesehen (BASCOM 2.0.7.0) ...

Code:
[DEVICE]
FILE=[B][COLOR="#FF0000"]M1284P[/COLOR][/B]DEF.DAT        ; file name
pdf=ATmega1284P.pdf
pdfurl=http://atmel.com/dyn/resources/prod_documents/doc8059.pdf
device = ATMEGA1284P
UP = M1284P              ; shortname for micro
RAMSTART = $100         ; start of SRAM memory
_CHIP=103            ; FOr backwards compatibility
RAMEND  =$40FF	;Last On-Chip SRAM location
XRAMEND =$40FF
E2END	=$FFF
[B][COLOR="#FF0000"]FLASHEND=$FFFF[/COLOR][/B]
FlashSizeText = 128 KB
SRAM = 16384           ; SRAM size
EEPROM = 4096           ; EEPROM size
XRAMINDEX = 0           ; default no XRAM selected
XRAM = 0                ; do not allow XRAM
sollte das bei 128kByte nicht "FLASHEND=$1FFFF" heißen ?
Ober sind damit nicht die Bytes sondern die Words (wegen den 16Bit-Befehlen) gemeint ?

Im Datenblatt steht da ...
ATmega164A/PA/324A/PA/644A/PA/1284/P ... ... 0x1FFF/0x3FFF/0x7FFF/0xFFFF
und danach würde es passen. Also wären dann die Words gemeint.

Es gab aber auch mal Fehler in den Definitionsdateien. Da waren glaube ich mal Registeradressen oder Timer wegen Copy/Paste mit falschen Adressen zu den Namen oder mit den Namen der kleineren Prozessoren.

EDIT: Beim Mega32 steht da "FLASHEND=$3FFF". Das müßte dann bei Bytes aber 7FFF heißten. Es werden also die Words angegeben. Im Datenblatt des Mega32 steht auf $3FFF.

Gruß
Dino
 
Moin Dino,

werd das mal nachschauen, den ich glaub ich hab noch die Version 1.1.5 oder so...

Edit: hier mal meine Dat; sieht eigl ok aus:

Code:
[DEVICE]
FILE=M1284PDEF.DAT        ; file name
pdf=ATmega1284P.pdf
pdfurl=http://atmel.com/dyn/resources/prod_documents/doc8059.pdf
device = ATMEGA1284P
UP = M1284P              ; shortname for micro
RAMSTART = $100         ; start of SRAM memory
_CHIP=103            ; FOr backwards compatibility
RAMEND  =$40FF	;Last On-Chip SRAM location
XRAMEND =$40FF
E2END	=$FFF
FLASHEND=$FFFF
FlashSizeText = 128 KB
SRAM = 16384           ; SRAM size
EEPROM = 4096           ; EEPROM size
XRAMINDEX = 0           ; default no XRAM selected
XRAM = 0                ; do not allow XRAM
WAITSTATE=0             ; no wait state
WAITSTATEENABLE=0       ; disable setting the wait state
XRAMACCESS=0            ; no external memory access selected
XRAMACESSENABLE=0       ; external memory access can not be selected
UBRR = 4096             ; calculation of baudrate
TINY= 0                  ; no tiny micro without sram
HWMUL=1                 ; this chip has hardware multiplication
MOVW=1                  ; micro has movw instruction 
ROMSIZE = 131072         ; size of rom in bytes
...

mfg
 
sieht so aus als würde dieser Tread langsam in Vergessenheit geraten...:(
 
Hi,

sieht so aus als würde dieser Tread langsam in Vergessenheit geraten...:(
naja ... irgendwie muß man die vorhandene Zeit verteilen. Bei mir ist grad etwas weniger "Forumzeit" eingeplant.

werd das mal nachschauen, den ich glaub ich hab noch die Version 1.1.5 oder so...
Edit: hier mal meine Dat; sieht eigl ok aus:
Code:
[DEVICE]
FILE=M1284PDEF.DAT        ; file name
pdf=ATmega1284P.pdf
pdfurl=http://atmel.com/dyn/resources/prod_documents/doc8059.pdf
device = ATMEGA1284P
UP = M1284P              ; shortname for micro
RAMSTART = $100         ; start of SRAM memory
_CHIP=103            ; FOr backwards compatibility
RAMEND  =$40FF	;Last On-Chip SRAM location
XRAMEND =$40FF
E2END	=$FFF
FLASHEND=$FFFF
FlashSizeText = 128 KB
...
sieht OK aus. Hmmm ... schonmal im Bascom-Forum angefragt ? Da wuseln ja auch die Programmierer von Bascom und den Bibliotheken rum. Eventuell kommt da irgendwas bei raus. ( soll jetzt aber kein abwimmeln sein :eek: ) Ich wüßte da im Moment nicht wo man weitersuchen könnte.

Gruß
Dino
 
Font im Programm auslesen!

Hallo,

hab mal eben ne Zwischenfrage:

Ist es möglich/wie die fonts von Bascon vom Program aus auszulesen,
also die Bascom-fonts für ne eigende Routine(keine lib) nutzen?

Gruß
AVRuser
 
...die font-dateien sehen etwa so aus:
Code:
My6_8:
$asm
.db 1,6,6,0
.db 0,0,0,0,0,0 ;  
.db 0,0,0,95,0,0 ; !
.db 0,3,7,0,3,7 ; "
.db 0,36,126,36,126,36 ; #
.db 0,36,43,106,18,0 ; $
.db 0,99,19,8,100,99 ; %
.db 0,54,73,86,32,80 ; &
.db 0,0,3,7,0,0 ; '
.db 0,0,62,65,0,0
.db 0,0,65,62,0,0
.db 0,8,62,28,62,8 ; *
.db 0,8,8,62,8,8 ; +
.db 0,0,96,224,0,0 ; ,
.db 0,8,8,8,8,8 ; -
.db 0,0,0,96,96,0 ; .
.db 0,32,16,8,4,2 ; /
.db 0,62,81,73,69,62 ; 0
.db 0,0,66,127,64,0 ; 1
.db 0,98,81,73,73,70 ; 2
.db 0,34,73,73,73,54 ; 3
.db 0,24,20,18,127,16 ; 4
.db 0,47,73,73,73,49 ; 5
.db 0,60,74,73,73,48 ; 6
.db 0,1,113,9,5,3 ; 7
.db 0,54,73,73,73,54 ; 8
.db 0,6,73,73,41,30 ; 9
.db 0,0,0,108,108,0 ; :
.db 0,0,0,108,236,0 ; ;
.db 0,8,20,34,65,0 ; <
.db 0,36,36,36,36,36 ; =
.db 0,0,65,34,20,8 ; >
.db 0,2,1,89,9,6 ; ?
.db 0,62,65,93,85,30 ; @
.db 0,126,17,17,17,126 ; A
.db 0,127,73,73,73,54 ; B
.db 0,62,65,65,65,34 ; C
.db 0,127,65,65,65,62 ; D
.db 0,127,73,73,73,65 ; E
.db 0,127,9,9,9,1 ; F
.db 0,62,65,73,73,122 ; G
.db 0,127,8,8,8,127 ; H
.db 0,0,65,127,65,0 ; I
.db 0,48,64,64,64,63 ; J
.db 0,127,8,20,34,65 ; K
.db 0,127,64,64,64,64 ; L
.db 0,127,2,4,2,127 ; M
.db 0,127,2,4,8,127 ; N
.db 0,62,65,65,65,62 ; O
.db 0,127,9,9,9,6 ; P
.db 0,62,65,81,33,94 ; Q
.db 0,127,9,9,25,102 ; R
.db 0,38,73,73,73,50 ; S
.db 0,1,1,127,1,1 ; T
.db 0,63,64,64,64,63 ; U
.db 0,31,32,64,32,31 ; V
.db 0,63,64,60,64,63 ; W
.db 0,99,20,8,20,99 ; X
.db 0,7,8,112,8,7 ; Y
...
.db 0,60,96,48,96,60 ; w
.db 0,108,16,16,108,0 ; x
.db 0,156,160,96,60,0 ; y
.db 0,100,84,84,76,0 ; z
.db 0,8,62,65,65,0 ; {
.db 0,0,0,119,0,0 ; |
.db 0,0,65,65,62,8 ; }
.db 0,2,1,2,1,0 ; ~
.db 0,0,0,0,0,0 ; 
$end asm

Was heisst/macht das .db?
 
.db bewirkt, daß die folgenden bytes direkt im Flash "abgespeichert" werden. Der Flash ist auch nur eine Folge von words - also byte-Paaren. "My6_8:" ist eine Adresse (der Compiler/Assembler macht da halt die Zahl draus). Die Reihenfolge der Zeichen ist festgelegt, die Breite eines einzelnen Zeichen (in Pixeln) auch. Somit kannst Du also aus der Font-Adresse, der ASCII-Nummer und der Zeichenbreite die Flash-Adresse des ersten Bytes des zu zeichnenden Zeichens Errechnen. Wenn diese Adresse ins Z-Doppelregister und das RAMPZ-Register eingetragen ist (kann man sich dann quasi als 3-byte-Register vorstellen), kann man mit ELPM dieses erste byte aus dem Flash in ein Rechenregister laden (und von dort ans Display senden (nach SPDR oder so schreiben?). AFAIK unterstützt ELPM auch Autoinkrement ("ELPM Rd, Z+"), also mußt Du das nur zeichenbreite-oft durchführen (hier also 6mal). Kompliziert wird das bei variable-width-fonts.
Schreib Dir für eine .db-Zeile da oben(nicht die erste) mal jedes der bytes in Bitschreibweise untereinander , dann sollte es klar werden.
Hab ich Deine Frage halbwegs beantwortet?
 
Hallo,

Was heisst/macht das .db?
sie mal beim AVR-Studio bei der Hilfe nach. Bei Punkt AVR-Tools-User-Guide findest du dann alles gewünschte ...
AVR_ASM-Directives.png
Das sind "Assembler-Direktiven". Unter diesem Stichpunkt wirst du im Internet mit Sicherheit noch wesentlich mehr infos bekommen. Such einfach mal nach "AVR Assembler Direktiven".

Gruß
Dino
 
Hallo Leute,

erstmal vielen Dank für eure Hilfe!

Ich habe es jetzt hinbekommen den Fehler zu umgehen, indem
ich die Bascom-lib nur noch für die Bitmaps nehme und alles andere
selbstgeschrieben hab...

Gruß:
AVRuser
 
Glückwunsch!
Also haste quasi meinen Vorschlag aus #20 umgesetzt.
Haste trotzdem mal Kontakt zu MCS aufgenommen, und den (vermutlichen) Bug gemeldet? Letztendlich muß das Problem ja irgendwo beim Schreiben der Zeichen-Daten in den Flash, oder eben beim lesen derselben aus dem Flash liegen. Bzw beim berechnen der jeweiligen Anfangsadressen. Bei den Bildern geht es ja.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)