Fórum témák
» Több friss téma |
Szia!
Érdemes elolvasni az Errata -t is...
Olvasom, de ha erre gondoltál ,
BANKSEL TRISC bsf TRISC,3 bsf TRISC,4 ez megvan oldva az IO_setupban, csak azt nem másoltam be neked. szerk. Látom megfordítottad az sspcont- és az addresst. Kipróbálom. szerk2 : Kipróbáltam, a címzés ugyanúgy még nem jó sajnos
Rájöttem a hibámra! Az hogy azt jelzi a LED -em hogy kapja az ack-t az is lehet hogy a slave folyamatossan ack-z, ezért egy jelző ledet beraktam a masterbe, írásnál villogjon, de nem. Tehát a mester a foglaltság jelző ciklusban pörög. Így valószínűleg az a hiba oka hogy a slave lenttartja a vonalakat. Csak azt nem tudom hogy miért?!
Szia!
Az órajel nyújtásával csinál időt a cím / adat feldolgozására (íras / olvasás ellenőrzésével, eszközön belüli cím dekódolással, adat elővételével olvasáskor). Az SSPCON CKP bitjét 1-re állítva lehet jelezni, hogy kész az újabb adat fogadására / küldésére.
Kicsit átalakítottam a slave main programját, most így néz ki:
I2C_MAIN BSF PORTC,1 BANKSEL SSPSTAT BTFSC SSPSTAT,0 GOTO I2C_MAIN BANKSEL SSPCON BTFSC SSPCON,6 GOTO I2C_MAIN BANKSEL SSPBUF MOVF SSPBUF,W BANKSEL SSPSTAT BTFSC SSPSTAT,0 GOTO $-.1 BANKSEL PIR1 BCF PIR1,3 banksel SSPCON bcf SSPCON,SSPOV banksel SSPCON BSF SSPCON,4 GOTO I2C_MAIN legalábbis nekem ez jött le hogy így kéne hogy legyen a figure 9-6-ból. De sajnos így sem jó elmegy egyből a master ack failre Kicsit megroskadtam tegnap még hajnali 1 ig ezt nyűztem h működjön de nem. A Te algoritmusod sem működik úgy sem hogy a végére odaraktam a CLK emelést. (tegnap amúgy én is felfedeztem ezt a clk-sat de aztán azt hittem az csak adásnál van mert az adás ábrájában volt csak)
Hp41C - valami segítséget tudnál még adni? minél többet olvasok az i2c-ről annál többet tudok róla, de még így is rám férne a segítség, tapasztalatlan vagyok. Köszi előre is
Köszönöm szépen a segítségeteket! A Legelső link amit küldtél Hp41C Az nagyon jó, nemsokára be is égetem átalakítva a progit, úgylátom a sspstat alapján kell kiválasztani hogy miket kell törölni.. Fifikásnak tűnik hogy van 5 állapota (szóal 5 különböző módon kell törölni slave üzemmódban ) pagaby - Köszönöm szépen,de elsősorban a slave a kritikus, a master már megvan
Szia!
A Microchip fórumot is átnézve találtam egy módosítást az eredeti AN734-hez képest...
Amúgy az eredeti AN734-est lesem tudom fordítani mert rossz valami az isr vektoroknál most fogom átnézni. De arra fúj az mp lab hogy "felülírom az előző vektorokat".
Szerk. Rájöttem valamire, nekem elég lenne egy olyan progot írnom hogy start stop megszakítást okoz, és akkor elmegy start megszakításnál kiolvassa a regisztert, törli a pir1 ben a if bitet és ennyi!
Szia!
A reset és az isr között 4 -nél több utasítás van: org 0x0000 ;Reset nop ; ICD2 -nek kell goto init org 0x0004 ;Interrupt Szerintem az irány jó volt, nem kellene másfelé keresni a megoldást... Egy pickit2 jól jönne, fel lehetne venni a jelalakokat. A PGC és PGD vonalon (a pickit2-ben) levő lehúzások miatt egy-egy meghajtót (74hc125) kellene alkalmazni.
Szia!
Ez a gyári program részlet : STARTUP code 0x00 nop goto Startup ; nop ; 0x0002 nop ; 0x0003 goto ISR ; 0x0004 PROG code itt a Startup=init Nem egy megszakítást írtam már de sajnos nem értem ezt a code-s parancsokat, így nemtudtam átírni a saját szájam ízére a programot:S Az első nop nem az ICD2-miatt kell, hanem a Kónya könyv alapján a debug miatt. Eddig szkóppal mértem a vonalakat, így ha működne a slave megoldás tudnák konkrét jelalakot is mutatni nektek. A mastert már mértem és szépen látni magát a kommunikációt Jó lenne ha ezt a vektoros problémát amit kimásoltam megtudnánk oldani. Neked lefordult vagy nem nézted? szerk. udata WREGsave res 1 STATUSsave res 1 FSRsave res 1 PCLATHsave res 1 A legelső hibát az udata-ra jelzi ki. Nem értem hogy lehet hiba egy "gyárilag" megírt programban:S Egyszerű lenne átírni az egész progit saját magamnak, mivel nálam csak a 2. eset állhat fent (az 5 közül). Átírom
Szia!
- Más szelek fúnak már a nagy kapacitású pic-ek miatt... Ezek a programok már linker scriptet használnak, relokálható kódot fordítanak és a linker dönti el mi hol lesz a memóriában. - A régi megoldás absolute kódot fordított, már a forrás állományban megadták a memória címeket. Javítsd ki az elejét és fordíts abszolut kódot:
Köszönöm, már újraírtam közben, elvileg működik mindjárt tesztelem. Először én is csak így akartam megoldani mint ahogy Te most csináltad, de fújt a fordító a változók körül.. Így hát megszabadultam pár dologtól
Szerk! SSPCON biteket átírtam, most már csak az a gond a rendszerrel hogy megint lenttarja elvileg a vonalakat a slave:S
Nem megy el megszakításra:S Na szóval itt a javított program. Működése érdekes, mesélem. Van mindkét eszközömön reset gomb. A master bekapcsolás után egyből elkezdene adni ha a busz nem foglalt. de valamiért még mindig ízt csinálja mintha foglalt lenne a vonal:S ha úgy kapcsolom be a slavet hogy folyamatosan resetelem a mastert, akkor a slave elmegy a hibaüzenetre. De kkor nem megy el a hibaüzenetre ha úgy kapcsolom be, hogy a masteron nincs táp. Na akkor ez hogy is van? Ha meg él a Slave, és utána kapcsolom be a mastert akkor a slave el sem megy isr rutinra:S tehát nem érzékeli h jött volna start feltétel, de a vonalat meg foglalja..
Szia!
Megnéznéd ez mit csinál...
Ugyan azt csinálja mint az én programom, a helyzet változatlan:S Nem tudom hol leledzik a hiba. Nem okoz megszakítást a start illetve a stop??
A master, a legelső sspstat r_w vizsgálatnál akad meg, és ott pörög végtelenségig:S Nemértem h a slave miért tartj lent a vonalat
Szia!
Válasszuk ketté a feladatot: - Amíg a master sem jó a slavet nem is lehet mérni. - Kellene egy I2C illesztésű slave: EEProm, bővítő stb. - Meg kell nézni, hogy egy vagy két eszközön belüli cím kell neki - Ez a Master működik mind 1 (PCF8583) mind 2 (24FC1025) eszközön belüli cimmel rendelkező eszközzel (ternészetesen egy cím használata esetén a második elküldését ki kell hagyni). Nem figyeli az ACK-t. - Meg kell vizsgálni, hogy működik-e nálad is. - Ha nem, akkor a felhúzásokat ellenőrizni. - Ha működik, ki lehet egészíteni az ACK vizsgálatával - benne van a kódban csak ki van kommentezve. - Ha az ACK ellenőrzése is működik, be kell állítani a slave elvárásához (1 cím / 2 cím). - Most már lehet nézni a slave programot. - Jó lenne felvenni a jelalakokat. Ha nincs mivel, akkor a slave programot kiegészíteni, hogy az állapot változásokat küldje el az uart-on, amit a pickit2 UART Tool segítségével vagy max232-vel RS232-re konvertálva PC soros vonalával lehet megjeleníteni. Ha mind a kettőt egyszerre fejlesztjük, akkor továbbra is sötétben tapogatódzunk....
Szia!
Teljes mértékben igazad van, vettem 3 eléggé "buta" de egyszerű, és olcsó eepromot. Mindhárom Atmel 24C02 Kiegészítettem a programom, egy olvasással,(azt amit itt találtam, illetve ebben a topicban beszéltetek róla) kiszedtem belőle az ACK checkeket, írok bele, kiolvasom, és nem jó a kiolvasott adat. Különben néztem és már a címzésnél sem küld vissza ack-t.. Pedig a címek holt biztosak, a masterrel 1010 000 0 -et címzek tehát írás ugye, és az eepromomon meg 3 láb segítségével betudom állítani a címét, az alapcíme 1010 xxx az összes lábát földrekötöttem, így elvileg a címe 1010 000 megkapja a stabil 5 voltot, a write protect lábát földre kötöttem. De mégsem megy. Felhúzóellenálásokat leellenőriztem, jók. Az eeprom adatlaja. Végtelenül egyszerű eeprom. De mégsem jó valami
Szia!
- Az EEProm elég lassan ír... Kivártad az 5ms-et. - Mivel programozod a pic-eket? - Csak az EEProm volt a buszon? - Jó lenne összeállítani a mérést...
Szia!
Igen kivárom az 5 ms-et bőven többet is. ICD2-vel programozom, most ugye csak a mastert. Igen csak az eeprom van a buszomon. Mérést mindjárt összerakom. Valószínű hogy a master prograban a hiba, de akkor hogy működhetett másnak? Mérés A clk kicsit elvan szállva, mint konstans úgy mutatkozik kb. Böngészem aprogramot hogy miért.
Pontosítok, a clock az ami kiválóan működik, ezzel ellentétben az SDA vonal egy konstans magas értéken áll ez hogy lehet? ha látom a clockon a 3 küldött bájtot, az sda , meg áll.
Szerk. Attól tényleg tönkremehet maga a port hogy ha nemvolt összeföldelve a két egység? Azaz össze volt csak a két stabíc tokja egy darab dróttal szóval forrasztott kötés nemvolt ,párszor meg is szakadhatott így gondolom.
Szia!
- Az SDA vonal és a 16F877A RC4 közötti összeköttetés jó? - Ha sikerült az SDA vonalba életet lehelni, próbáld meg ezt.. - Próbáld ki az RC3 és RC4 lábakat egy led villogtató programmal...
R.I.P. SDA Hát ez meghalt teljesen:S Szerezhetek be egy új picet.. Hiába próbálkozhatunk itt mi ha már régóta halott a picem:S
Használj másik lábat és csináld szoftverből.
Vagy add nekem a PIC-et
Szoftverből számomra lehetetlen lenne megcsinálni, mármint másik lábra. De nem merek próbálkozni olyan piccel sem ami itthon van (ami tudja a master módot- csak szoftveresen) ugye abban benne van akkor a sift regiszter, szóval az kisebb munka lenne mint egy másik lábra megírni, de nem Amíg ez sem működik nem nehezítem az életem. Jó lesz ez a pic még nekem valamire Chipcad-nél is 1200ft Vác-on meg 1900
Szia!
A propeller topikban találsz 16F628-ra megírt tesztelt I2C master programrészt. A fejlesztéshez tényleg jó lenne még ez a pic.... Használj fel két működő lábat... Így máris neki lehet állni a slave programjának. |
Bejelentkezés
Hirdetés |