Download - Bascom Basic Avr 3
-
BASCOM BASIC AVRWersja 1.11.7.3
Opracowano na podstawie oryginalnego pliku pomocy programu BASCOM-AVR (wersja 1.11.7.3).Niektre rysunki pochodz z oryginalnego pliku pomocy oraz not katalogowych firmy Atmel.
Wszystkie nazwy wasne zostay uyte wycznie w celu identyfikacji.
Text based on the original BASCOM-AVR help file (version 1.11.7.3).Some embedded pictures come from MCS Help and Atmels datasheets.
All brand names used for identification only.
Copyright by Zbigniew Gibek. Poland 2002-2003.
Original English help file is copyrighted by MCS Electronics. All rights reserved.Visit MCS Electronic Website: www.mcselec.com for more info about BASCOM.
-
BASCOM BASIC AVR Wersja 1.11.7.32
-
BASCOM BASIC AVR Wersja 1.11.7.3 3
SPIS TRECI
Od tumacza. ............................................................................................................................................ 11
BASCOM AVR - Tworzenie programu ..................................................................................................... 12
BASCOM AVR i pami. .......................................................................................................................... 13
BASCOM AVR - Kody bdw.................................................................................................................. 15
Urzdzenia wbudowane w struktur procesora AVR ............................................................................... 19
Licznik-czasomierz TIMER0 ............................................................................................................... 21
Licznik-czasomierz TIMER1 ............................................................................................................... 22
Ukad Watchdog ................................................................................................................................. 23
Port B ................................................................................................................................................. 24
Port D ................................................................................................................................................. 26
Ukad transmisji szeregowej UART .................................................................................................... 27
Komparator analogowy....................................................................................................................... 30
Urzdzenia zewntrzne
Uywanie SPI ..................................................................................................................................... 31
Inicjalizacja ......................................................................................................................................... 38
Rejestry specjalne .............................................................................................................................. 39
Alfanumeryczny wywietlacz LCD...................................................................................................... 41
Uywanie magistrali I2C...................................................................................................................... 42
Uywanie magistrali 1Wire .............................................................................................................. 43Topografia wyprowadze ......................................................................................................................... 47
Podstawy jzyka BASCOM BASIC .......................................................................................................... 50
Sowa zastrzeone ................................................................................................................................... 62
Rnice w stosunku do BASCOM Basic 8051 ......................................................................................... 68
Dyrektywy kompilatora
#IF-ELSE-ENDIF................................................................................................................................ 70
$ASM.................................................................................................................................................. 71
$BAUD ............................................................................................................................................... 71
$BAUD1 (Nowo w wersji 1.11.6.8)....................................................................................................... 72
$BGF.................................................................................................................................................. 73
$BOOT (Nowo w wersji 1.11.6.8) ........................................................................................................ 73
$CRYSTAL......................................................................................................................................... 74
$DATA................................................................................................................................................ 75
$DBG (Nowo w wersji 1.11.6.8)........................................................................................................... 76
$DEFAULT ......................................................................................................................................... 78
$EEPLEAVE (Nowo w wersji 1.11.7.3)................................................................................................ 79
$EEPROM.......................................................................................................................................... 79
$EEPROMHEX (Nowo w wersji 1.11.6.8)............................................................................................ 80
$EXTERNAL ...................................................................................................................................... 80
$INCLUDE.......................................................................................................................................... 81
-
BASCOM BASIC AVR Wersja 1.11.7.34
$LCD .................................................................................................................................................. 82
$LCDRS ............................................................................................................................................. 83
$LCDPUTCTRL.................................................................................................................................. 83
$LCDPUTDATA ................................................................................................................................. 85
$LCDVFO (Nowo w wersji 1.11.6.9) ................................................................................................... 86
$LIB .................................................................................................................................................... 86
$MAP.................................................................................................................................................. 88
$NOINIT ............................................................................................................................................. 88
$NORAMCLEAR ................................................................................................................................ 90
$REGFILE .......................................................................................................................................... 91
$ROMSTART ..................................................................................................................................... 91
$SERIALINPUT.................................................................................................................................. 92
$SERIALINPUT1 (Nowo w wersji 1.11.6.8) ......................................................................................... 93
$SERIALINPUT2LCD......................................................................................................................... 95
$SERIALOUTPUT.............................................................................................................................. 95
$SERIALOUTPUT1 (Nowo w wersji 1.11.6.8) ..................................................................................... 96
$SIM................................................................................................................................................... 96
$TINY ................................................................................................................................................. 97
$WAITSTATE..................................................................................................................................... 97
$XRAMSIZE ....................................................................................................................................... 97
$XRAMSTART ................................................................................................................................... 98
Elementy jzyka
1WIRECOUNT() ................................................................................................................................. 98
1WRESET ........................................................................................................................................ 100
1WREAD()........................................................................................................................................ 102
1WSEARCHFIRST() ........................................................................................................................ 104
1WSEARCHNEXT() ......................................................................................................................... 106
1WVERIFY()..................................................................................................................................... 108
1WWRITE ........................................................................................................................................ 109
ABS()................................................................................................................................................ 111
ACOS() (Nowo w wersji 1.11.6.8) ...................................................................................................... 112
ALIAS ............................................................................................................................................... 112
ASC()................................................................................................................................................ 113
ASIN() (Nowo w wersji 1.11.6.8)........................................................................................................ 114
ATN() (Nowo w wersji 1.11.6.8) ........................................................................................................ 114
ATN2() (Nowo w wersji 1.11.6.8) ...................................................................................................... 115
BAUD ............................................................................................................................................... 116
BCD() ............................................................................................................................................... 116
BIN() ................................................................................................................................................. 117
BINVAL() .......................................................................................................................................... 118
BIN2GREY()..................................................................................................................................... 118
BITWAIT........................................................................................................................................... 119
BYVAL, BYREF................................................................................................................................ 120
CALL ................................................................................................................................................ 120
CHECKSUM()................................................................................................................................... 122
-
BASCOM BASIC AVR Wersja 1.11.7.3 5
CHR() ............................................................................................................................................... 122
CIRCLE (Nowo w wersji 1.11.6.8) ..................................................................................................... 123
CLS .................................................................................................................................................. 125
CLOCKDIVISION ............................................................................................................................. 125
CLOSE # .......................................................................................................................................... 126
CONFIG ........................................................................................................................................... 128
CONFIG 1WIRE ......................................................................................................................... 128
CONFIG ACI (Nowo w wersji 1.11.6.9) ....................................................................................... 129
CONFIG ADC ............................................................................................................................. 129
CONFIG CLOCK ........................................................................................................................ 130
CONFIG COM1 (Nowo w wersji 1.11.6.8).................................................................................... 132
CONFIG COM2 (Nowo w wersji 1.11.6.8).................................................................................... 133
CONFIG DATE (Nowo w wersji 1.11.7.3) ................................................................................... 133
CONFIG DEBOUNCE................................................................................................................. 134
CONFIG GRAPHLCD................................................................................................................. 135
CONFIG I2CDELAY.................................................................................................................... 138
CONFIG INTx ............................................................................................................................. 139
CONFIG KBD ............................................................................................................................. 140
CONFIG KEYBOARD................................................................................................................. 140
CONFIG LCD.............................................................................................................................. 142
CONFIG LCDBUS ...................................................................................................................... 142
CONFIG LCDMODE................................................................................................................... 143
CONFIG LCDPIN........................................................................................................................ 143
CONFIG PORT, CONFIG PIN .................................................................................................... 144
CONFIG RC5.............................................................................................................................. 145
CONFIG SCL.............................................................................................................................. 146
CONFIG SDA ............................................................................................................................. 146
CONFIG SERIALIN..................................................................................................................... 147
CONFIG SERIALIN1 (Nowo w wersji 1.11.6.8)............................................................................ 148
CONFIG SERIALOUT................................................................................................................. 149
CONFIG SERIALOUT1 (Nowo w wersji 1.11.6.8)........................................................................ 150
CONFIG SERVOS...................................................................................................................... 152
CONFIG SPI ............................................................................................................................... 153
CONFIG TIMER0........................................................................................................................ 156
CONFIG TIMER1........................................................................................................................ 158
CONFIG TIMER2........................................................................................................................ 160
CONFIG WAITSUART................................................................................................................ 162
CONFIG WATCHDOG................................................................................................................ 162
CONFIG X10 (Nowo w wersji 1.11.7.3)....................................................................................... 163
COUNTER, CAPTURE, COMPARE i PWM ................................................................................. 163
CONST............................................................................................................................................. 164
COS() (Nowo w wersji 1.11.6.8) ........................................................................................................ 165
COSH() (Nowo w wersji 1.11.6.8)...................................................................................................... 165
CRC8() ............................................................................................................................................. 166
CRC16() ........................................................................................................................................... 167
-
BASCOM BASIC AVR Wersja 1.11.7.36
CRYSTAL......................................................................................................................................... 168
CPEEK()........................................................................................................................................... 169
CPEEKH() ........................................................................................................................................ 170
CURSOR.......................................................................................................................................... 171
DATA................................................................................................................................................ 171
DATE$.............................................................................................................................................. 173
DATE() (Nowo w wersji 1.11.7.3)...................................................................................................... 175
DAYOFWEEK() (Nowo w wersji 1.11.7.3) ........................................................................................ 177
DAYOFYEAR() (Nowo w wersji 1.11.7.3) ......................................................................................... 178
DBG (Nowo w wersji 1.11.6.8).......................................................................................................... 180
DEBOUNCE ..................................................................................................................................... 180
DECR ............................................................................................................................................... 181
DECLARE FUNCTION..................................................................................................................... 182
DECLARE SUB ................................................................................................................................ 183
DEFxxx............................................................................................................................................. 184
DEFLCDCHAR................................................................................................................................. 184
DEG2RAD() (Nowo w wersji 1.11.6.8)............................................................................................... 185
DELAY.............................................................................................................................................. 185
DIM................................................................................................................................................... 186
DISABLE .......................................................................................................................................... 188
DISPLAY .......................................................................................................................................... 189
DO...LOOP ....................................................................................................................................... 189
DTMFOUT........................................................................................................................................ 190
ECHO............................................................................................................................................... 192
ELSE ................................................................................................................................................ 192
ENABLE ........................................................................................................................................... 193
END.................................................................................................................................................. 194
ERR.................................................................................................................................................. 194
EXIT ................................................................................................................................................. 195
EXP()................................................................................................................................................ 195
FIX() (Nowo w wersji 1.11.6.8) .......................................................................................................... 196
FORMAT()........................................................................................................................................ 196
FOR...NEXT ..................................................................................................................................... 197
FOURTHLINE .................................................................................................................................. 198
FRAC() (Nowo w wersji 1.11.6.8) ...................................................................................................... 199
FUSING() ......................................................................................................................................... 199
FUNCTION....................................................................................................................................... 200
GETADC() ........................................................................................................................................ 201
GETATKBD().................................................................................................................................... 202
GETKBD() ........................................................................................................................................ 204
GETRC() .......................................................................................................................................... 206
GETRC5() ........................................................................................................................................ 207
GLCDCMD (Nowo w wersji 1.11.6.9) ............................................................................................... 209
GLCDDATA (Nowo w wersji 1.11.6.9) .............................................................................................. 210
GOSUB ............................................................................................................................................ 210
-
BASCOM BASIC AVR Wersja 1.11.7.3 7
GOTO............................................................................................................................................... 211
GREY2BIN()..................................................................................................................................... 211
HEX()................................................................................................................................................ 212
HEXVAL()......................................................................................................................................... 213
HIGH() .............................................................................................................................................. 213
HIGHW()........................................................................................................................................... 214
HOME............................................................................................................................................... 214
I2CINIT (Nowo w wersji 1.11.6.8) ..................................................................................................... 214
I2CRECEIVE .................................................................................................................................... 215
I2CSEND.......................................................................................................................................... 216
I2START, I2CSTOP, I2CRBYTE, I2CWBYTE.................................................................................. 217
IDLE ................................................................................................................................................. 218
IF...THEN...ELSE...END IF............................................................................................................... 218
INCR................................................................................................................................................. 219
INITLCD ........................................................................................................................................... 220
INKEY() ............................................................................................................................................ 220
INP() ................................................................................................................................................. 221
INPUT............................................................................................................................................... 221
INPUTBIN......................................................................................................................................... 222
INPUTHEX ....................................................................................................................................... 223
INSTR() ............................................................................................................................................ 224
INT() (Nowo w wersji 1.11.6.8) .......................................................................................................... 225
ISCHARWAITING() (Nowo w wersji 1.11.6.9) ................................................................................... 225
LCASE() ........................................................................................................................................... 226
LCD .................................................................................................................................................. 227
LCDAT (Nowo w wersji 1.11.6.9)....................................................................................................... 229
LEFT() .............................................................................................................................................. 229
LEN() ................................................................................................................................................ 230
LINE (Nowo w wersji 1.11.6.8) ......................................................................................................... 230
LOAD................................................................................................................................................ 232
LOADADR ........................................................................................................................................ 232
LOADLABEL() (Nowo w wersji 1.11.6.9) .......................................................................................... 233
LOCAL.............................................................................................................................................. 233
LOCATE........................................................................................................................................... 235
LOG() ............................................................................................................................................... 235
LOG10() (Nowo w wersji 1.11.6.8).................................................................................................... 235
LOOKDOWN().................................................................................................................................. 236
LOOKUP() ........................................................................................................................................ 237
LOOKUPSTR()................................................................................................................................. 238
LOW()............................................................................................................................................... 238
LOWERLINE .................................................................................................................................... 238
LTRIM() ............................................................................................................................................ 239
MAKEBCD() ..................................................................................................................................... 239
MAKEDEC() ..................................................................................................................................... 240
MAKEINT() ....................................................................................................................................... 240
-
BASCOM BASIC AVR Wersja 1.11.7.38
MAX() ............................................................................................................................................... 241
MID() ................................................................................................................................................ 242
MID................................................................................................................................................... 242
MIN() ................................................................................................................................................ 243
ON INTERRUPT .............................................................................................................................. 244
ON VALUE ....................................................................................................................................... 247
OPEN ............................................................................................................................................... 248
OUT.................................................................................................................................................. 251
PEEK() ............................................................................................................................................. 252
POKE ............................................................................................................................................... 252
POPALL ........................................................................................................................................... 253
POWER() (Nowo w wersji 1.11.6.8).................................................................................................. 253
POWERDOWN ................................................................................................................................ 254
POWERSAVE .................................................................................................................................. 254
PRINT............................................................................................................................................... 254
PRINTBIN......................................................................................................................................... 255
PSET................................................................................................................................................ 256
PULSEIN .......................................................................................................................................... 258
PULSEOUT ...................................................................................................................................... 259
PUSHALL ......................................................................................................................................... 259
RAD2DEG() (Nowo w wersji 1.11.6.8)............................................................................................... 259
RC5SEND (Nowo w wersji 1.11.6.8) ................................................................................................ 260
RC6SEND (Nowo w wersji 1.11.6.9) ................................................................................................ 261
READ ............................................................................................................................................... 263
READEEPROM................................................................................................................................ 264
READMAGCARD ............................................................................................................................. 266
REM ................................................................................................................................................. 268
RESET ............................................................................................................................................. 268
RESTORE ........................................................................................................................................ 269
RETURN .......................................................................................................................................... 270
RIGHT()............................................................................................................................................ 270
RND() ............................................................................................................................................... 271
ROTATE........................................................................................................................................... 271
ROUND() (Nowo w wersji 1.11.6.8) .................................................................................................. 272
RTRIM()............................................................................................................................................ 272
SECELAPSED() (Nowo w wersji 1.11.7.3) ....................................................................................... 273
SECOFDAY() (Nowo w wersji 1.11.7.3) ........................................................................................... 274
SELECT CASE...CASE...END SELECT........................................................................................... 275
SET .................................................................................................................................................. 276
SETFONT (Nowo w wersji 1.11.6.9)................................................................................................. 277
SERIN (Nowo w wersji 1.11.6.9) ...................................................................................................... 277
SEROUT (Nowo w wersji 1.11.6.9)................................................................................................... 279
SGN() ............................................................................................................................................... 281
SHIFT ............................................................................................................................................... 281
SHIFTCURSOR................................................................................................................................ 282
-
BASCOM BASIC AVR Wersja 1.11.7.3 9
SHIFTIN ........................................................................................................................................... 282
SHIFTOUT ....................................................................................................................................... 284
SHIFTLCD........................................................................................................................................ 285
SHOWPIC ........................................................................................................................................ 285
SHOWPICE (Nowo w wersji 1.11.6.8) .............................................................................................. 287
SIN() (Nowo w wersji 1.11.6.8) ......................................................................................................... 288
SINH() (Nowo w wersji 1.11.6.8) ...................................................................................................... 288
SONYSEND (Nowo w wersji 1.11.6.8) ............................................................................................. 289
SOUND ............................................................................................................................................ 291
SPACE()........................................................................................................................................... 291
SPC()................................................................................................................................................ 292
SPIIN ................................................................................................................................................ 292
SPIINIT............................................................................................................................................. 293
SPIMOVE()....................................................................................................................................... 293
SPIOUT ............................................................................................................................................ 294
SQR() (Nowo w wersji 1.11.6.8) ....................................................................................................... 294
START.............................................................................................................................................. 295
STCHECK ........................................................................................................................................ 296
STOP................................................................................................................................................ 300
STR()................................................................................................................................................ 302
STRING() ......................................................................................................................................... 302
SUB.................................................................................................................................................. 303
SWAP............................................................................................................................................... 303
SYSDAY() (Nowo w wersji 1.11.7.3)................................................................................................. 303
SYSSEC() (Nowo w wersji 1.11.7.3)................................................................................................. 305
SYSSECELAPSED() (Nowo w wersji 1.11.7.3) ................................................................................ 306
TAN() (Nowo w wersji 1.11.6.8) ......................................................................................................... 307
TANH() (Nowo w wersji 1.11.6.8) ...................................................................................................... 308
THIRDLINE ...................................................................................................................................... 308
TIME$............................................................................................................................................... 308
TIME() (Nowo w wersji 1.11.7.3) ...................................................................................................... 310
TOGGLE .......................................................................................................................................... 311
TRIM() .............................................................................................................................................. 312
UCASE()........................................................................................................................................... 312
UPPERLINE ..................................................................................................................................... 313
VAL() ................................................................................................................................................ 313
VARPTR() ........................................................................................................................................ 314
WAIT ................................................................................................................................................ 314
WAITKEY()....................................................................................................................................... 315
WAITMS........................................................................................................................................... 315
WAITUS ........................................................................................................................................... 316
WHILE...WEND ................................................................................................................................ 317
WRITEEEPROM .............................................................................................................................. 317
X10DETECT (Nowo w wersji 1.11.7.3)............................................................................................. 319
X10SEND (Nowo w wersji 1.11.7.3) ................................................................................................. 320
-
BASCOM BASIC AVR Wersja 1.11.7.310
Wstawki asemblerowe ........................................................................................................................... 322
Lista rozkazw procesorw AVR............................................................................................................ 326
Biblioteki................................................................................................................................................. 330
Biblioteka AT_EMULATOR (Nowo w wersji 1.11.7.3)....................................................................... 330
CONFIG ATEMU (Nowo w wersji 1.11.7.3) ................................................................................ 330
SENDSCANKBD (Nowo w wersji 1.11.7.3)................................................................................. 332
Biblioteka BCCARD.......................................................................................................................... 334
CONFIG BCCARD...................................................................................................................... 335
BCRESET................................................................................................................................... 335
BCDEF........................................................................................................................................ 336
BCCALL...................................................................................................................................... 337
Biblioteka DATETIME (Nowo w wersji 1.11.7.3) ............................................................................... 343
Biblioteka EUROTIMEDATE (Nowo w wersji 1.11.6.9)..................................................................... 343
Biblioteka FP_TRIG (Nowo w wersji 1.11.6.8).................................................................................. 344
Biblioteka GLCD (Nowo w wersji 1.11.6.8) ....................................................................................... 346
Biblioteka GLCDSED (Nowo w wersji 1.11.6.9)................................................................................ 346
Biblioteka LCD4................................................................................................................................ 347
Biblioteka LCD4E2 ........................................................................................................................... 347
Biblioteka LCD4BUSY...................................................................................................................... 348
Biblioteka MCSBYTE........................................................................................................................ 349
Biblioteka MCSBYTEINT.................................................................................................................. 349
Biblioteka PS2MOUSE_EMULATOR (Nowo w wersji 1.11.7.3) ....................................................... 350
CONFIG PS2EMU (Nowo w wersji 1.11.7.3) .............................................................................. 350
PS2MOUSEXY (Nowo w wersji 1.11.7.3) ................................................................................... 351
SENDSCAN (Nowo w wersji 1.11.7.3) ........................................................................................ 352
Biblioteka SPISLAVE (Nowo w wersji 1.11.6.8)................................................................................ 353
Biblioteka TCPIP (Nowo w wersji 1.11.7.3) ...................................................................................... 354
CONFIG TCPIP (Nowo w wersji 1.11.7.3) .................................................................................. 355
BASE64DEC() (Nowo w wersji 1.11.7.3) .................................................................................... 356
CLOSESOCKET (Nowo w wersji 1.11.7.3) ................................................................................. 357
GETDSTIP() (Nowo w wersji 1.11.7.3)........................................................................................ 357
GETDSTPORT() (Nowo w wersji 1.11.7.3) ................................................................................. 358
GETSOCKET() (Nowo w wersji 1.11.7.3) ................................................................................... 358
SOCKETCONNECT() (Nowo w wersji 1.11.7.3) ......................................................................... 359
SOCKETLISTEN (Nowo w wersji 1.11.7.3)................................................................................. 360
SOCKETSTAT() (Nowo w wersji 1.11.7.3).................................................................................. 360
TCPREAD() (Nowo w wersji 1.11.7.3) ........................................................................................ 362
TCPWRITE() (Nowo w wersji 1.11.7.3)....................................................................................... 362
TCPWRITESTR() (Nowo w wersji 1.11.7.3)................................................................................ 363
UDPREAD() (Nowo w wersji 1.11.7.3) ........................................................................................ 367
UDPWRITE() (Nowo w wersji 1.11.7.3) ...................................................................................... 368
UDPWRITESTR() (Nowo w wersji 1.11.7.3) ............................................................................... 369
-
BASCOM BASIC AVR Wersja 1.11.7.3 11
Od tumacza.
Jest to finalna wersja, przeznaczona dla kompilatora w wersji 1.11.7.3, ktry niedawno ukazasi na stronie MCS Electronics www.mcselec.com. W chwili ktrej pisz te sowa nie jest jeszczedostpna wersja DEMO.
Tekst ten jest w 99% identyczny z tym co zawarto w pliku pomocy. Wersja ta jestprzeznaczona dla osb, ktre wol mie cao informacji na papierze. Poniewa wydruk plikupomocy jest spraw do kopotliw, powsta ten skompilowany tekst. Myl, e format PDF niesprawi nikomu problemu.
Podzikowania.Dzikuj za dotychczasow korespondencj jak otrzymaem w sprawie tumaczenia. Czekam
na dalsz. Zwaszcza t dotyczc zauwaonych bdw czy niecisoci. Bd wdziczny zawszelkie tego typu informacje.
Korespondencja w innych sprawach dotyczcych jzyka BASCOM take jest mile widziana.Postaram si odpowiedzie na kady list.
I would like to thank BASCOM author: Mark Alberts for support and official released versionswhich ones published on the MCS Electronics website. Really thanks Mark!
Podzikowania nale si take redakcji miesicznika Elektronika dla Wszystkich, ktratake umieszcza Moj prac na amach swojej witryny internetowej www.edw.com.pl. (Patrz dziaFTP).
Marteenez - Tobie take nale si podzikowania za przetumaczenie niektrych powaniezakrconych zda.
Jurek M. Podzikowania za kompilacj do formatu PDF.
Zbigniew [email protected]
-
BASCOM BASIC AVR Wersja 1.11.7.312
BASCOM AVR - Tworzenie programu
Uruchom rodowisko BASCOM AVR; Otwrz plik programu lub utwrz nowy; Sprawd czy ustawienia konfiguracji s zgodne z zaoonymi; Zapisz plik; Dokonaj kompilacji; Jeli wystpiy jakie bdy, popraw je i skompiluj ponownie; Uruchom symulacj; Jeli program nie dziaa zgodnie z oczekiwaniami popraw tekst programu i powtrz operacj
kompilacji i symulacji. Zaprogramuj ukad i przetestuj w budowanym urzdzeniu;
-
BASCOM BASIC AVR Wersja 1.11.7.3 13
BASCOM AVR i pami.
Kada ze zmiennych uywa pewnego obszaru pamici. Domylnie jest to wewntrzna pamidanych zwana: SRAM. Ilo tej pamici jest cile okrelona i zalena od konstrukcji poszczeglnychprocesorw AVR.
Specjalnym obszarem pamici SRAM jest obszar zajmowany przez rejestry uniwersalne.Rejestry te ponumerowane od R0 do R31, zajmuj dokadnie pierwsze 32 komrki tej pamici (adresy0-31). Rejestry te w rnym stopniu uywane s przez instrukcj jzyka BASCOM BASIC.
Drugim specjalnym obszarem jest przestrze SFR (Special Function Registers), ktra take
rozciga si od adresu 0 do &H3F. Jest ona niewidoczna, gdy przykryta jest pamici SRAM. Tylkospecjalne rozkazy maj dostp do tej pamici. Niektre z jej komrek mog by dostpne rwnie wtrybie bitowym. Wtedy kady bit w bajcie ma swj niepowtarzalny adres. Do czego uywana jest pami SRAM.
Reszta pamici SRAM tzn. ta ktra nie jest zajta przez rejestry i zmienne nie jest wzasadzie uywana przez kompilator. Obszar tej pamici zajmuje jedynie stos sprztowy i programowyoraz tzw. ramka. Wielko tych obszarw zmienia si dynamicznie podczas dziaania programu.
Niektre z instrukcji mog uywa przestrzeni pamici SRAM na wasne potrzeby. Jest towyranie zaznaczone przy opisie konkretnych instrukcji w pliku pomocy.
Wracajc do zmiennych, to kada z nich zajmuje pewien obszar pamici, ktrego rozmiar jestcile okrelony na podstawie jej typu. I tak:
kada zmienna bitowa zajmuje jeden bit z bajtu. Gdy jest ich 8 cay bajt jest wypeniony. kada zmienna typu Byte zajmuje 1 bajt. kada zmienna typu Integer lub Word zajmuje dwa bajty. kada zmienna Long lub Single zajmuje 4 bajty. kada zmienna typu String zajmuje tyle bajtw, ile przypada na jej dugo, plus 1 bajt znak
koca. kada zmienna tablicowa zajmuje tyle bajtw z ilu komrek si skada, pomnoonych przez
ilo bajtw jak zajmuje jedna komrka.
By zatem oszczdnie gospodarowa pamici naley tam gdzie jest to moliwe, uywazmiennych bitowych lub bajtw. Gdy wymagane s liczby ujemne naley uywa typu Integer. Stos programowy.
Stos programowy jest uywany do przechowywania adresw parametrw procedur i funkcjioraz ich zmiennych lokalnych.
Dla kadej zmiennej lokalnej lub parametru, uywane s 2 bajty do zapamitania jej adresu wpamici. Tak wic, gdy procedura lub funkcja posiada 10 parametrw, na stosie odoonych jest wtedy10*2 = 20 bajtw. Gdy do tego procedura posiada na przykad 2 zmienne lokalne, to obszar tenpowikszany jest o 4 bajty. Co w sumie daje 24 bajty.
Wymagany rozmiar stosu moe by atwo obliczony. Naley policzy ile maksymalnieparametrw wystpuje w procedurach lub funkcjach, potem doda do tego liczb jej zmiennychlokalnych i pomnoy otrzyman liczb przez 2. Dla bezpieczestwa naley jeszcze doda 4 bajty nazapas. Ramka.
Zmienne lokalne trafiaj do obszaru tzw. ramki. Dla przykadu, gdy procedura uywa lokalnejzmiennej typu String o dugoci 40 znakw oraz jedn zmienn typu Long; zapotrzebowanie pamicina ramk wynosi: 41+4 = 45 bajtw.
Gdy w programie uywane s funkcje dokonujce konwersji liczb na posta tekstow, naprzykad: STR(), VAL() itp.; to wykorzystuj one obszar ramki jako pami robocz. Zwykle potrzebuj
-
BASCOM BASIC AVR Wersja 1.11.7.314
16 bajtw tej pamici. Reszta przestrzeni adresowej ramki, jest wykorzystywana jako dane lokalne dla zmiennych.
Uwaga! Instrukcja INPUT przyjmujca dane liczbowe przez port szeregowy, lub instrukcje
PRINT czy LCD drukujce liczby, take wykorzystuj 16 bajtw ramki, podczas wewntrznej konwersjiliczb na ich posta tekstow i odwrotnie. Pami XRAM
Do procesora AT90s8515 (lub jego modszego brata AT90s4414), mona w prosty sposbdoczy zewntrzna pami danych zwan XRAM.
Gdy - przykadowo - doczona pami bdzie miaa rozmiar 32KB, jej pierwsza komrkabdzie miaa adres 0, lecz pocztkowa cz tej pamici zostanie przykryta przez pami SRAM. Takwic pierwsza dostpna komrka pamici XRAM bdzie miaa adres &H260 (dla AT90s8515).
Zwizane jest to z konstrukcj samego procesora, a nie ograniczeniami jzyka BASCOMAVR. Projektanci z firmy Atmel zaoyli, e przestrze adresowa pamici danych bdzie liniowa. Copozwolio jeszcze bardziej zmniejszy liczb rozkazw (AVR jest procesorem RISC o architekturzeharwardzkiej! przyp. tumacza). Pami ERAM.
Wikszo procesorw serii AVR posiada wbudowan pami EEPROM. Pami ta moeprzechowywa dane nawet po wyczeniu zasilania. Jak podaje producent nawet do 10 lat.
Pami t w jzyku BASCOM AVR oznaczono skrtem ERAM.
Pami ERAM moe by uywana jak normalna pami, w ktrej mona umieszcza dane lubzmienne. Jednak naley uwaa by nie stosowa zmiennych w ERAM, do ktrych czsto zapisywanebd dane - np. zmienna sterujca ptli. Dzieje si tak dlatego, i nominalnie pami EEPROM maograniczona moliwo przeprogramowywania. Producent gwarantuje tylko 100 ty. operacji zapisu.atwo wic w tym przypadku o przekroczenie tej liczby w do krtkim czasie.
Dlatego nie naley pochopnie uywa tej pamici, i w adnym wypadku nie w instrukcjachptli! Stae.
Wszystkie stae s zapamitane w specjalnie przeznaczonej do tego celu tablicy. Jest onaoczywicie umieszczona w pamici kodu.
Podczas kompilacji jest dokonywana prosta optymalizacja, polegajca na wykrywaniupowtrze staych. Popatrzmy na przykad:
Print "ABCD" Print "ABCD"
W powyszym przykadzie tylko pierwsza staa ("ABCD") jest zapisana w pamici, lecz tutaj:
Print "ABCD" Print "ABC"
zapamitane s obie stae, gdy nie s one takie same, cho znacznie podobne.
-
BASCOM BASIC AVR Wersja 1.11.7.3 15
BASCOM AVR - Kody bdw.
Ponisza tabela zawiera list bdw mogcych si pojawi podczas sprawdzania skadni lubkompilacji.
Kod bdu Opis 1 Nieznana instrukcja 2 Nieznana struktura instrukcji EXIT 3 Spodziewano si WHILE 4 Brak miejsca w pamici IRAM na zmienn typu Bit 5 Brak miejsca na zmienne typu Bit 6 Spodziewana . (kropka) w nazwie pliku. 7 Spodziewana instrukcja IF..THEN 8 Pliku rdowego nie odnaleziono 9 Maksymalnie mona uy 128 instrukcji ALIAS 10 Nieznany typ wywietlacza 11 Spodziewano si INPUT, OUTPUT, 0 lub 1 12 Nieznany parametr instrukcji CONFIG 13 Ta staa ju jest zdefiniowana 14 Bajty mog by tylko w IRAM 15 Bdny typ danych 16 Nieznana definicja 17 Spodziewano si 9 parametrw 18 Zmienne bitowe umieszczone mog by tylko w pamici SRAM
lub IRAM 19 Spodziewano si okrelenia dugoci zmiennej typu String 20 Nieznany typ danych 21 Brak wolnej pamici IRAM 22 Brak wolnej pamici SRAM 23 Brak wolnej pamici XRAM 24 Brak wolnej pamici EEPROM 25 Ta zmienna ju jest zdefiniowana 26 Spodziewano si AS 27 Spodziewano si parametru 28 Spodziewano si IF..THEN 29 Spodziewano si SELECT..CASE 30 Zmienne bitowe s zmiennymi globalnymi, nie mona ich usuwa 31 Bdny typ danych 32 Niezdefiniowana zmienna 33 Zmienne globalne nie mog by usuwane 34 Bdna ilo parametrw 35 Spodziewano si 3 parametrw 36 Spodziewano si THEN 37 Bdny operator relacji 38 Nie mona wykona tej operacji dla zmiennych bitowych 39 Spodziewano si FOR 40 Ta zmienna nie moe by parametrem instrukcji RESET 41 Ta zmienna nie moe by parametrem instrukcji SET 42 Spodziewano si liczby jako parametru 43 Pliku nie odnaleziono 44 Spodziewano si 2 zmiennych 45 Spodziewano si DO 46 Bdne przypisanie 47 Spodziewano si UNTIL 50 Liczba nie mieci si w zmiennej Integer 51 Liczba nie mieci si w zmiennej Word 52 Liczba nie mieci si w zmiennej Long 60 Ta etykieta ju istnieje
-
BASCOM BASIC AVR Wersja 1.11.7.316
Kod bdu Opis 61 Etykiety nie znaleziono 62 Najpierw SUB lub FUNCTION 63 Parametrem funkcji ABS() moe by liczba typu Integer lub Long 64 Spodziewany , (przecinek) 65 Urzdzenie nie zostao otwarte 66 Urzdzenie ju jest otwarte 68 Spodziewano si numeru kanau 70 Ta szybko transmisji nie moe by uyta 71 Typ przekazanych parametrw nie jest zgodny z
zadeklarowanym 72 Getclass error. Jest to bd wewntrzny. 73 Uywanie PRINT w poczeniu z t funkcj jeszcze nie dziaa 74 Spodziewano si 3 parametrw 80 Kod nie mieci si w pamici tego ukadu 81 Uyj funkcji HEX() zamiast PRINTHEX 82 Uyj funkcji HEX() zamiast LCDHEX 85 Nieznane rdo przerwania 86 Bdny parametr w instrukcji CONFIG TIMER 87 Nazwa podana jako parametr instrukcji ALIAS ju jest uywana 88 Spodziewano si 0 lub 1 89 Liczba musi zawiera si w przedziale 1 - 4 90 Ten adres jest za duy 91 Spodziewano si INPUT, OUTPUT, BINARY lub RANDOM 92 Spodziewano si LEFT lub RIGHT 93 Niezdefiniowana zmienna 94 Podano zbyt duo bitw 95 Spodziewano si FALLING albo RISING 96 Stopie podziau preskalera musi by jednym z podanych: 1, 8,
64, 256 lub 1024 97 Procedura lub funkcja musi by wczeniej zadeklarowana przez
DECLARE 98 Spodziewano si SET lub RESET 99 Spodziewano si nazwy typu 100 Zmienne tablicowe nie mog by umieszczone w pamici IRAM 101 Nie mog znale takiej nazwy sprztowego rejestru 102 Bd w wewntrznej procedurze 103 Spodziewano si = (znak rwnoci) 104 Nie potrafi zaadowa rejestru 105 Nie potrafi zapisa wartoci bitowej 106 Nieznany rejestr 107 LoadnumValue error 108 Nieznana dyrektywa w pliku definicji rejestrw 109 Spodziewano si znaku = w pseudoinstrukcji .EQU, w
doczanym pliku 110 Nie znaleziono pliku do doczenia 111 Procedura lub funkcja nie zostaa zadeklarowana przez
DECLARE 112 Spodziewano si nazwy procedury lub funkcji 113 Ta procedura jest ju zadeklarowana 114 Zmienne lokalne mog by definiowane tylko w treci procedury
lub funkcji 115 Spodziewano si numeru kanau 116 Bdny plik rejestrw 117 Nieznane rdo przerwania 200 Pliku definicji .DEF nie odnaleziono 201 Spodziewano si rejestru wskanikowego 202 Nie odnaleziono pseudoinstrukcji .EQU, prawdopodobnie ta
funkcja nie jest obsugiwana przez wybrany procesor 203 Bd w instrukcji LD lub LDD
-
BASCOM BASIC AVR Wersja 1.11.7.3 17
Kod bdu Opis 204 Bd w instrukcji ST lub STD 205 Spodziewano si } (klamra zamykajca) 206 Podanej biblioteki nie odnaleziono 207 Biblioteka zostaa ju zarejestrowana 210 Nie znaleziono definicji tego bitu 211 Nie znaleziono zewntrznej procedury 212 Spodziewano si LOW LEVEL, RISING lub FALLING 213 Spodziewano si cigu znakw 214 Dugo zmiennej String w pamici XRAM wynosi 0 215 Nieznany skrt mnemoniczny 216 Staa nie zostaa zdefiniowana 217 Zmienne typu BIT lub Boolean nie mog by czone w tablice. 218 Rejestr musi by z zakresu R16-R31 219 Przerwania INT0-INT3 s zawsze wyzwalane niskim poziomem
logicznym w procesorach MEGA AVR. 220 Skok do przodu poza dozwolonym zakresem 221 Skok do tyu poza dozwolonym zakresem 222 Bdny znak 223 Spodziewano si * (gwiazdki) 224 Indeks spoza zakresu 225 Nawiasy nie mog wystpowa w opisach staych 226 Spodziewano si staej numerycznej lub znakowej 227 Adres pocztkowy pamici SRAM jest wikszy ni jej adres
kocowy 228 Linie DATA musza by umieszczone poza programem, po
instrukcji END 229 Spodziewano si END SUB lub END FUNCTION 230 Nie moesz zapisywa do rejestru wejciowego kocwek portu
(PINx) 231 Spodziewano si TO 232 Ta funkcja nie jest obsugiwana w tym procesorze 233 Instrukcja READ nie dziaa z danymi umieszczonymi w pamici
EEPROM 234 Spodziewano si instrukcji otwarcia bloku komentarza: ') 235 Spodziewano si instrukcji zamknicia bloku komentarza: '( 236 Liczba nie mieci si w zmiennej typu Byte 238 Ta zmienna nie jest zmienn tablicow 239 Invalid code sequence because of AVR hardware bug 240 Spodziewano si END FUNCTION 241 Spodziewano si END SUB 242 Wystpi brak zgodnoci zmiennych 243 Numer bitu wykracza poza liczb dopuszczaln dla tej zmiennej 244 Nie moesz uywa wskanika Y 245 Zmienne tablicowe nie mog by w pamici IRAM 246 Brak miejsca na definicje w pliku .DEF 247 Spodziewano si kropki 248 Powinien by uyty argument BYVAL w tej deklaracji 249 Procedura obsugi przerwania jest ju zdefiniowana 250 Spodziewano si GOSUB 251 Ta etykieta musi by nazwana SECTIC 252 Spodziewano si zmiennej Integer lub Word 253 Ta zmienna nie moe by w pamici ERAM 254 Spodziewana zmienna 255 Spodziewano si Z lub Z+ 256 Spodziewano si zmiennej typu Single 257 Spodziewano si "" 258 Spodziewano si SRAM 259 Zmienne typu Byte nie mog przyjmowa wartoci ujemnych 260 Cig znakw nie zmieci si w tej zmiennej typu String
-
BASCOM BASIC AVR Wersja 1.11.7.318
Kod bdu Opis 261 Spodziewano si tablicy 262 Spodziewano si ON lub OFF 263 Indeks tablicy poza zakresem 264 Zamiast tego uyj ECHO OFF i ECHO ON 265 Spodziewano si offsetu w rozkazie LDD lub STD. Np. Z+1 266 Spodziewano si TIMER0, TIMER1 lub TIMER2 267 Spodziewano si staej liczbowej 268 Parametr musi zawiera si w granicach 0 3 269 Spodziewano si END SELECT 270 Ten adres ju jest zajty 322 Ten typ danych nie jest obsugiwany przez t instrukcj 232 Etykieta posiada zbyt duo znakw 234 Ten ukad nie jest obsugiwany przez bibliotek I2C w trybie
Slave 325 Stopie podziau preskalera musi wynosi: 1, 8, 32, 128, 256 lub
1024 326 Spodziewano si #ENDIF 327 Maksymalna wielko to 255 328 Nie dziaa z programowym ukadem UART 999 Wersje DEMO lub BETA generuj kod tylko do 2 KB
Wszystkie inne kody, nie wyszczeglnione powyej s rezultatem bdw wewntrznych. Jeli
takie si pojawi prosz o stosown informacj. Uwaga! Czsto zdarza si e kompilator raportuje bd File not found, ktry jest zwykle
spowodowany przez bdne okrelenie parametrw instrukcji - zwaszcza CONFIG. (przyp. tumacza)
-
BASCOM BASIC AVR Wersja 1.11.7.3 19
Urzdzenia wbudowane w struktur procesora AVR
Wszystkie procesory serii AVR posiadaj pewn ilo wbudowanych urzdze, mogcych byuytych przez program.
Podstaw opisu jest procesor AT90s8515, dlatego te niektre elementy mog nie
wystpowa w procesorach o mniejszych moliwociach, jak na przykad AT90s1200 czy AT90s2313. Uniwersalne Liczniki Czasomierze.
Kontroler AT90s8515 posiada dwa liczniki-czasomierze, ktre mog by uyte w dowolny zmoliwych sposobw. Licznik TIMER0 jest 8-bitowy i jest prostszy, drugi z nich TIMER1 jest ju 16bitowy i posiada kilka zaawansowanych funkcji.
Sygna zegarowy doczany do wej licznikw, przechodzi przez 10-bitowy preskaler(dzielnik wejciowy). Liczniki te mog by doczone do kocwek portw, co pozwala na zliczanieimpulsw zewntrznych.
Ukad przeczajcy i preskaler jest rozrysowany poniej:
Rysunek 1 Ukad przeczajcy i preskaler.
Ukad Watchdog.
Konstruktorzy wychodzc naprzeciw najnowszym trendom w konstruowaniu mikrokontrolerw,wbudowali do procesorw AVR ukad Watchdog.
Jest to specjalny licznik, zliczajcy impulsy zegarowe 1MHz. Gdy nastpi przepenienie tego
licznika, generowany jest sygna reset by wyzerowa procesor. Do programisty zatem naley umieszczenie w programie rozkazw powodujcych zerowanie
tego licznika. Jest to jeden z elementw zabezpieczenia przed zaptleniem si programu lub bdamiw jego dziaaniu. Porty.
Prawie wszystkie procesory z serii AVR posiadaj porty nazwane PORTB i PORTD. Ukady wobudowach 40 kocwkowych (i wikszych) maj take porty PORTA i PORTC, ktre s uywanetake jako systemowa szyna danych i adresowa (multipleksowana). Porty te zasadniczo nie rni siod portw PORTB lub PORTD.
Poniewa kocwki portw PORTB i PORTB posiadaj jeszcze specjalne (alternatywne)funkcje, zostan one opisane dokadniej. Ukad transmisji szeregowej.
Procesory serii AVR (nie wszystkie!) posiadaj wbudowany ukad transmisji szeregowej
-
BASCOM BASIC AVR Wersja 1.11.7.320
UART. Moe on pracowa w trybie full-duplex oraz posiada niezaleny ukad taktujcy. Zwalnia toliczniki-czasomierze z generowania tego sygnau (porwnaj z procesorami 8051).
Do zalet naley take zaliczy ukad eliminacji zakce przez wielokrotne prbkowaniebitw oraz ukad wykrywania bdw transmisji: bd ramki (przepenienie rejestru przesuwajcego),bd bitu startu. Interfejs SPI.
Procesory AVR (take nie wszystkie!) oraz dwa z rodziny 8051 posiadaj ukad SPI sucydo szybkiej, szeregowej transmisji danych pomidzy procesorami lub te procesorami i urzdzeniamizewntrznymi Pracuje on na zasadzie wymiany danych, tj. nadaje i jednoczenie odbiera jeden bajt.
Jest on take uywany do programowania wewntrznej pamici Flash oraz EEPROM w trybieISP (In System Programming). Komparator analogowy.
Procesor AVR podobnie jak procesory z rodziny 8051 produkowanej przez Atmel-a posiadawewntrzny komparator analogowy. Moe on suy do porwnywania dwch napi, a przyzastosowaniu odpowiedniego programu i prostego ukadu RC take do ich pomiaru.
-
BASCOM BASIC AVR Wersja 1.11.7.3 21
Licznik-czasomierz TIMER0
Licznik TIMER0 jest 8 bitowy. Moe on zlicza impulsy zegara taktujcego procesordoprowadzone do jego wejcia bezporednio lub przez preskaler. Moe te z powodzeniem zliczaimpulsy doprowadzone do jednej z kocwek portw. Zliczanie mona w kadej chwili zatrzyma iwznowi.
Licznik moe by rdem przerwa. Flaga TOV0 jest ustawiana jeli zostao stwierdzoneprzepenienie licznika. Znajduje si ona w rejestrze TIFR (Timer/Counter Interrupt Flag Register). Abywyczy generowanie przerwa licznika, naley ustawi odpowiedni bit w rejestrze TIMSK(Timer/Counter Interrupt Mask Register).
Tryb pracy licznika ustala si ustawiajc odpowiednie bity w rejestrze TCCR0(Timer0/Counter0 Control Register).
Gdy zliczane s zewntrzne impulsy, ich prbkowanie jest zsynchronizowane z zegaremsystemowym. Zatem aby impulsy te nie byy gubione, czas pomidzy kolejnymi impulsami musi bynie krtszy ni dwa pene takty zegara systemowego.
Prbkowanie odbywa si podczas narastajcego zbocza sygnau zegarowego.
Poniej znajduje si pogldowy schemat licznika-czasomierza TIMER0.
Rysunek 2 Licznik-czasomierz TIMER0.
Na zakoczenie.
Licznik czasomierz TIMER0 cechuje si du rozdzielczoci i wysok dokadnoci gdyuywany jest przy maych stopniach podziau preskalera. Podobnie, przy duym podziale preskaleralicznik staje si uyteczny przy odmierzaniu krtkich odcinkw czasu.
Konfiguracj pracy licznika zajmuje si instrukcja CONFIG TIMER0 . Do sterowania licznikiem
przewidziano instrukcje START oraz STOP. Uproszczono take dostp do rejestrw licznika definiujc w jzyku BASCOM BASIC
specjaln zmienn COUNTER0. W celu zaadowania wartoci do licznika mona uy specjalnejinstrukcji LOAD, ktra dokonuje niezbdnego przeliczenia tej wartoci, tak aby licznik przepeni si popodanej liczbie impulsw.
Przewidziano take stosowanie przez uytkownika przerwa jakie generuje licznik. Mona jeatwo obsuy stosujc instrukcj ON INTERRUPT i odpowiedni program obsugi.
-
BASCOM BASIC AVR Wersja 1.11.7.322
Licznik-czasomierz TIMER1
Licznik TIMER1 jest 16 bitowy i moe zlicza impulsy zegara taktujcego procesordoprowadzone do jego wejcia bezporednio lub przez preskaler. Moe te z powodzeniem zliczaimpulsy doprowadzone do jednej z kocwek portw. Zliczanie mona w kadej chwili zatrzyma iwznowi.
Licznik ten podobnie jak TIMER0 moe generowa przerwania, ustawiana jest wtedy flagaTOV1. Wczenie przerwa licznika TIMER1 spowoduje ustawienie odpowiedniej flagi w rejestrzeTIMSK (Timer1/Counter1 Interrupt Mask Register).
Konfiguracji pracy licznika dokonujemy ustawiajc odpowiednie bity w rejestrach TCCR1A iTCCR1B (Timer1/Counter1 Control Register).
Gdy zliczane s zewntrzne impulsy, ich prbkowanie jest zsynchronizowane z zegaremsystemowym. Zatem aby impulsy te nie byy gubione, czas pomidzy kolejnymi impulsami musi bynie krtszy ni dwa pene takty zegara systemowego.
Prbkowanie odbywa si podczas narastajcego zbocza sygnau zegarowego.
Uwaga! Ponisze funkcje opisano na podstawie licznika TIMER1 procesora AT90s8515, winnych procesorach AVR, mog si one rni.
Licznik TIMER1 posiada dwa rejestry porwnywania. Nazwane s one Output CompareRegister A (COMPARE1A lub OCR1A) i Output Compare Register B (COMPARE1B lub OCR1B).Gdy w wyniku porwnania stwierdzono, e zawarto ktrego z nich jest identyczna z zawartocilicznika, ustawiane s znaczniki OCR1A lub OCR1B.
Z rejestrami porwnania jest zwizana jeszcze jedna funkcja: Gdy zawarto rejestruCOMPARE1A bdzie odpowiada zawartoci licznika, licznik moe zosta wyzerowany.
Licznik TIMER1 moe by take uywany jako generator impulsw o modulowanej szerokoci.Rozdzielczo generatora moe by wtedy ustawiona jako 8, 9 lub 10 bitowa. W trybie tym licznik orazrejestry OCR1A/OCR1B tworz razem ukad generatora impulsw PWM (Pulse Width Modulation).
Zmiana wypenienia (szerokoci) impulsw polega na wpisaniu odpowiednich wartoci dorejestrw OCR1A i OCR1B. Wyjciem impulsw generatora PWM jest wtedy kocwka OC1.
TIMER1 posiada take rejestr oraz tryb przechwytywania. W trybie tym mona w dowolnejchwili przechwyci zawarto licznika do specjalnego rejestru ICR1 (Input Capture Register).Sterowaniem przechwytywania zajmuje si specjalna kocwka ICP. Ustawienia trybuprzechwytywania dokonuje si w rejestrze TCCR1B.
Dodatkowo mona uy wbudowanego komparatora analogowego, do kontroli stanu linii ICP.
Poniej przedstawiono pogldowy schemat licznika-czasomierza TIMER1.
-
BASCOM BASIC AVR Wersja 1.11.7.3 23
Rysunek 3 Licznik-czasomierz TIMER1
Na zakoczenie.
Licznik czasomierz TIMER1 cechuje si wysok rozdzielczoci i dokadnoci gdy uywanyjest przy maych stopniach podziau preskalera. Podobnie, przy duym podziale preskalera licznikstaje si uyteczny przy dokadnym odmierzaniu nawet do dugich odcinkw czasu.
Konfiguracj pracy licznika zajmuje si instrukcja CONFIG TIMER1. Do sterowania licznikiem
przewidziano instrukcje START oraz STOP. Uproszczono take dostp do rejestrw licznika definiujc w jzyku BASCOM BASIC kilka
specjalnych zmiennych (COUNTER1, PWM1A, CAPTURE1, COMPARE1A). W celu zaadowaniawartoci do licznika mona uy specjalnej instrukcji LOAD, ktra dokonuje niezbdnego przeliczeniatej wartoci, tak aby licznik przepeni si po podanej liczbie impulsw.
Przewidziano take stosowanie przez uytkownika przerwa jakie generuje licznik. Mona jeatwo obsuy stosujc instrukcj ON INTERRUPT w poczeniu z odpowiednim programem obsugi.
Ukad Watchdog
Ukad Watchdog skada si ze specjalnego licznika, zliczajcego impulsy pochodzce zodrbnego generatora o czstotliwoci 1MHz (przy napiciu zasilania Vcc=5V), przechodzcych przezdodatkowy preskaler.
-
BASCOM BASIC AVR Wersja 1.11.7.324
Rysunek 4 Ukad Watchdog.
Stopie podziau preskalera mona ustawia w do szerokim zakresie poczwszy od
dzielnika przez 16k do dzielnika przez 2048k, co daje czas opnienia przepenienia licznika od 16msdo okoo 2 sekund. Gdy licznik si przepeni generowany jest sygna RESET zerujcy mikroprocesor.
Ustawienie stopnia podzia preskalera ukadu Watchdog jest moliwe za pomoc instrukcji
CONFIG WATCHDOG. Aby wyzerowa licznik ukadu Watchdog naley uy instrukcji RESETWATCHDOG.
Sterowaniem prac ukadu Watchdog zajmuj si instrukcje START oraz STOP.
Port B
Port PB jest dwukierunkowym 8 bitowym portem. W przestrzeni rejestrw specjalnych sumieszczone a trzy rejestry do obsugi portu. Pierwszy z nich to rejestr danych nazwany PORTB(adres &H18 i &H38). Drugi rejestr DDRB (Data Direction Register. adres &H17 i &H37) suy dookrelenia kierunku dziaania poszczeglnych linii portu. Trzeci to rejestr wejciowy PINB (Port InputPins, adres &H16 i &H36), ktry odwzorowuje bezporednio stan kocwek portu. Rejestr PINB jestprzeznaczony tylko do odczytu, nie mona zatem wpisa tam adnej wartoci. Reszta rejestrw jest odostpie swobodnym.
Wszystkie kocwki portu posiadaj rezystory podcigajce, mogce by wczane osobnodla kadej z kocwki. Port PB moe take bezporednio sterowa diodami LED, gdy prdwpywajcy moe mie warto nawet do 20mA.
Gdy kocwki portu PB0-PB7 pracujc jako wejcia s zewntrznie cignite do masy, toprzy wczonym wewntrznym podciganiu bd rdem prdu wypywajcego. Port PB jako wejcie-wyjcie funkcji alternatywnych.
Kocwki portu B mog take peni alternatywne funkcje, ktrych opis przedstawiono wtabeli: Funkcje alternatywne kocwek portu B
Port Kocwka Funkcja alternatywna PORTB.0 T0 (Timer/Counter 0 wejcie impulsw zewntrznych) PORTB.1 T1 (Timer/Counter 1 wejcie impulsw zewntrznych) PORTB.2 AIN0 (Komparator analogowy wejcie nieodwracajce) PORTB.3 AIN1 (Komparator analogowy wejcie odwracajce) PORTB.4 SS (SPI linia Slave Select SS) PORTB.5 MOSI (SPI Wejcie w trybie MASTER/Wyjcie w trybie SLAVE) PORTB.6 MISO (SPI Wyjcie w trybie MASTER/Wejcie w trybie SLAVE) PORTB.7 SCK (SPI Zegar taktujcy)
Gdy kocwki portu maj peni rol wejcia-wyjcia funkcji alternatywnej, rejestry DDRB iPORTB musz by ustawione zgodnie z opisem funkcji.
-
BASCOM BASIC AVR Wersja 1.11.7.3 25
Port wejciowy PINB nie jest waciwie rejestrem, a operacja odczytu wcza tylko specjalnytryb pracy portu, gdzie stan kocwek jest odczytywany wprost z wyprowadzenia. Natomiastodczytywanie zawartoci rejestru PORTB, spowoduje odczytanie tylko stanu wewntrznychzatrzaskw. Opis funkcji alternatywnych. T0 PORTB, Bit 0
Kocwka ta moe by uywana jako wejcie zewntrznych impulsw, ktrych zliczaniemzajmuje si licznik TIMER0. Licznik moe wtedy reagowa na okrelony poziom logiczny lub nazmian stanu kocwki. T1 PORTB, Bit 1
Kocwka ta moe by uywana jako wejcie zewntrznych impulsw, ktrych zliczaniemzajmuje si licznik TIMER1. Licznik moe wtedy reagowa na okrelony poziom logiczny lub nazmian stanu kocwki. AIN0 (+) PORTB, Bit 2 AIN1 (-) PORTB, Bit 3
Kocwki te s doczone do wej wbudowanego w procesor komparatora analogowego,ktry jest rdem przerwania. Mona go wykorzysta do porwnywania napi, a stosujc odpowiednifragment programu take do ich pomiaru.
Komparator moe by uyty do wyzwalania funkcji przechwytywania licznika TIMER1. SS PORTB, Bit 3
Wejcie uaktywniajce ukad SPI, stosowane w systemach z kilkoma procesorami AVRkomunikujcymi si przez interfejs SPI.
Jest wykorzystywana take podczas programowania procesora w trybie ISP. MOSI PORTB, Bit 2 MISO PORTB, Bit 1
Wejcia/wyjcia ukadu SPI. S one doczone do jego wewntrznego rejestruprzesuwajcego, sucego do wymiany danych.
S wykorzystywane take podczas programowania procesora w trybie ISP. SCK PORTB, Bit 0
Wejcie/Wyjcie impulsw taktujcych transmisj przez ukad SPI. Kocwka ta wykorzystywana jest take podczas programowania procesora w trybie ISP.
Port PB jako uniwersalny port wejcia wyjcia.
Wszystkie 8 linii portu s rwnorzdne, gdy uywane s jako zwyke wejcia-wyjcia. BityDDBn w rejestrze DDRB okrelaj kierunek dziaania kocwki portu. Gdy bit jest ustawiony (stan 1)kocwka peni rol wyjcia, gdy jest wyzerowany (stan 0) kocwka peni rol wejcia. Jelidodatkowo okrelony bit w rejestrze PORTBn jest ustawiony (stan 1) a kocwka peni rol wejcia,wczany jest rezystor podcigajcy. By wyczy rezystor podcigajcy naley w rejestrze PORTBwyzerowa odpowiedni bit, lub te skonfigurowa lini portu jako wyjcie:
DDBn PORTBn Tryb pracy Podciganie Komentarz 0 0 Wejcie Nie Trjstanowe (Hi-Z) 0 1 Wejcie Tak Z linii PBn moe wypywa prd, gdykocwka bdzie cignita do masy. 1 0 Wyjcie Nie Stopie wyjciowy typu Push-Pull, stan 0 1 1 Wyjcie Nie Stopie wyjciowy typu Push-Pull, stan 1
Na zakoczenie.
Zarwno porty jak i pojedyncze linie tyche portw mog pracowa jako wejcia lub wyjcia.Ustalenie trybu pracy jest moliwe za pomoc instrukcji CONFIG PORT jak i CONFIG PIN.
-
BASCOM BASIC AVR Wersja 1.11.7.326
Port D
Sposb dziaania i konfiguracji portu PD jest prawie identyczny jak w porcie PB, wic niebdzie opisany powtrnie. Adresy rejestrw portu s nastpujce: PORTD - &H12 i &H32, DDRD -&H11 i &H31, PIND - &H10 i &H30. Port PB jako wejcie-wyjcie funkcji alternatywnych.
Kocwki portu PB mog take peni alternatywne funkcje, ktrych opis przedstawiono wtabeli: Funkcje alternatywne kocwek portu B
Port Kocwka Funkcja alternatywna PORTD.0 RDX (UART Wejcie) PORTD.1 TDX (UART Wyjcie) PORTD.2 INT0 (Wejcie zewntrznego przerwania INT0) PORTD.3 INT1 (Wejcie zewntrznego przerwania INT1) PORTD.5 OC1A (Wyjcie sygnau porwnania licznika TIMER1) PORTD.6 WR (Wyjcie strobujce zapis do zewntrznej pamici) PORTD.7 RD (Wyjcie strobujce odczyt z zewntrznej pamici)
Gdy kocwki portu maj peni rol wejcia-wyjcia funkcji alternatywnej, rejestry DDRB iPORTB musz by ustawione zgodnie z opisem funkcji. Opis funkcji alternatywnych. RD PORTD, Bit 7
Sygna RD suy do aktywowania ukadu odczytu zewntrznej pamici RAM. WR PORTD, Bit 6
Sygna RD suy do aktywowania ukadu zapisu zewntrznej pamici RAM. OC1 PORTD, Bit 5
Wyjcie sygnau przechwytywania licznika TIMER1. Stan tej kocwki zmienia si, gdy wwyniku porwnania zawartoci licznika z rejestrem porwnawczym, stwierdzono ich zgodno.
Kocwka PD5 musi by ustawiona jako wyjcie by penia t funkcj, tzn. DDD5 ustawiony(stan 1). Zobacz opis licznika-czasomierza TIMER1 by dowiedzie si wicej.
Kocwka ta te moe by wyjciem impulsw licznika w trybie PWM. INT1 PORTD, Bit 3
Wejcie zewntrznego sygnau przerwania. Kocwka PD3 moe z powodzeniem obsugiwasygnay pochodzce z urzdze zewntrznych, pojawiajcych si periodycznie lub systematycznie, awymagajcych akcji ze strony procesora. Zobacz informacje na temat przerwa, aby uzyskadodatkowe informacje. INT0 PORTD, Bit 2
Wejcie zewntrznego sygnau przerwania. Kocwka PD2 moe z powodzeniem obsugiwasygnay pochodzce z urzdze zewntrznych, pojawiajcych si periodycznie lub systematycznie, awymagajcych akcji ze strony procesora. Zobacz informacje na temat przerwa, aby uzyskadodatkowe informacje. TXD PORTD, Bit 1
Wyjcie danych przesyanych przez wewntrzny UART. Gdy dziaa ukad UART, kocwkaportu jest automatycznie konfigurowana dla celw transmisji bitw, niezalenie od stanu bitu DDRD1. RXD PORTD, Bit 0
Wejcie danych odbieranych przez wewntrzny UART. Gdy dziaa odbiornik ukadu UART,kocwka portu jest automatycznie konfigurowana dla celw transmisji bitw, niezalenie od stanubitu DDRD1. Dodatkowo gdy ukad UART ustawi tryb pracy kocwki jako wejcie, ustawienie jedynkiw bicie PORTD0, powoduje wczenie wewntrznego podcigania.
-
BASCOM BASIC AVR Wersja 1.11.7.3 27
Gdy kocwki TXD oraz RXD nie s uywane do transmisji przez UART, mog by normalnieuywane jako uniwersalne porty wejcia-wyjcia. Wtedy jednak nie mona uywa instrukcji PRINT iINPUT, oraz innych operujcych na wbudowanym ukadzie UART.
Uwaga! W rejestrze UCR (UART Control Register) bity 3 i 4 nie s standardowo ustawiane,co oznacza e kocwki TXD i RXD nie s uywane przez UART. Nie jest to jednak regu. W tymwypadku lepiej w programie wyzerowa te bity, stosujc na przykad taki blok instrukcji:
Reset UCR.3 Reset UCR.4
Port PD jako uniwersalny port wejcia wyjcia.
Wszystkie 8 linii portu s rwnorzdne, gdy uywane s jako zwyke wejcia-wyjcia. BityDDDn w rejestrze DDRD okrelaj kierunek dziaania kocwki portu. Gdy bit jest ustawiony (stan 1)kocwka peni rol wyjcia, gdy jest wyzerowany (stan 0) kocwka peni rol wejcia. Jelidodatkowo okrelony bit w rejestrze PORTDn jest ustawiony (stan 1) a kocwka peni rol wejcia,wczany jest rezystor podcigajcy. By wyczy rezystor podcigajcy naley w rejestrze PORTDwyzerowa odpowiedni bit, lub te skonfigurowa lini portu jako wyjcie:
DDBn PORTDn Tryb pracy Podciganie Komentarz 0 0 Wejcie Nie Trjstanowe (Hi-Z) 0 1 Wejcie Tak Z linii PDn moe wypywa prd, gdykocwka bdzie cignita do masy. 1 0 Wyjcie Nie Stopie wyjciowy typu Push-Pull, stan 0 1 1 Wyjcie Nie Stopie wyjciowy typu Push-Pull, stan 1
Na zakoczenie.
Zarwno porty jak i pojedyncze linie tyche portw mog pracowa jako wejcia lub wyjcia.Ustalenie trybu pracy jest moliwe za pomoc instrukcji CONFIG PORT jak i CONFIG PIN.
Ukad transmisji szeregowej UART
Mikrokontrolery rodziny AVR posiadaj ukad uniwersalnego portu szeregowego, mogcegosuy do transmisji w standardzie RS232. Transmisja moe si odbywa w trybie full-duplex, gdyukad ten posiada dwa niezalene rejestry transmisyjne. Ukad posiada take wasny ukad taktujcy,co zwalnia liczniki-czasomierze z generowania tego sygnau. Jest to znaczne rozszerzenie moliwociukadu UART w stosunku do popularnej rodziny kontrolerw 8051.
Cze nadawcza.
Gwn czci ukadu nadajnika transmisji jest rejestr przesuwajcy, poczony z rejestrembufora UDR (UART Data Register) do ktrego naley wpisa transmitowany bajt. Po stwierdzeniu erej. przesuwajcy jest pusty, zawarto rej. UDR jest przepisywana do rejestru przesuwajcego corozpoczyna transmisj tego bajtu.
-
BASCOM BASIC AVR Wersja 1.11.7.328
Rysunek 5 UART - Cz nadawcza.
Poniewa ukad UART moe take transmitowa dane 9-bitowe, w rejestrze UCR (UART
Control Register) s umieszczone bity TX8 oraz CHR9. Ustawienie bitu CHR9 suy do wczenia tegotrybu, co powoduje, e rwnoczenie wraz z bajtem z rej. UDR przepisany do rej. przesuwajcegobdzie take stanu bitu TX8.
Uwaga! Stan tego bitu musi by ustalony przed wpisaniem wartoci do rejestru UDR. Przepisanie wartoci z rejestru UDR do rej. przesuwajcego powoduje take ustawienie bitu
UDRE (UART Data Register Empty) co jest sygnaem, e mona wpisa now warto do rejestruUDR. Zostanie ona przepisana automatycznie po zakoczeniu transmisji biecego bajtu (wysuniciubitu stopu). Skasowanie bitu UDRE moe odby si tylko sprztowo, poprzez zapis do rejestru UDR.
Jeli po ustawieniu bitu UDRE nie nastpi zapis do rejestru UDR to po zakoczeniu transmisjibiecego bajtu jest ustawiona flaga TXC (UART Transmission Complette). Oznacza to, e cznadawcza ukadu UART zakoczya transmisj i jest wolna.
Cze odbiorcza.
Podobnie jak w przypadku nadajnika, gwn czci czci odbiorczej jest rejestrprzesuwajcy oraz poczony z nim rejestr bufora UDR. Niebagateln rol peni take ukad logiki, wktrym umieszczono ukad eliminacji zakce.
-
BASCOM BASIC AVR Wersja 1.11.7.3 29
Rysunek 6 UART - Cz odbiorcza.
Rejestr UDR to waciwie dwa rejestry umieszczone pod tym samym adresem. Jeden z nich
jest udostpniony tylko do zapisu (dla nadajnika), a drugi tylko do odczytu (dla odbiornika). Przytransmisji 9 bitowej ostatni odebrany bit danych (MSB) trafia do rejestru UCR bit RX8.
Jak wspomniano na pocztku cz odbiorcza jest wyposaona w ukad eliminujcy
zakcenia jakie mog wystpi podczas transmisji bitw. Mechanizm jego dziaania jest prosty.Polega on na wielokrotny