-         

Ergebnis 1 bis 5 von 5

Thema: Problem beim Compilieren

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.05.2005
    Ort
    Rott am Inn
    Alter
    29
    Beiträge
    373

    Problem beim Compilieren

    Anzeige

    Wenn ich mein Programm Compiliere

    $regfile = "M32def.dat"
    $crystal = 8000000
    $baud = 9600
    declare sub Read1820
    declare sub CRCit
    declare sub Temperature
    dim bd(9) as byte
    dim i as byte , tmp as byte
    dim CRC as byte
    dim T as integer , T1 as integer
    dim v as byte
    Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
    Config Lcd = 16 * 4
    Config 1wire = Portd.2
    cursor off noblink
    cls
    Locate 1 , 1 : Lcd "Brutkasten"
    locate 2 , 1 : lcd "T="
    do
    Temperature
    waitms 250
    loop
    End

    '//////////////////////////////////////////////////////////////////////////////
    sub Temperature ' actual measuring
    1wwrite &hcc : 1wwrite &h44 ' start measure
    waitms 300 ' wait for end of conversion
    Read1820 ' read 9 bytes
    if Err = 1 then ' if there is no sensor
    locate 2 , 4 : lcd "-- " ' we put "-- " on LCD
    else
    if CRC = 0 then ' sensor present, check CRC
    locate 2 , 4 : lcd T ' CRC OK, print T*10 on LCD
    else
    locate 2 , 4 : lcd "** " ' CRC NOT OK, "** " on LCD
    end if
    end if
    end sub
    '//////////////////////////////////////////////////////////////////////////////
    sub Read1820 ' reads sensor ans calculate
    ' T for 0.1 C
    1wreset ' reset the bus
    1wwrite &hcc ' read internal RAM
    1wwrite &Hbe ' read 9 data bytest
    bd(1) = 1wread(9) ' read bytes in array
    1wreset ' reset the bus
    CRCit ' ckeck CRC
    if CRC = 0 then ' if is OK, calculate for
    tmp = bd(1) and 1 ' 0.1C precision
    if tmp = 1 then decr bd(1)
    T = makeint(bd(1) , bd(2))
    T = T * 50 : T = T - 25 : T1 = bd( - bd(7) : T1 = T1 * 100
    T1 = T1 / bd( : T = T + T1 : T = T / 10
    end if
    end sub
    '//////////////////////////////////////////////////////////////////////////////
    sub CRCit ' calculate 8 bit CRC
    ' bigger but faster
    CRC = 0 ' needs a 256 elements table
    for i = 1 to 9
    tmp = CRC xor bd(i)
    CRC = lookup(tmp , crc
    next
    end sub
    '//////////////////////////////////////////////////////////////////////////////
    crc8:
    data 0 , 94 , 188 , 226 , 97 , 63 , 221 , 131 , 194 , 156
    data 126 , 32 , 163 , 253 , 31 , 65 , 157 , 195 , 33 , 127
    data 252 , 162 , 64 , 30 , 95 , 1 , 227 , 189 , 62 , 96
    data 130 , 220 , 35 , 125 , 159 , 193 , 66 , 28 , 254 , 160
    data 225 , 191 , 93 , 3 , 128 , 222 , 60 , 98 , 190 , 224
    data 2 , 92 , 223 , 129 , 99 , 61 , 124 , 34 , 192 , 158
    data 29 , 67 , 161 , 255 , 70 , 24 , 250 , 164 , 39 , 121
    data 155 , 197 , 132 , 218 , 56 , 102 , 229 , 187 , 89 , 7
    data 219 , 133 , 103 , 57 , 186 , 228 , 6 , 88 , 25 , 71
    data 165 , 251 , 120 , 38 , 196 , 154 , 101 , 59 , 217 , 135
    Data 4 , 90 , 184 , 230 , 167 , 249 , 27 , 69 , 198 , 152
    Data 122 , 36 , 248 , 166 , 68 , 26 , 153 , 199 , 37 , 123
    data 58 , 100 , 134 , 216 , 91 , 5 , 231 , 185 , 140 , 210
    data 48 , 110 , 237 , 179 , 81 , 15 , 78 , 16 , 242 , 172
    data 47 , 113 , 147 , 205 , 17 , 79 , 173 , 243 , 112 , 46
    data 204 , 146 , 211 , 141 , 111 , 49 , 178 , 236 , 14 , 80
    data 175 , 241 , 19 , 77 , 206 , 144 , 114 , 44 , 109 , 51
    data 209 , 143 , 12 , 82 , 176 , 238 , 50 , 108 , 142 , 208
    data 83 , 13 , 239 , 177 , 240 , 174 , 76 , 18 , 145 , 207
    data 45 , 115 , 202 , 148 , 118 , 40 , 171 , 245 , 23 , 73
    data 8 , 86 , 180 , 234 , 105 , 55 , 213 , 139 , 87 , 9
    data 235 , 181 , 54 , 104 , 138 , 212 , 149 , 203 , 41 , 119
    data 244 , 170 , 72 , 22 , 233 , 183 , 85 , 11 , 136 , 214
    data 52 , 106 , 43 , 117 , 151 , 201 , 74 , 20 , 246 , 168
    data 116 , 42 , 200 , 150 , 21 , 75 , 169 , 247 , 182 , 232
    data 10 , 84 , 215 , 137 , 107 , 53

    Schreibt er immer
    Error:999 Line: 94 DEMO/BETA only supports 2048 bytes of code
    an was kann das liegen
    und wie kann ich es beheben?
    Danke [/code]

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Ich glaube die Fehlermeldung ist klar. Du scheinst die Demo-Version von BASCOM-AVR zu verwenden und diese ist auf maximal 2KB erzeugten Code begrenzt. Dein Programm erzeugt 2144 Bytes Programmcode
    Du hast nun 2 Möglichkeiten:
    Entweder die Programmgröße auf dieses Limit reduzieren oder die Voll-Version zu kaufen. Ich würde Dir zu letzterem raten, da BASCOM-AVR ein sehr guten Preis/Leistungsverhältnis hat und für jeden, der ATMEL AVR Prozessoren mit der Programmsprache BASIC programmieren will es meines Erachtens der beste Compiler ist.
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    in der neuesten Bascom Demoversion ist die Beschränkung auf 4 KB angehoben worden. (Steht so wenigstens in der History.txt)
    Vielleicht reichen dir ja erst einmal 4 KB..

    außerdem geht folgende Zeile zB. nicht:
    "T = T * 50 : T = T - 25 : T1 = bd(Cool - bd(7) : T1 = T1 * 100 "
    Bei Bascom mußt du leider immer alles schön einzeln und hintereinander machen.

    Also x=b*c / d
    geht nicht

    Hilfsvariable= b*c
    x= hilfsvariable / c

    das geht.
    Gruß
    Christopher

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Diese Zeile wird vom Compiler akzeptiert, da die einzelnen Statements mit Doppelpunkt voneinander getrennt sind. Dieses Forum ersetzt allerdings manche Kombinationen mit ) wie bei bd(x) mit Smileys und beim rauskopieren und einfügen in die BASCOM-AVR wird dadurch der Code verändert, was wiederum Compiler-Fehler generiert.
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Füg mal
    Code:
    $lib "mcsbyteint.LBX"
    im Listing mit ein. Also so...
    Code:
    $regfile = "M32def.dat" 
    $crystal = 8000000 
    $baud = 9600 
    $lib "mcsbyteint.LBX"
    declare sub Read1820 
    declare sub CRCit
    Es kann sein, das du damit unter die 2kb-Grenze kommst.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •