Fórum témák
- • Alternativ HE találkozó(k)
- • Villanyszerelés
- • Ki hol gyártatja a NYÁK-ot ?
- • Hifi erősítők tervezése
- • Házilag építhető fémkereső
- • Szobatermosztát bekötése
- • Vásárlás, hol kapható?
- • Erősítő mindig és mindig
- • Lemezjátszó beállítása, javítása
- • Erősítőhöz való hangsugárzó védelem (koppanásgátló)
- • Rádióamatőrök topikja
- • Elfogadnám, ha ingyen elvihető
- • Hegesztőgép
- • Műhelyünk felszerelése, szerszámai
- • Orion se 1025
- • Érdekességek
- • Csináld magad Solid State Disk (SSD)
- • TV hiba, mi a megoldás?
- • Számítógép hiba, de mi a probléma?
- • Multiméter problémák
- • Keverőpult építése, javítása
- • Felajánlás, azaz ingyen elvihető
- • Transzformátor készítés, méretezés
- • Codefon kaputelefon
- • Hibrid erősítő
- • Raspberry Pi - Málnatopik
- • Adatlapot keresek
- • 100 V-os hangrendszer
- • Rádió javítás
- • Orion ST 1025- Tuner
- • Napelem alkalmazása a lakás energia ellátásában
- • Gázkazán vezérlő hibák
- • Analóg oszcilloszkóp javítása
- • Elektromos távirányítós kapunyitó
- • Vicces - mókás történetek
- • Hőmérsékletfüggő ventilátorvezérlés
- • Elektroncső
- • Videomagnó problémák
- • WiFi / WLAN alapkérdések
- • LED-es lámpa, meghajtó áramkör
- • V-FET és SIT erősítő kapcsolások
- • Oszcilloszkóp vétel, mit gondoltok?
- • Hegesztőgép javítása
- • PLC kérdések
- • Mozgásérzékelő
- • Fejhallgató erősítő
- • LCD monitor probléma
- • Kapcsolóüzemű tápegység
- • Rádiótechnika számok keresése
- • AI szerver házilag - olcsón?
- • Quad 606, 707 és 909-es erősítő tapasztalatok és hibák
- • GPS GSM modulok programozása
- • Hűtőgép probléma
- • Kombikazán működési hiba
- • Épületvillamossági tervező program
» Több friss téma
|
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Szia! Ezt hol tudom állítani?
Fordítótól függően, például a config macroval:
__CONFIG(FOSC_INTOSCIO & WDTE_OFF & PWRTE_OFF & MCLRE_OFF & CP_OFF & BOREN_OFF);
vagy pragma-val:
#pragma config FOSC = INTOSCIO
Microc-ben programozok. Abban a macro ugye jó?
Ott nem tudom mi van, a fentiek xc8-ban használhatóak.
A microc Ben az osszcilátort a projekt tulajdonságoknál modosítható ,bvalamint az osscon és osctune byteok helyes beállításával.
GY21 cím kiolvasás Nagyon régen programoztam PicbasicPro-ba és most kellene egy páratartalom mérő amihez GY21-et választottam de nem tudok még címet sem kiolvasni, 20Mhz -en 16f877-t használok. Mit csinálok rosszul? Valaki tudna segíteni?
DEFINE OSC 20
DEFINE I2C_SLOW 1
SDA VAR PORTB.4
SCL VAR PORTB.0
TRISB.4 = 1
TRISB.0 = 1
OPTION_REG.7 = 0
address VAR BYTE
ack VAR BYTE
found VAR BYTE
LCDOUT $FE, 1, "I2C kereses..."
PAUSE 1000
found = 0
FOR address = $08 TO $7F '
I2CWRITE SDA, SCL, address, 0, ack
IF ack = 0 THEN
found = 1
LCDOUT $FE, $C0, "Cim: ", HEX2 address
PAUSE 2000
ENDIF
NEXT address
IF found = 0 THEN
LCDOUT $FE, $C0, "Nincs eszkoz!"
ENDIF
END
Szia!
Ehhez a programhoz nem értek, de nem világos minden nekem. Van logikai analizátorod? Az sokat segít ilyen esetben.
De ha a PIC a master, és az adja ki az órajelet is, akkor annak a lábnak nem digitális kimenetnek kell lennie? Mert mintha most input lenne.
IGEN, tévedtem, azok jók, bocsánat!
De persze tévedhetek is, mert itt van ez:
I2CWRITE
Lehet ez a függvény beállít mindent, bár nem tudom hogy ebben a környezetben ez a lib hogy van meghívva.
Illetve nem tudom, hogy minden regisztert beállít-e ez a függvény vagy sem.
Nem lehetne C-ben? Mplab X-el megoldani a problémát? A hozzászólás módosítva: Márc 18, 2025
Mert elvileg itt egy jó leírása az egésznek, amiben kódok is vannak. A .h fájlokat meg kell csinálni és utána include-al berántani. A keresést meg ciklusba tenni.
Bővebben: Link
PIC16F877A Sziasztok!
Most kezdek PIC-el foglalkozni, de már is elakadtam. Lehet-e a PIC16F877A PIC EEPROM memoriáját előre beprogramozni karaktergenerátornak és, ha igen hogyan? Egy rövid leírás és egy program jól jönne! Köszönettel.
Szia!
Először is milyen nyelven írod a programot?
Másodszor pedig, ha most kezdesz el a PIC programozással foglalkozni, szvsz nem pont az eeprom kezeléssel kellene kezdeni.
Ha nem tudom megoldani a karaktergenerátort nem is érdemes foglalkozni, hogy mely nyelven írom a programot! Amúgy minden tanácsot, segítséget örömmel fogadok.
Idézet: „nem is érdemes foglalkozni, hogy mely nyelven írom a programot” Akkor legyen XC8-ra pár példa:
Fordítás közben EEPROM tartalom készítése (egyszerűsített változat):
#if _PIC18
#define DELTA_EEPROM 1
#else
#define DELTA_EEPROM 2
#endif
#define EEPROM_DATA(startaddress, ...) \
asm(" psect eeprom,class=EEDATA,delta="___mkstr(DELTA_EEPROM) \
",space="___mkstr(3)",noexec"); \
asm(" org " #startaddress ); \
asm(" irp arg," #__VA_ARGS__ ); \
asm(" db arg "); \
asm(" endm ")
EEPROM_DATA(0x10, 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33, 32, 32, 32, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 13, 34, 56, 128, 255, 0b0010);
XC8 belső funckióit használva:
uint8_t x;
x = EEPROM_READ(3); //olvasás (cím)
EEPROM_WRITE(3, x); //írás (cím, adat)
Igény szerint, saját funkció (PIC16F18426-hoz írtam):
//address 0 - 255
void ee_write(uint8_t address, uint8_t data) {
uint8_t int_value = INTCON;
NVMCON1bits.NVMREGS = 1;
NVMADR = 0x7000 | address;
NVMDATL = data;
NVMCON1bits.WREN = 1;
GIE = 0;
NVMCON2 = 0x55;
NVMCON2 = 0xAA;
NVMCON1bits.WR = 1;
while (NVMCON1bits.WR);
NVMCON1bits.WREN = 0;
INTCON = int_value;
}
uint8_t ee_read(uint8_t address) {
NVMADR = 0x7000 | address;
NVMCON1bits.NVMREGS = 1;
NVMCON1bits.RD = 1;
return (NVMDATL);
}
Tényleg kellene pontosítani pár dolgot. Legfőképpen azt, milyen nyelven akarsz programozni, melyik fejlesztőkörnyezetet akarod használni. Milyen karakterket, milyen kijelzőhöz akarsz generálni? Biztos vagy, a műszaki szemmel nézve őskövület, PIC16F877A használatában? Ez utóbbi annyira nem kritikus meg talán jobb is egyszerűbbel kezdeni, de jó ha tudod, ma már eljárt felette az idő.
Köszönöm a választ. Valóban grafikus kijelzőhöz kell és olyan ami nem felejti el kikapcsolás után sem, tehát mint egy PROM, EPROM vagy EEPROM. Külső karaktergenerátort tudok készíteni EPROM
2732 -vel a gond hogyan kerül be a PIC -be? A PIC16F877A a kezdőknek ajánlott, elnyűhetetlen PIC alapján került képbe és a sok IO miatt!
Az EEPROM mérete nevezett PIC-ben 256 bájt. Ha egyre gondolunk, a 2732-es EPROM 4096 bájtot tud tárolni. Ha a PIC programmemóriáját is felhasználod, akkor 256 + 8192 bájtnyi területed van.
Bekerülni a már említett módon tud. Esetleg a programmemóriát használva (pl. egy CRC tábla DS18B20 hőmérő IC-hez):
const uint8_t crctable[256] = {0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65, 157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220, 35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98, 190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255, 70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7, 219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154, 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36, 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205, 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80, 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238, 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115, 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139, 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22, 233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168, 116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53};
Talán ez a legegyszerűbb feltöltési mód.
Köszönöm a választ és az önzetlen segítséget! Én nem akarom mindkettőt ezért szeretném, ha már a PIC tartalmazná a karaktergenerátort. (A PIC EEPROM területe elegendő.) Említetted a PIC16F877 már elavult típus. Ha tudsz (szerintem igen) ajánlani modernebb hasonló tulajdonságokkal rendelkező típust tedd meg. (Még nincs kész tervem csak most alakul.) A programírást MPLAB x IDE (MPLAB-v.6.25) a feltöltést pickit3 segítségével gondoltam. (A pickit3 összes kisegítője megvan!) Ha továbbra is tudsz segíteni előre is köszönöm!
PIC16F877 helyett 16F877A, 16F887, 16F1937, 18F2620, 18F46Q84 stb.
Idézet: „szeretném, ha már a PIC tartalmazná a karaktergenerátort” Nem teljesen értem ezt a részt. A karakter generálása és annak tárolása két külön dolog. Generálni azzal generálod, amivel neked egyszerű, akár papíron is meg lehet csinálni. Az EEPROM (és/vagy a programmemória) adatokat tud tárolni, a feltöltésre írtam pár példát.
40 lábú PIC-ből van sok típus. Hacsak valami extra szolgáltatás nem kell, én PIC18F47Q43-at szoktam használni (EEPROM: 1024 bájt), az kb. mindenre elég, sőt. Nekem egyszerűbb így, mégha néha túl sokat is tud a feladathoz képest de nem kell megtanulnom 20 különböző adatlapot (és errata doksit), egyszerre többet véve általában van mennyiségi kedvezmény is. Csináltam már belőle három számjegyes nyomásmérőt is hétszegmenses kijelzővel. A tudásának kb. 0.2 %-a lett kihasználva de nem vacakoltam kisebb/régebbi kontrollerrel (eleve nagyon ügyes ADC van benne).
PIC16F877A: 2800 Ft nettó
PIC18F47Q43: 1200 Ft nettó
| (#) |
Bakman válasza (Felhasználó 32034) hozzászólására (») |
Márc 21, 2025 |
 |
/ |
 |
|
Jó meglátások, valahogy nem jutott eszembe a lista:
LED villogtatás, "Hello world!" stb.
Lehet előrébb jutnánk ha leírnád pontosan milyen célt szeretnél megvalósítani. Az eddigiekből én nem vagyok meggyőződve róla, hogy neked feltétlenül az eeprom-ra szükséged.
A perifériás mező a gyors mozgásokra van kihegyezve.
Ott a "sípoló" led is zavar hogy villog.
Annak ellenére hogy az idegrendszer 40...60Hz-en ketyeg elvileg.
Lehet igazad van! Tehát kell egy 40 - ig számláló számláló és ezt az értéket megjeleníteni, PORTB (grafikus kijelzőn) és (PORTC) hex adatként kivezetni. A folyamat közben minden számváltás után a PORTC fennmaradó egyik kimenetén jelenjen meg egy beíró impulzus. (L). A számláló nullázza önmagát. (0-39) A számlálót PORTA (nyomógombról) léptetni előre-hátra. Ezért lenne jó, ha mindkettő (számláló és karaktergenerátor) PIC -en belül lenne. A fennmaradó 6 db PORTA bemenet nyomógomb lenne és mindig a számláló által kijelölt értéknél váltana L és H színt között. (A szint váltást én végezném.) Ez lenne a PORTD ( 6 db) kimenet. Ezt a kimenetet kell látni a PORTB kimeneten is. Röviden ennyi!
Kérlek csak akkor foglalkozz ezzel ha időd és energiád is van hozzá!
Köszönettel.
Szia!
Meg tudnád itt mutatni, hogy milyen kijelzőre gondoltál pontosan?
Milyen nyomógombra?
A kimeneteknek hány biteseknek kell lennie?
Idézet: „Tehát kell egy 40 - ig számláló számláló és ezt az értéket megjeleníteni, PORTB (grafikus kijelzőn) és (PORTC) hex adatként kivezetni.” Tehét ha jól értem a PORTA valamelyik két lábára kötnél két nyomógombot, egyet az előre, egyet a hátra léptetéshez, ami egy számlálót 0-39-ig léptet. Ez eddig nem sima ügy. A grafikus kijelző kezelése már kicsit macerásabb, de az sem nagy gond (írtam cikket róla jópár éve). A HEX megjelenítése a PORTC-n részt nem egészen értem. Hogyan akarunk HEX adatot megjeleníteni egy 8 bites porton. Simán lehet, hogy én vagyok lemaradva valamiről, de ennek a megoldását nem igazán látom még. Jó lenne egy kapcsolási rajz is, hogy biztosan értsük a dolgot.
Először is köszönet Neked hogy ezzel foglalkozol!
Igen a rajz sokat segít a megértésben. Így elkészítettem az első változatot amely szerintem a FÓRUM tagok segítségével még változni fog. Remélve nem követtem el nagy hibákat így most feltöltöm.
Valami más formátumban vagy jobb minőségben kellene feltenni, mert alig kivehető rajta bármi is.
Nekem az órarutin működik ezzel:
'DEFINE I2C_HOLD 1 'Adás ideje alatt az órajel mennyi
'ideig van alacsony szinten
'IDO
LCD_HOUR VAR BYTE
LCD_MIN VAR BYTE
LCD_SEC VAR BYTE
DUMY VAR BYTE
'I2C BUSZ Ricoh óra ic kiolvasás és írás
SDA VAR PORTC.4
SCL VAR PORTC.3
I2CRead SDA, SCL, $64, $0, [LCD_SEC, LCD_MIN, LCD_HOUR]
I2CWrite SDA, SCL, $64, $0, [LCD_SEC, LCD_MIN, LCD_HOUR] 'IDO BEALLITASA
INIT_RICOH:
I2CWrite SDA, SCL, $64, $F0, [$20] 'FORMATUM BEALLITASA
Return
A grafikus kijelzőben van egy karakterkészlet csak a karaktereket kell megcímezni. Ha egyéb más szimbólumot akarsz megjeleníteni, akkor azt leszoktam tölteni a PIC program indulásakor a kijelzőbe.
Részlet az LCD kezelésre és I2C re
A hétköznapi karakteres kijelzőt 4 bites módban használom. Ez a láb kiosztás de mindenki úgy használja ahogy neki éppen kedve van. Nálam ez a kiosztás:
DEFINE LCD_DREG PORTD ' adatregiszter port
DEFINE LCD_BITS 4 ' 'hánybites az adat
DEFINE LCD_DBIT 4 ' Melyik bitnél kezdődik az adat itt A4 nél
DEFINE LCD_RSREG PORTD ' melyik vezérlő regiszter
DEFINE LCD_RSBIT 1 ' Az RS bit a PORTD.1 kimenet kék lcd 4
DEFINE LCD_RWREG PORTD
DEFINE LCD_RWBIT 2 ' RW bit a PORTD.2 piros lcd 5
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 3 ' Engedélyező kimenet PORTD.3 zöld lcd 6
DEFINE LCD_LINES 2 ' Kétsoros LCD
DEFINE WATCHDOG TRUE
csipogo VAR PORTD.0 '19 láb buzzer narancssárga
RS VAR PORTD.1 '20. láb' lcd 4 láb kék
'--------------------------------------------------------
RW VAR PORTD.2 '21. láb lcd 5 láb piros
E VAR PORTD.3 '22. láb lcd 6 láb zöld
' VAR PORTC.4 '23. láb SDI/SDA
' VAR PORTC.5 '24. láb SDO
' VAR PORTC.6 '25. láb TX
' VAR PORTC.7 '26. láb RX
' VAR PORTD.4 '27. láb LCD D4
' VAR PORTD.5 '28. láb LCD D5
' VAR PORTD.6 '29. láb LCD D6
' VAR PORTD.7 '30 láb LCD D7
' '31 GND
' '32 +
ford_be VAR PORTB.0 '33 láb INTERUPT
balra VAR PORTB.1 '34 láb sárga 1 nyomógombok
jobbra VAR PORTB.2 '35 láb kék 2
Elfogad VAR PORTB.3 '36. láb zöld 3
Kilep VAR PORTB.4 '37. láb piros 4
' VAR PORTB.5 '38. láb
' VAR PORTB.6 '39. láb PGC
' VAR PORTB.7 '40. láb PGD
jobbra_ny VAR BYTE
balra_ny VAR BYTE
csillag VAR BYTE
algomb VAR BYTE
jobbra_ny = 126 ' Ez a karakter ASCCII kódja
balra_ny = 127 '
OK = 33 ' !
csillag = 42 '*
---------- Letöltöm a hosszú ó betü karakter mintáját. A motor indítási kérésnél ott van hogyan kell formailag megadni hogy ez jelenjen meg kijelzőn: Valóban indít?
LCDOut $02,$04,$00,$0E,$11,$11,$0E,$00 'ó (ASCII $05) ó
A grafikus annyiban bonyolultabb, hogy ki kell jelölnöd, hogy a felső vagy az alsó tömbbe írsz.
'Input ford_be
Input jobbra
Input balra
Input elfogad
Input Kilep
Output PORTD.4
Output RS
Output RW
Output E
Itt töltöm le az ékezetes betüket az Lcd-b és
motor_indit_kerdes:
inditani = 0
LCDOut $fe, 1 ' Törli az LCD -t
LCDOut $FE,$80," Val",$05,"ban indit?" ', DEC sz
LCDOut $FE,$C0," ",csillag," Igen ", ok," Nem"
sz=sz+1
Ricoh óra ic
DEFINE I2C_HOLD 1 ' Adás ideje alatt az óra jel mennyi
' ideig van alacsony szinten
IDO
LCD_HOUR VAR BYTE
LCD_MIN VAR BYTE
LCD_SEC VAR BYTE
'I2C BUSZ
SDA VAR PORTC.4
SCL VAR PORTC.3
I2CRead SDA, SCL, $64, $0, [LCD_SEC, LCD_MIN, LCD_HOUR]
INIT_RICOH:
I2CWrite SDA, SCL, $64, $F0, [$20] 'FORMATUM BEALLITASA
Return
---------------------
De lehet használnia PIC belső I2C modulját is. Az kicsit macerásabb.
' Regiszter jelző bitjeinek meghatározása
SSPIF VAR PIR1.3 ' SSP (I2C) megszakitás flag
BF VAR SSPSTAT.0 ' SSP (I2C) Buffer tele jelző bit
R_W VAR SSPSTAT.2 ' SSP (I2C) Olvas/Ir
D_A VAR SSPSTAT.5 ' SSP (I2C) Adat/Cím
CKP VAR SSPCON.4 ' SSP (I2C) SCK órajel polaritás jelző bit
WCOL VAR SSPCON.7 ' SSP (I2C) SSPBUF-be irást jelző bit
SSPOV VAR SSPCON.6 ' SSP (I2C) Vétel túlcsordolás jelző
SSPEN VAR SSPCON.5 ' SSP (I2C) I2C mód Engedélyezés
' ezzel a bittel engedélyezem a 18. és 23 láb I2C módban való működését
' ha nem teszem a lábak hagyományos I/O -ban múködnek!!!
'
'Write 1,2 ' EEPROM 1, cellába 2 -t teszek eszközcím
'Read 1,EEADR ' Cím beolvasás
'I2Caddress = EEADR ' cím beállitás bekapcsoláskor
' kiosztáskor figyelni az azonos címekre!
' I2C slave mód és fizikai cím beállítás
' Az SSPADD regiszterbe került értéket hasonlitja össze a master-által
' elküldöttel. Az SSPADD -ban lévő érték a fizikai címe az eszköznek
' PIC 16F87X Databook 73. oldal ha egyezik bebillenti a SSPSTAT 5,
' bitejét ez most egy D_A nevú bitváltozó
SSPADD = I2Caddress ' az eszközcime, ezt elküldheti egy másik ezsköz is
' Kiirja EEPROM-ba újrainditás után az új cimen van
' ez lehet egy ön RESET is! ha régi cím nem egyezik
' a küldöttel! Egyik láb a MCRL - re kötve!
SSPCON2 = 0 ' általános hivás cim tiltva, erre nem válaszol
SSPCON = $36 ' I2C slave-hez 7 bites címzést használok
' elég a 127 eszköz egy dróton bocs 2 -n
readcnt = 0 ' Byte számláló nullázás
'**************************************************************************
i2cslave: ' I2C slave szubrutin
SSPIF = 0 ' megszakítás jelzö bit törlés
IF R_W = 1 Then i2crd ' ha R/W bit egy akkor olvasni akar a MASTER
IF BF = 0 Then i2cexit ' ha a buffer üres (nincs adat) vissza
IF D_A = 1 Then i2cwr ' Adat kérés jött és nem cím!!
' Ha a puuferban lévő adat egyezik
' a cimmel a következőt kell tenni
IF SSPBUF != I2Caddress Then i2cexit ' Törli a Címet a bufferből
' mert az jön először!!!
readcnt = 0 ' majd törli a Byte számlálót mert a cím
' BYTE eggyel növelte!
GoTo i2cexit
i2cwr: ' I2C adat irás az eszközbe
datain = SSPBUF ' Puffer tartalom változóba
GoTo i2cexit ' és vissza
i2crd: ' I2C adat olvasás az eszközről
IF D_A = 0 Then ' adat jött az offset értéke!!
readcnt = 0 ' a Byte számláló törlése
EndIF
' adat küldés a BYTE számláló szerint
SSPBUF = dataout[readcnt] ' Adat a Ki/Bemeneti bufferbe index szerint
CKP = 1 ' SCL drót H szinten
readcnt = readcnt + 1 ' Byte számláló növelés
'GoTo i2cexit '
' most csak 1 BYTE-ot küldünk mert a MASTER annyiszor fogja kérni ahány
' Byte kell neki ez igy nézki a MASTER program ban:
' I2CRead SDA,SCL,$02,[STR a\8] azaz 8 BYTE-t kér
i2cexit:
Return
Részletek egy programból A hozzászólás módosítva: Márc 27, 2025
Moderátor által szerkesztve
Megpróbáltam egy .pdf fájlt létrehozni remélem sikerrel.
Igazából nem lett jobb a minőség sajnos. Milyen programmal készült a rajz?
|
|