Hauptseite   Module   Alphabetische Liste   Datenstrukturen   Datenstruktur-Elemente   Zusätzliche Informationen  

Beispielprojekt: ds1820

Originalboard:
AVR-Ctrl
Dieses Beispiel soll die Benutzung der Code Vision Konformität für den Temperatorsensor DS1820 von Dallas Semiconductors aufzeigen. Am vorkonfigurierten OW DQ Bit ist mindestens ein DS1820 angeschlossen, in unserem Beispiel zwei (siehe Bild). Als Anzeigeeinheit wird ein LCD benutzt, das wie im Beispielprojekt: display angeschlossen und benutzt wird.

ds1820.png

Schaltplan angeschlossener Temperatursensoren

Konfiguration der Bibliothek

Die Bibliothek muß intern mit den folgenden Parametern übersetzt werden. Dies kann durch Benutzung der originalen Boardkonfiguration über --enable-board=avrctrl-8535-8mhz erreicht werden:

Verwendung der Bibliothek

Der Quellcode

main.c
Zunächst werden alle notwendigen Headerdateien der AVR HAL Bibliothek eingebunden:
    #include <avrhal/delay.h>
    #include <avrhal/lcd.h>
    #include <avrhal/ow.h>
    #include <avrhal/ds1820.h>
Eine globale Definition oder Deklaration ist bei diesem Beispiel nicht notwendig. In der Mainroutine wird vor Eintritt in die Endlosschleife das LCD Port sowie der OW Kommunikationsstack initialisiert und vorhandene OW Geräte gesucht. Schlägt das fehl, wird eine entsprechende Fehlermeldung ausgegeben. Im Gegensatz zum Beispielprojekt: ow wird Bei allen Aktionen die Code Vision API benutzt. Daher wird mit ow_devices[] auch ein genügend großes Feld vom Typ unsigned char und nicht ow_device_st angelegt sowie w1_init() und w1_search() benutzt:
    int main(void)
    {
            unsigned char ow_devices[2 * 9];
            unsigned char devices;
            lcd_init((2 /* rows */ << 6) + 16 /* columns */);
            lcd_putstr("--= AVR-Ctrl =--");
            lcd_putstr("T");
            lcd_control(1, 0, 0);                   // cursor block off
            w1_init();                                                              // NO ERROR HANDLING !!!
            devices = w1_search(0xf0, ow_devices);  // NO ERROR HANDLING !!!
            while (1)
            {
                    uint8_t dev;
                    for (dev = 0; dev < devices; dev++) {
                            int temp = ds1820_temperature_10(&(ow_devices[dev * 9]));
                            lcd_gotoxy(1,1);
                            lcd_printf("%d = %d.%c %cC", dev + 1, temp / 10,
                                            temp % 10 + 0x30, 0xdf);
                            delay_ms(2000);
                    }
            }
    } /* main() */
    /*************************************EndOfFile***************************
    $Id: $
    vim:tw=78:ts=4:sw=4:ai:
    */
Nach der erfolgreichen Basisinitialisierung wird in der Endlosschleife kontinuierlich die Temperatur aus den gefundenen OW Temperatursensoren ausgelesen und am LCD angezeigt. Zwischen dem Anzeigewechsel wird immer 2 Sekunden gewartet:
Der vollständige Quellcode kann der AVR HAL Bibliothek unter doc/examples/ds1820 entnommen werden.
Warnung:
Die Anzahl der angeschlossenen Geräte muß mit dem Neuntel der Feldgröße von ow_devices[] übereinstimmen. In unserem Beispiel:
            unsigned char ow_devices[2 * 9];

Übersetzung

C Quelle zu Objekt compilieren
[avr@host] > avr-gcc -g -O2 -Wall -Wstrict-prototypes -Wa \
                     -mmcu=at90s8535 -DAVRHAL_CONFIG_avrctrl_8535_8mhz \
                     -c -o main.o main.c
    
Objekt zu ELF Datei linken
[avr@host] > avr-gcc -Wl,-Map=ds1820.map,--cref -mmcu=at90s8535 \
                     -o ds1820.out main.o -lavrhal-avrctrl-8535-8mhz
    
ELF Datei in Binärdatei, Intel HEX und Motorola S-Record Format überführen
[avr@host] > avr-objcopy -O binary -R .eeprom ds1820.out ds1820.out-rom.bin
[avr@host] > avr-objcopy -O ihex -R .eeprom ds1820.out ds1820.out-rom.hex
[avr@host] > avr-objcopy -O srec -R .eeprom ds1820.out ds1820.out-rom.s19
    
Zum Beispiel Motorolas S-Record:
S01100006473313832302D726F6D2E733139C6
S113000010C02AC029C028C027C026C025C024C0CB
S113001023C022C021C020C01FC01EC01DC01CC0E0
S11300201BC011241FBECFE5D2E0DEBFCDBF10E060
S1130030A0E6B0E0E8EDFAE003C0C89531960D9271
S1130040A839B107D1F710E0A8E9B0E001C01D92CA
S1130050A23AB107E1F701C0D3CFCDE4D2E0DEBFCD
S1130060CDBF80E9CDD080E690E05BD181E790E020
S113007058D184E02BD100D28C2E9D2E0894811C63
S1130080911C992D882DABD2C82E33E7A32E30E0D6
S1130090B32EDD24DC14E8F70D2D1127912F802FCA
S11300A0880F991F880F991F880F991F800F911F20
S11300B0880D991D3AD0E82EF92E61E0862F1CD1C7
S11300C08FED90E09F938F939F2D8E2D6AE070E0CB
S11300D0B8D4C0969F938F939F2D8E2D6AE070E0C5
S11300E0B0D47F936F930F5F1F4F1F930F93BF92F3
S11300F0AF929AD280ED97E00CD08DB79EB70A9656
S11301000FB6F8949EBF0FBE8DBFD394DC1420F2BB
S1130110C0CFE82FF92F309639F0A0EDB7E0119752
S1130120F1F7A8953197C9F70895FF920F931F939C
S1130130CF93082F192FC0E0F0909A00CF1500F547
S11301402C2F3327932F822F43E0880F991F4A9532
S1130150E1F7820F931F2091980030919900280FA6
S1130160391F48E050E0732F622F912F802F44D421
S1130170892B19F48C2F1FD305C0CF5FCF1500F343
S113018081EF98EDCF911F910F91FF90089584B363
S11301908870876084BBA99AA89881E090E000D316
S11301A0AA9A81E090E0FCD29F99F7CFAA9884B3F1
S11301B0876F84BB0895282F85B38870922F907F12
S11301C0892B85BBAA9AAA9885B388702295207F2B
S11301D0822B85BBAA9AAA980895282F95B3987064
S11301E0807F8160982B95BBAA9AAA9885B3887062
S11301F02295207F2160822B85BBAA9AAA98089514
S1130200982F8F7380939E0080938400805C8093EA
S11302108500892F829586958695837011F08330A9
S113022021F483E08093A00005C0991F9927991FAA
S11302309093A00084B3876F84BB80E29EE4B0D225
S113024085B38870806385BBAA9AAA9888E893E1ED
S1130250A7D285B38870806385BBAA9AAA988EE6D4
S113026090E09ED285B38870806385BBAA9AAA98D1
S113027082E390E095D285B38870806285BBAA9AA8
S1130280AA9882E390E08CD285B38870806285BBA3
S1130290AA9AAA9885B38870806885BBAA9AAA98F6
S11302A082E390E07DD285B3887085BBAA9AAA9830
S11302B085B38870806685BBAA9AAA9882E390E089
S11302C06FD2C0D22AD087E001D00895CF93992766
S11302D082FF02C0CCE001C0C8E081FF02C0CA6056
S11302E001C0C86080FF02C0C96001C0C8604FDFA0
S11302F08C2F61DFCF910895282F962F8091A00035
S113030098239093A100E2E8F0E0E90FF11D209317
S11303109F008081820F9AD2089539DF82E04BDFFB
S11303200895CF93DF93D92FC82F8881882329F08C
S1130330899194D288818823D9F7DF91CF91089548
S1130340949880B39927282F392F2071307084FD19
S113035003C0932F822F08958C9A80EE91E020D2CF
S11303608C988CE390E01CD2849906C084EA91E0D6
S113037017D281E090E0089584EA91E011D280E000
S113038090E0089508959498882341F08C9A86E02B
S113039090E006D28C9880E490E007C08C9A8CE3BD
S11303A090E0FED18C988AE090E0FAD10895089507
S11303B0CF93DF9394988C9A86E090E0F1D18C9857
S11303C089E090E0EDD180B39927D92FC82FC0716F
S11303D0D07084FD06C087E390E0E2D18C2F9D2F7E
S11303E005C087E390E0DCD181E090E0DF91CF911C
S11303F00895FF920F931F93CF93DF93F82EC0E0DD
S1130400D0E001E010E0912F802F0C2E02C0880F65
S1130410991F0A94E2F78F21B6DFC00FD11FC830AD
S1130420D1057CF3912F802FE5E0CDB7DEB745C32E
S11304300F931F93CF93DF9380E000E010E0C82F69
S1130440DD27B6DF882359F081E090E0002E02C05A
S1130450880F991F0A94E2F78C2B9D2B02C08C2FD6
S11304609D2F0F5F1F4F083011054CF39927DF9123
S1130470CF911F910F91089594988C9810929A009F
S11304805FDF882319F480E090E0089581E090E034
S113049008950895AF92BF92CF92DF92EF92FF92A8
S11304A00F931F93CF93082F192F21E0E22ECC2412
S11304B0AC2CFE2CDC2C80919D00882309F069C0B3
S11304C03FDF882349F4C0929C00C0929D00C092F3
S11304D09B0080E090E06DC080EF8BDF69DFC82F68
S11304E067DFC13019F4813009F440C0C81711F036
S11304F09C2F18C080919B00E81640F4F12FE02F48
S1130500EA0DF11D90819F2129F003C090E0E816C7
S113051009F491E0992331F4CE2C88E08E1510F083
S1130520E0929C002A2D3327CE2DCF5FBF2CBB0C2D
S1130530913039F4F12FE02FE20FF31F80818F29DE
S113054007C0F12FE02FE20FF31FF09480818F2179
S11305508083892F18DFEC2EFB2CBB2019F4A39485
S113056091E0F92EE7E0EA1508F0B8CFF0E4FE15C3
S113057080F468E070E0912F802FEDD0882349F457
S1130580C0929B00CC2019F481E080939D0081E00F
S1130590D82EDD2029F0F12FE02F8081882339F433
S11305A0DD24D0929C00D0929D00D0929B008D2D92
S11305B09927CF911F910F91FF90EF90DF90CF90EB
S11305C0BF90AF90089510929C0010929D001092DD
S11305D09B0060DF992708955DDF99270895909324
S11305E099008093980010929A00EDDF8823C1F05F
S11305F080919A008F5F80939A009927282F392F32
S113060043E0220F331F4A95E1F7280F391F8091E9
S1130610980090919900820F931FDEDF882341F7A1
S113062080919A0099270895A0E0B0E0E9E1F3E011
S113063021C24FE0A42EB12CAC0EBD1EFB2DEA2D21
S1130640C190D190AE2EBF2EFD2DEC2D8191CE2EDA
S1130650DF2E853259F0882309F47BC0FFD0FD2DAD
S1130660EC2D8191CE2EDF2E8532A9F7FD2DEC2DB8
S11306708191CE2EDF2E282F332727FD3095243667
S11306803105B9F02536310524F42336310541F01E
S11306900EC02537310569F02837310591F007C0C0
S11306A0FB2DEA2D22E030E0A20EB31E8081D6D0CD
S11306B0CBCF3AE0832E912C20E1E22E27E2F22EDA
S11306C005C090E1E92EF12C8E2C9F2CFB2DEA2DF8
S11306D022E030E0A20EB31E008111818837ECF4D1
S11306E0843639F417FF05C0109501951F4F8DE22C
S11306F0B5D032E0E316F10480F00E151F0568F45E
S11307009F2D8E2D6AE070E086D1E62EF72E6230A2
S1130710710518F00617170798F3912F802F7F2D76
S11307206E2D79D1F72FE62FEA57FF4F808196D0AF
S1130730912F802F7F2D6E2D6ED1082F192F9F2D75
S11307408E2D792D682D67D1E62EF72E672B29F78C
S11307507BCFECE0ABC1F92FE82F40E06150704053
S11307608FEF6F3F7807C9F05191A8E0252F332709
S1130770842F99278227932780FF05C088E1482783
S11307804695406801C046955695A15079F7615049
S113079070408FEF6F3F780739F7842F99270895BA
S11307A0E82FF92F309631F000000000000000001F
S11307B03197D1F70895A9E0B0E0E0EEF3E063C12A
S11307C0182FBFD0882371F0612F8EEB8CD0882333
S11307D049F041E069E070E08C2F9D2F019654D0E0
S11307E0882319F481EF98ED2AC019868A81992704
S11307F0382F22278981482F5527240F351F37FF8B
S113080005C081E08987309521953F4F359527951F
S1130810932F822F53E0880F991F5A95E1F7820F87
S1130820931F280F391F40FF02C02B5F3F4F89855C
S1130830882319F0309521953F4F932F822FE3E0C1
S113084029963DC1A4DC81E0B6DC08951F93182FDE
S11308509EDC1068812FAFDC1F9108951F93182F21
S113086096DC812FBADC80919F008F5F80939F007C
S113087090919E00891731F48091A1008F5F682FB9
S113088080E03ADD1F910895EF92FF920F931F933A
S1130890CF93DF93E82EF92ED72FC62F042F10E025
S11308A0672B61F0C5DDFF2DEE2DE10FF11D808377
S11308B01F5F812F99278C179D07A0F341DD8823A3
S11308C049F0002351F06C2F7D2F9F2D8E2D43DF97
S11308D0882319F080E090E002C081E090E0E6E037
S11308E0CDB7DEB7E9C01F93CF93182FC62F8091E1
S11308F09A00882329F0681718F422DD882319F454
S113090080E090E01BC085E574DD8C2F9927282FAB
S1130910392F43E0220F331F4A95E1F7280F391F7F
S11309208091980090919900820F931F40E068E0B5
S113093070E01DD0812F5DDD81E090E0CF911F91AB
S11309400895CF93DF93682F84E4CDDF882319F4CF
S113095080E090E009C0C0E0D0E03CD0882311F4EE
S1130960C1E0D0E08C2F9D2FDF91CF910895FF92AD
S11309700F931F93CF93DF93082F192FD72FC62FD1
S1130980442371F0972F862F0197682F792F912F89
S1130990802FE1DEF12FE02FEC0FFD1F31978083D4
S11309A0FF24209789F0F12FE02FEF0DF11D8081B6
S11309B020DD882319F480E090E008C0F3948F2DA3
S11309C099278C179D0778F381E090E0E5E0CDB797
S11309D0DEB773C0CF93C4E603C080E197E2E0DEE4
S11309E0E7DC8823D1F38C2FC1508823B1F7CF5F84
S11309F08C2F9927CF910895E62FF72FA82FB92F81
S1130A0004C08D910190801921F441505040C8F7E1
S1130A10881B990B0895AA1BBB1B51E107C0AA1F91
S1130A20BB1FA617B70710F0A61BB70B881F991F8B
S1130A305A95A9F780959095682F792F8A2F9B2F27
S1130A40089597FB092E07260AD077FD04D0E3DF2B
S1130A5006D000201AF4709561957F4F0895F6F73B
S1130A60909581959F4F08952F923F924F925F9258
S1130A706F927F928F929F92AF92BF92CF92DF92AA
S1130A80EF92FF920F931F93CF93DF93CDB7DEB70F
S1130A90CA1BDB0B0FB6F894DEBF0FBECDBF0994A3
S1130AA02A88398848885F846E847D848C849B84FA
S1130AB0AA84B984C884DF80EE80FD800C811B8108
S1130AC0AA81B981CE0FD11D0FB6F894DEBF0FBE37
S10B0AD0CDBFCA2FDB2F0895EE
S1130AD82D2D3D204156522D4374726C203D2D2DF1
S1130AE80054002564203D2025642E2563202563B9
S1130AF8430000400000303132333435363738395A
S10B0B0841424344454600004C
S9030000FC

Optionale Informationen:
[avr@host] > avr-objdump -x ds1820.out > ds1820.inf
[avr@host] > avr-size -d ds1820.out > ds1820.siz
[avr@host] > avr-size -x ds1820.out >> ds1820.siz
    
Zum Beispiel Sekmentgrößen:
   text        data     bss     dec     hex filename
   2776      56      10    2842     b1a ds1820.out

   text    data     bss     dec     hex filename
  0xad8    0x38     0xa    2842     b1a ds1820.out


Automatically generated by Doxygen 1.2.18 on 17 Jul 2003.