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 ![]() ![]()
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 ![]() ![]()
Hp41C - valami segítséget tudnál még adni?
![]() ![]()
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
![]() ![]()
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
![]() 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
![]() 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
![]() ![]() ![]()
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
![]() ![]() ![]()
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 |