Das Elektor-Forum schließt seine Pforten (siehe auch http://www.elektormagazine.de/forum). Ab Freitag, den 15. März, ist es nicht mehr möglich, sich im Forum einzuloggen. Alle Inhalte des Forums bleiben jedoch bis Ende März noch sichtbar. Am 01. April wird das Forum schließlich komplett geschlossen.

LB12 checkbox 3_1

Postby subzero » Fri Jul 16, 2010 12:00 am

hi,

ich habe jetzt wieder etwas zeit und habe mal mit dem LB12 weitergemacht. Aber bei der Aufagbe checkbox 3.1 programm mw_erf_1.c überschreite ich den maximal zulässigen speicher:

*** 135.11% of 8192 bytes used.

*** Maximum code size for DEMOVERSION exceeded: ***
*** BINARY FILE written as 'CODED BINARY'. ***
*** Can only be used on some special systems! ***

Umake: 'C:\uC51\bin\bin2hex mw_erf_1.bin mw_erf_1.hex -s -e'...
Error: BIN file is coded (DEMOVERSION), can't convert to HEX!
Umake: Error: returncode: -1

ich habs auch mit der musterlösung probiert dasselbe spiel geht dieses programm überhaupt mit der demo version?

ich habe 3 eigene API's

_fkt_sammlung.c
_fkt_sammlung_lcd.c
_fkt_sammlung_rtc.c

wobei im _fkt_sammlung.c funktionen drin sind wie seri_int() clear screen() etc die anderen sind ja selbsterklärend
subzero
 
Posts: 135
Joined: Fri Jan 03, 2014 2:13 pm

Postby subzero » Sat Jul 17, 2010 12:00 am

hatte irgendjemand das gleiche problem?
subzero
 
Posts: 135
Joined: Fri Jan 03, 2014 2:13 pm

Postby subzero » Sun Jul 18, 2010 12:00 am

noch eine frage zu dem Lehrbrief 12. bei der initialisierung des CAN versteh ich noch nicht ganz wie sich das zusammensetzt

in der switch-case anweisung :

1-> 500kBaud

case 1: CANBT1=0x00; CANBT2=0x02; CANBT3=0x36; ......
also 1+1+3+3=8 sprich 2/3 der Quarzfreq.

ich hab mal versucht es selber nachzurechnen für baudrate 20k
um eure angaben nachzuvollziehen aber ich komm auf andere werte:

Anz. TQ = 12*10^6/(2*20k*(BRP+1)) = 300/(BRP+1)

um jetzt auf eine Anz. TQ = 12 zu kommen müsste BRP+1=25 sein weil 300/25=12 also mit hilfe der tabelle BRP5:0 = 24
d.h. CANBT1=0x30 damit ergibt sich BRP5:0 = 24 aber ihr habt da stehen CANBT1=0x2C was ein BRP5:0 = 22 ergibt und der andere wert für CANBT2 hat sich auf 0x04 geändert ????

ich meine wenn man diese 3 zusammenrechnet muss doch immer 8 rauskommen oder?
subzero
 
Posts: 135
Joined: Fri Jan 03, 2014 2:13 pm

Postby subzero » Mon Jul 19, 2010 12:00 am

is das forum hier eingestellt worden? also ich hab mir ds nochmal genau durchgelesen wenn ich mich nicht irre dann steht in CANBT1 lediglich der vorteiler drin damit wir immer auf eine 12 im zähler kommen von der gleichung: Anz. TQ = 12*10^6/(2*BAUD*(BRP+1))

denn diese 12 liegt zwischen 8..25 wie gefordert im datenblatt

und in CANBT2 und 3 tragen wir die werte ein für Tprs Tphs1 Tphs2

und stimmt es auch das CANBT2+CANBT3 immer 7 ergeben muss?

7 + Tsyns = 8 => 2/3 des sample points wenn dem so ist verstehe ich eure angaben ab 20 kbit/s nicht mehr da steh in CANBT2 dann plötzlich 0x04 damit komme ich auf CANBT2+CANBT3=8

8 + Tsnys = 9 ???? wo liegt mein denkfehler plz ich will das verstehen
subzero
 
Posts: 135
Joined: Fri Jan 03, 2014 2:13 pm

Postby endress » Tue Jul 20, 2010 12:00 am

subzerois das forum hier eingestellt worden?


Zwischenzeitlich hat man das Gefühl... vielleicht hat sich ein Sommerloch über das Forum geschoben und wir sind die einzigen, die es nicht sehen

Mit deinem Problem kann ich dir leider nicht weiterhelfen, bin noch im ersten Semester ...
endress
 
Posts: 77
Joined: Fri Jan 03, 2014 2:02 pm

Postby μtronix » Fri Jul 23, 2010 12:00 am

Hallo subzero,

is das forum hier eingestellt worden?


Die Betreuung des Forums ist natürlich weiterhin gewährleistet. Durch die Sommerpause kann es allerdings zu Verzögerungen kommen.


Hier die Antwort zu Deiner exemplarischen Berechnung der Registerwerte für 20kBit. Ich beziehe mich dabei auf die Angaben in LB12 ab S.104ff:

1) Annahme der Quarzfrequenz Fosz=11MHz

2) Fcan = Fosz / 2 = 11 / 2 = 5,5 MHz

3) Tscl = TQ = (BRP+1) / Fcan = 23 / 5,5 = ~4,18us

4) Tbit = 1 / CANBR = 1 / 20kBit = 50us

5) Anz. TQ = Tbit / Tscl = 50us / 4,18us = ~12

6) Anz. TQ [8...25]? ==> OK

7) Sample Point = 66,7% = 2/3: 12 * 2/3 = 8

Somit ist die Angabe CANBT1 = 0x2C korrekt:

0x2C = 44 = 0101100

dann >> 1(Bits 1-6): 010110 = 22

dann +1: BRP=22 + 1 = _23_


Zu der Berechnung auf S.105, (6):

Anz. TQ = Fosz / (2*CANBR*(BRP+1))

Fosz = 11 (Mhz)
CANBR = 0,02 (Mbit)

==>

Anz.TQ = 11 / (0,04*23) = 11,96 = ~12



Somit hoffe ich etwas Klarheit geschaffen zu haben. Melde Dich einfach, wenn Du noch weitere Fragen hast bzw. noch Unklarheiten bestehen.



Viele Grüße
Patrick
μtronix
 
Posts: 197
Joined: Fri Jan 03, 2014 2:12 pm

Postby subzero » Fri Jul 23, 2010 12:00 am

hi ,

erstmal vielen dank für die antwort.

ein paar fragen sind da noch offen ^^:

"3) Tscl = TQ = (BRP+1) / Fcan = 23 / 5,5 = ~4,18us"

woher kennst du hier schon den wert für BRP+1=23?

und dann noch hier:

"7) Sample Point = 66,7% = 2/3: 12 * 2/3 = 8

Somit ist die Angabe CANBT1 = 0x2C korrekt:

0x2C = 44 = 0101100

dann >> 1(Bits 1-6): 010110 = 22 "

wenn ich mich nicht irre soll doch in CANBT1 das hier drin stehen bzw eingetragen werden "BRP+1" aber wo im lehrbrief bzw im register steht das dieser wert um 1 nach rechts geshiftet werden soll? die +1 sind mir klar
subzero
 
Posts: 135
Joined: Fri Jan 03, 2014 2:13 pm

Postby μtronix » Tue Jul 27, 2010 12:00 am

Hallo subzero,

die Antwort von mir dient als Beweisführung dafür, daß die Angaben in der switch/case-Anweisung so vollkommen korrekt sind. Das Beispiel habe ich für die von Dir angegebene Geschwindigkeit von 20kbit/s aufgeführt.

Der Beweisführung ist zu entnehmen, daß der Wert 22 in das Register geschrieben werden muß, um genau diese Geschwindigkeit auszuwählen.

Du kannst natürlich auch umgekehrt rechnen, um dann auf den Wert für den BRP zu kommen.

Der Shift ergibt sich dadurch, daß der CC03 aus dem Register die Werte der Bits 1-6 entgegennimmt; das erste Bit (LSB) ist dabei irrelevant.

Hier ein Beispiel:

Der Bereich BRP im Register TEST soll mit einem Wert von 1111(binär) beschrieben werden. Die Bits für den Bereich BRP sind im Register TEST wie folgt festgelegt (eckige Klammern stellen jeweils ein Bit dar):

[x] [BRP:5] [BRP:4] [BRP:3] [BRP:2] [BRP:1] [BRP:0] [x]

Wenn Du nun einfach die Zuweisung

TEST = 0x3F (binär 111111)

angibst, steht in TEST dann:

[0] [0] [1] [1] [1] [1] [1] [1]

Damit weist Du dem Bereich BRP aber nicht 111111(binär) zu, sondern 011111(binär).
Deshalb ist beim Schreiben in das Register vorher ein Linksshift notwendig, bzw. ein Rechtsshift, wenn Du aus der Zuweisung (wie in switch/case) den korrekten Wert für den Bereich BRP erhalten möchtest.
Alternativ geht es auch per Multiplikation bzw. Division mit dem Faktor 2.

Die Angabe BRP:0-BRP:5 findest Du im Lehrbrief und auch im Datenblatt des CC03ers; das Shiften ist dann einfach die logische Konsequenz.

Die Angaben im Datenblatt (von 09/2008) findest Du auf Seite 114. Der Bereich BRP befindet sich im Register CANBT1.

Bei weiteren Fragen oder Unklarheiten melde Dich einfach.


Viele Grüße
Patrick
μtronix
 
Posts: 197
Joined: Fri Jan 03, 2014 2:12 pm

Postby subzero » Tue Jul 27, 2010 12:00 am

hi,

also ich hab deinen ersten post nochmal durchgelesen und versteeh jetzt die 23 aber ich würde lieber so rechnen

1) Annahme der Quarzfrequenz Fosz=11MHz

2) Fcan = Fosz / 2 = 11 / 2 = 5,5 MHz

3) Tbit = 1 / CANBR = 1 / 20kBit = 50us

4) Anz. TQ = Tbit / Tscl = 50us / x = ~12

x = 50us / ~12 = 4,1666 us

5) Tscl = TQ = (BRP+1) / Fcan = x / 5,5Mhz = 4,166 us

x = 5,5*10^6*4,166 us = 22,91 ca 23 gerundet

6) Anz. TQ [8...25]? ==> OK

7) Sample Point = 66,7% = 2/3: 12 * 2/3 = 8

soviel mal zur rechnung die is mir jetzt klar nun der nächste punkt

das CANBT1 Register ist so aufgebaut:
7 6 5 4 3 2 1 0
- BRP 5 BRP 4 BRP 3 BRP 2 BRP 1 BRP 0 -

wenn ich einfach 0x16 eintrage für dez => 22 würde es nicht gehen weil
für BRP[5:0] drin stehen würde 00 1011 = 11
daher muss man selbst einen links shift von 22 machen um 1 nach links damit hat man dez => 44 hex => 0x2C

dann steht in BRP[5:0] 01 0110 = 22

stimmen meine ausführungen jetzt? hoffe ja
subzero
 
Posts: 135
Joined: Fri Jan 03, 2014 2:13 pm

Postby μtronix » Wed Jul 28, 2010 12:00 am

Hallo subzero,

wie herum Du rechnest, bleibt Dir natürlich "unbenommen". Und ja, Deine Ausführungen sind soweit richtig, der Shift ist notwendig, um die Bits in den passenden Bereich des Registers zu schieben.

Hast Du das Problem aus Deinem ersten Eintrag lösen können, oder bestehen da weiterhin Unklarheiten?


Viele Grüße
Patrick
μtronix
 
Posts: 197
Joined: Fri Jan 03, 2014 2:12 pm

Next

Return to Mikrocontroller-Fernlehrgang (TFH)

Who is online

Users browsing this forum: No registered users and 1 guest