Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   786 / 1320
(#) Attila86 hozzászólása Aug 10, 2010 /
 
Honnan lehet lőni 24 bit bináris -> 8 digit BCD átalakító rutint?
(#) Hp41C válasza Attila86 hozzászólására (») Aug 10, 2010 /
 
Szia!

Innen... Tedd már be a kedvencek közé, már sokadszor írom le...
(#) Hp41C válasza Ideiglenes hozzászólására (») Aug 10, 2010 /
 
Szia!

Elolvastam, de meg sem említi, hogy ha nem csak a Page0 -n van kód, akkor a megszakítási rutinnak a PCLATH-t is menteni, a saját lapjára állítani és visszaállítania kell. A saját lapra való állítás előtt tilos a goto és a call használata.
A "0. lapra való regiszter mentés" a PCLATH beállítása előtt ugrik, ami visszamegy arra a lapra, ahonnan a megszakítási rutinba jött... Egy több lapot használó programban biztos kék halál lenne, ha a pic ismerné a színeket. :shocking:
(#) Attila86 válasza Hp41C hozzászólására (») Aug 10, 2010 /
 
Köszönöm!

De ahogy nézem az utasításokat ezek 16F-re vannak. Mondjuk nem nagy ügy átírni, meg találtam is benne pár hülyeséget (pl.: "MOVLW 3"???). Kijavítgattam:
  1. KONV_24bit_8digit
  2. BINDEC:         CALL CLRDIG
  3.                 MOVLW d'24'
  4.                 MOVWF COUNTER1
  5.                 GOTO SHIFT1
  6. ADJBCD:         MOVLW DIGIT1
  7.                 MOVWF FSR2
  8.                 MOVLW d'7'
  9.                 MOVWF COUNTER2
  10.                 MOVLW d'3'
  11. ADJLOOP:        ADDWF INDF2,F
  12.                 BTFSS INDF2,3
  13.                 SUBWF INDF2,F
  14.                 INCF FSR2,F
  15.                 DECFSZ COUNTER2,F
  16.                 GOTO ADJLOOP
  17. SHIFT1:         CALL SLCNT
  18. SLDEC:          MOVLW DIGIT1
  19.                 MOVWF FSR2
  20.                 MOVLW d'8'
  21.                 MOVWF COUNTER2
  22. SLDLOOP:
  23.                 RLCF INDF2,F
  24.                 BTFSC INDF2,4
  25.                 BSF STATUS,C
  26.                 BCF INDF2,4
  27.                 INCF FSR2,F
  28.                 DECFSZ COUNTER2,F
  29.                 GOTO SLDLOOP
  30.                 DECFSZ COUNTER1,F
  31.                 GOTO ADJBCD
  32.                 RETURN
  33. SLCNT:          RLCF COUNT0,F
  34.                 RLCF COUNT1,F
  35.                 RLCF COUNT2,F
  36.                 RETURN
  37. CLRDIG:         CLRF DIGIT1
  38.                 CLRF DIGIT2
  39.                 CLRF DIGIT3
  40.                 CLRF DIGIT4
  41.                 CLRF DIGIT5
  42.                 CLRF DIGIT6
  43.                 CLRF DIGIT7
  44.                 CLRF DIGIT8
  45. RETURN

A DIGIT1-DIGIT8 lennének gondolom a kimeneti regiszterek és talán a COUNT0-COUNT2 a bemenet? Mert semmit nem csinál a rutin...
(#) Hp41C válasza Attila86 hozzászólására (») Aug 10, 2010 /
 
Szia!

Én másikat választottam, ez tetszőleges hosszúságra (2 BCD digitenkénti lépéssel) megírható:
  1. ;################################################
  2. ; Convert 24 bit binary number
  3. ; in TEMP+7:TEMP+6:TEMP+5
  4. ; to a 32 bit packed BCD number
  5. ; in TEMP+3:TEMP+2:TEMP+1:TEMP
  6.  
  7. BIN2BCD24:                                              ; 24 bit binary to BCD converter
  8.                 rcall   ClearTemps
  9.                 movwf   PRODL
  10.  
  11.                 bcf             STATUS,C,A
  12.                 bra         BIN2BC2
  13.  
  14. BIN2L:
  15.                 lfsr    FSR0,TEMP
  16. BCDADJ:
  17.                 movlw   0x33
  18.                 addwf   INDF0,F,A
  19.                 btfsc   INDF0,3,A
  20.                 andlw   0xF0
  21.                 btfsc   INDF0,7,A
  22.                 andlw   0x0F
  23.                 subwf   POSTINC0,F,A
  24.                 btfss   FSR0L,2,A
  25.                 bra             BCDADJ
  26.  
  27. BIN2BC2:
  28.                 rlcf    TEMP+5,F,A              ; Shift Binary bytes
  29.                 rlcf    TEMP+6,F,A
  30.                 rlcf    TEMP+7,F,A
  31.  
  32.                 rlcf    TEMP,F,A                ; Shift BCD    bytes
  33.                 rlcf    TEMP+1,F,A
  34.                 rlcf    TEMP+2,F,A
  35.                 rlcf    TEMP+3,F,A
  36.  
  37.                 decfsz  PRODL,F,A               ; Loop for 24 times
  38.                 bra         BIN2L
  39.                 return
  40.  
  41. ClearTemps:
  42.                 clrf    TEMP,A
  43.                 clrf    TEMP+1,A
  44.                 clrf    TEMP+2,A
  45.                 clrf    TEMP+3,A
  46.                 retlw   .24


És visszafelé:
  1. ; 7 digit packed BCD to 24 bit binary
  2.  
  3. BCDTOHEX:
  4.                 movlw   .24
  5.                 movwf   PRODL,A
  6.  
  7. BCDTOHEXLoop:
  8.                 bcf             STATUS,C,A
  9.                 rrcf    TEMP+7,f,A
  10.                 rrcf    TEMP+6,f,A
  11.                 rrcf    TEMP+5,f,A
  12.                 rrcf    TEMP+4,f,A
  13.  
  14.                 rrcf    TEMP+2,f,A
  15.                 rrcf    TEMP+1,f,A
  16.                 rrcf    TEMP,f,A
  17.  
  18.                 lfsr    FSR0,TEMP+4
  19.  
  20. BCDTOHEXCorr:
  21.                 movlw   0x33
  22.                 btfss   INDF0,3,A
  23.                 andlw   0xF0
  24.                 btfss   INDF0,7,A
  25.                 andlw   0x0F
  26.                 subwf   POSTINC0,f,A
  27.  
  28.                 btfss   FSR0L,3,A
  29.                 bra             BCDTOHEXCorr
  30.  
  31.                 decfsz  PRODL,f,A
  32.                 bra             BCDTOHEXLoop
  33.                 return

Ahogy látszik pic18F-re átírtam őket. A temp változó címének alsó három bitje 0 kell legyen, bár egy kis további kódolással ez a megkötés is megszüntethető.
(#) mrobi válasza potyo hozzászólására (») Aug 10, 2010 /
 
A hardveres pergésmentesítést megtaláltam. De a szoftvereset nem. Tudnál benne segíteni?
(#) Hp41C válasza mrobi hozzászólására (») Aug 10, 2010 /
 
Szia!

A gomb lenyomva ad 0-t.
Vegyél fel minden gombhoz egy adatbájtot. Egy ciklusban léptesd egyet balra a gombhoz tartozó adatot. A 0. bitre másold be a gomb bemeneti értékét. A léptetés után a 7. bitet állítsd 1-re. Eztán nézd meg, hogy az adat 0xC0 -e. Ha igen, akkor a pergés lezajlott, az utolsó 6 minta 0, hívd meg a gombhoz tartozó eljárást. Egyébként egy kis várakozás után menjen a ciklus elejére.
(#) Attila86 válasza Hp41C hozzászólására (») Aug 10, 2010 /
 
Hűűű ez sokkal jobban hangzik és ez már csinál is valamit! De persze nem azt amit kellene...
A bemeneti regiszterek ugye a TEMP+7, TEMP+6 és TEMP+5. A kimenet pedig a TEMP...TEMP+7. Így próbáltam de hatalmas számok jöttek ki, noha a végén 9-nél nem szabadna többnek lennie egyik regiszternek sem mert ugye BCD...
Idézet:
„A temp változó címének alsó három bitje 0 kell legyen”

Lehet hogy ez a gond, mert nálam a TEMP változó a 020 és a 027 címek közt terül el a Watch ablak szerint. Bár itt a cím maga csupán három bites... nem értem...
(#) Hp41C válasza Attila86 hozzászólására (») Aug 10, 2010 /
 
Szia!

A kimeneti változókban helyiérték szerint TEMP+7:TEMP+6:TEMP+5 két - két decimális számjegy van (Pakolt BCD). Innen a nagobb helyiértékű a swapf TEMP+x,w és andlw 0x0F, az alacsonyabb az movf TEMP+x,w és andlw 0x0F utasításokkal olvasható ki.
A TEMP nálam a 0x000 címen van. A kritikus művelet a ciklusoknál van, a kilépési feltételt egyszeű bitvizsgálattal oldották (oldom) meg: btfss FSR0L,2,A illetve btfss FSR0L,3,A - 0x20 címmel is mennie kell. Szerintem két oka lehet a hibának: a bemeneti oldalon helyiérték csere, vagy a kiolvasásnál valami elcímzés... Illetve FSR0 mentése a megszakításban - ha az ISR használja...
(#) Pepebá válasza cicero hozzászólására (») Aug 10, 2010 /
 
Hali!
Kösz, a Reset funkciót ismerem. A resetre vagy a Reset Device-re nem történik semmi. Sztem a fordítás körül lehet valami gond. Esetleg kitudnál segíteni a Hex file-vel, össze tudnám hasonlítani.
Üdv.
(#) Attila86 válasza Hp41C hozzászólására (») Aug 10, 2010 /
 
Szia!
Átszabtam egy kicsit, de nem akar működni.
  1. KONV_24bit_8digit
  2.   ; Convert 24 bit binary number
  3.   ; in TEMP+7:TEMP+6:TEMP+5
  4.   ; to a 32 bit packed BCD number
  5.   ; in TEMP+3:TEMP+2:TEMP+1:TEMP
  6.  
  7. ; 24 bit binary to BCD converter
  8.         rcall   ClearTemps
  9.         movwf   PRODL
  10.    
  11.         bcf             STATUS,C,A
  12.         bra             BIN2BC2
  13.    
  14. BIN2L:
  15.         lfsr    FSR2,TEMP
  16. BCDADJ:
  17.         movlw   0x33
  18.         addwf   INDF2,F,A
  19.         btfsc   INDF2,3,A
  20.         andlw   0xF0
  21.         btfsc   INDF2,7,A
  22.         andlw   0x0F
  23.         subwf   POSTINC2,F,A
  24.         btfss   FSR2L,2,A
  25.         bra             BCDADJ
  26.    
  27. BIN2BC2:
  28.         rlcf    TEMP+5,F,A    ; Shift Binary bytes
  29.         rlcf    TEMP+6,F,A
  30.         rlcf    TEMP+7,F,A
  31.    
  32.         rlcf    TEMP,F,A      ; Shift BCD    bytes
  33.         rlcf    TEMP+1,F,A
  34.         rlcf    TEMP+2,F,A
  35.         rlcf    TEMP+3,F,A
  36.    
  37.         decfsz  PRODL,F,A     ; Loop for 24 times
  38.         bra             BIN2L
  39.  
  40.         swapf   TEMP+7, w
  41.         andlw   0x0F
  42.         movwf   digit8
  43.         movf    TEMP+7, w
  44.         andlw   0x0F
  45.         movwf   digit7
  46.  
  47.         swapf   TEMP+6, w
  48.         andlw   0x0F
  49.         movwf   digit6
  50.         movf    TEMP+6, w
  51.         andlw   0x0F
  52.         movwf   digit5
  53.  
  54.         swapf   TEMP+5, w
  55.         andlw   0x0F
  56.         movwf   digit4
  57.         movf    TEMP+5, w
  58.         andlw   0x0F
  59.         movwf   digit3
  60.  
  61.         swapf   TEMP+4, w
  62.         andlw   0x0F
  63.         movwf   digit2
  64.         movf    TEMP+4, w
  65.         andlw   0x0F
  66.         movwf   digit1
  67.  
  68.         RETURN
  69.    
  70. ClearTemps:
  71.         clrf    TEMP,A
  72.         clrf    TEMP+1,A
  73.         clrf    TEMP+2,A
  74.         clrf    TEMP+3,A
  75.         retlw   .24

A megszakítás (meg semmi más) nem nyúl az FSR2 mutatóhoz, direkt ezért írtam át az eredetileg FSR0-t FSR2-re, mert én az FSR0-t és az FSR1-et használom más célokra.

Szerk.: A TEMP+4-et nem írtad hogy abban is pakolt BCD lenne, de gondolom csak elfelejtetted, hiszen akkor csak 6 digit lenne 8 helyett.
(#) Attila86 válasza Attila86 hozzászólására (») Aug 10, 2010 /
 
MEGVAN!
A pakolt BCD nem a TEMP+7, TEMP+6 és TEMP+5 regiszterekben van, hanem a TEMP+3, TEMP+2, TEMP+1 és TEMP. :yes:
(#) Hp41C válasza Attila86 hozzászólására (») Aug 10, 2010 /
 
Szia!
Bocsánat elírtam... Mentségem, hogy egy több hónapos programból szedtem ki - a frekvencia mérőból ... A bemeneti sort másoltam ki kimenetnek. Még egyszer bocsánat. Remélem működik....
A digitek kiíratásánál oldottam meg a pakolt BCD kettévágását:
  1. movf    TEMP+3,w,A                      ; Get              10^6 digit
  2.                 rcall   PutLeadingDigit
  3.                 swapf   TEMP+2,w,A                      ; Get 10^5 and 10^4 digit
  4.                 rcall   PutLeadingTwoDigits
  5.                 swapf   TEMP+1,w,A                      ; Get 10^3 and 10^2 digit
  6.                 rcall   PutLeadingTwoDigits
  7.                 swapf   TEMP,w,A                        ; Get 10^1 and 10^0 digit
  8.  
  9. PutLeadingTwoDigits:
  10.                 movwf   TEMP+5,A
  11.                 rcall   PutLeadingDigit
  12.                 swapf   TEMP+5,w,A
  13.  
  14. PutLeadingDigit:
  15.                 andlw   0x0F                            ; Use only low nibble
  16.                 iorwf   LEADING,BANKED          ; Update loading 0 state
  17.                 dcfsnz  TEMP+4,f,A                      ; If decimal dot in this position
  18.                 bra             PutDigit                        ; Keep 0
  19.                 btfsc   STATUS,Z                        ; if it is a leading 0
  20.                 addlw   -0x10                           ;  convert it to ' '
  21.  
  22. PutDigit:
  23.                 addlw   0x30                            ; Convet to ASCII
  24.                 movwf   POSTINC0                        ; Store in memory
  25.  
  26. ChkDecimalDot:
  27.                 tstfsz  TEMP+4,A                        ; Draw '.' if decimal digit in this position
  28.                 return
  29.  
  30. DecimalDot:
  31.                 movlw   '.'                                     ; Draw '.'
  32.                 movwf   POSTINC0
  33.                 setf    LEADING,BANKED          ; Sign not to conver 0 to ' '
  34.                 return
(#) cape-t válasza Hp41C hozzászólására (») Aug 11, 2010 /
 
Nagyon köszönöm! Így gondoltam. :worship:

Ma kipróbálom! Ha még így sem megy, akkor felhagyok a PIC programozással.

Csak vicceltem...
(#) Attila86 hozzászólása Aug 11, 2010 /
 
Olvasgattam az adatlapot és egyrészt megtudtam hogy a PLL a belső oszcillátorra is rákapcsolható, másrészt pedig hogy a belső oszcillátor nem csak 4MHz-en ketyeghet hanem 8MHz-en is. Szóval max 32MHz-en mehet a PIC külső kvarc nélkül ami azét jó mert három alkatrésszel több hely marad a nyákon és kb 60Ft-al kevesebb lesz az anyagköltség.

De nem vagyok benne teljesen biztos hogy hogyan tudom ezt beállítani. Így jó lesz?
Az elején:
Idézet:
„config OSC = INTIO67”

És az inicializáláskor:
Idézet:
„movlw b'01111110' ;8MHz
movwf OSCCON
bsf OSCTUNE, PLLEN ;PLL bekapcsolása”
(#) Attila86 válasza Attila86 hozzászólására (») Aug 11, 2010 /
 
Ja bocsánat elfelejtettem: még mindig PIC18F2523-al alkotok.
(#) Attila86 válasza Attila86 hozzászólására (») Aug 11, 2010 /
 
Sikerült rájönnöm, az előző hozzászólásomban írtak majdnem jók, csak annyi hogy az OSCCON regiszterbe b'01111110' helyett b'01111100'-t kellett írni. Elvileg most 32MHz-en megy.

Viszont most más problémám van: kb másfél órája túrom az adatlapot és az internetet hogy megértsem hogyan kellene felkonfigurálnom a CCP modult hogy 10 bites PWM-ként működjön a lehető legnagyobb frekvencián (hogy kisebb L-C integráló tag is elég legyen). De egyszerűen nem világos hogy mi és hogyan határozza meg a PWM frekvenciát...
(#) Hp41C válasza Attila86 hozzászólására (») Aug 11, 2010 /
 
Szia!

A CCP PWM időalapja a Timer2. Ahhoz, hogy 10 bites legyen a felbontás és 1024 lépésben legyen állítható a kitöltés, a PR2 -nek (256-1) -nek kell lennie . Már csak a Timer2 előosztójának a megváltozása marad.
(#) Attila86 válasza Hp41C hozzászólására (») Aug 11, 2010 /
 
Szia!

Közben addig eljutottam, hogy a TMR2 előosztójának 1:1-nek kellene lennie (meg az utóosztónak is, de lehet hogy ez teljesen mindegy), a PR2-nek pedig d'255'-nek. Legalábbis talán.
De a CCP1CON regiszter DCxB1 és DCxB0 bitjeibe elképzelésem sincs hogy mit kellene írni és az sem világos teljesen hogy magát a kitöltési tényezőt hova kell beírnom, az alsó nyolc bitet a CCPR1L-be, a felső kettőt pedig a CCPR1H regiszter alsó két bitjébe?

Ja, és 32MHz-en megy a PIC (most már).
(#) Hp41C válasza Attila86 hozzászólására (») Aug 11, 2010 /
 
Szia!
CCP - PWM módhoz a CCPxCON regisztre CCPxM3..0 = 11xx.
ECCP - PWM módhoz, ha a jel a P1A kimenet kell csak: a CCPxCON regisztre CCPxM3..0 = 1100 és P1M1..0=00.

Magyarán mind a két modulnál egy kimenő jelhez a CCPxCON=0xC0 jó. A kitöltés felső 8 bitje a CCPRxL be, az alsó két bitje a CCPxCON DCxB1 és DCxB0 bitjeire írandó.
(#) lidi hozzászólása Aug 11, 2010 /
 
Üdv Picezők!

Orbitális szíváson vagyok túl megint, és ezt le kell írnom. Adott egy LCD rutin, saját kreálmány, használtam már sokszor 16F en.
Tud 4 és 8 bites módot is, lehet konfigozni, hogy melyik porton, melyik nibble -t jasználja, stb. 18F45K22 -n viszont az Istennek se akart menni. Nem azokat a karaktereket írta, amiket küldtem.
Azt tudni kell erről a pic tipusról, hogy ezt debugolni már nem lehet pk2 -vel. Proteus szimulátorban ez a konkerét pic nincs, csak egy hasonló, 18F45K20.
Azzal a szimuláció pedig ment. Elővettem a próbapanelt, beraktam egy másik ugyanilyen picet, bekeötöm ott is 4 bites módban, nem megy ott se.
Ok elővettem egy 18F4550 -et, azt támogatja a szim is, meg pk2 is. Viszont azon meg ment 4 biten is. Na ez már kezd érdekes lenni igaz ?
Ekkor kezdtem gyanakodni, hogy mégsincs jól beállítva a port amin kommunikálok, ansel bitekre gondoltam, de akárhogy állítgattam nem volt jó.
Bekötöm kínomban 8 bitesben, úgy meg megy. Kb 2 napig nézegettem az adatlapot, próbáltam minden perifériát letiltani ami az adott portlábakat használhatja, semmi eredmény.
Debugolni meg nem lehet pk2 -vel. Na erre jött az ötlet, hogy felraktam a próbapanelre egy 7402 -t, csináltam belőle egy HW flipflopot, a picbe pedig írtam egy kis 1 soros C makrót, ami figyeli egy lábon a flipflopot, és csak akkor fut tovább a program, ha megváltozik az állapota.
Be is raktam az lcd strobe részbe, hogy lássam miket küld az lcd nek. Ledeken figyeltem a 4 bites nibble-ket, és az RS -t. Na és itt derült ki, hogy karakter első nibble küldésekor nem állította át az RS -t 1 re.
Igaz két egymás utáni utasitasban állítottam be a két bitet.
Ebben az a fura, hogy 18F ben elvileg ugye a LAT regiszter pont arra szolgál, hogy ne legyen RMW hiba. Mégis 16F en futott a kód gond nélkül.
Átrendeztem a kódot, hamarabb beállítom kicsit az RS-t, és később latchelem be az ugyanazon porton levő E lábbal. Persze mindezt a lat regiszterek piszkálásával teszem.
Szóval érthetetlen számomra, hogy ez most mi. Miért megy 16F en, 18F4550 -en, és miért nem ment 18F45K22 -n.
(#) icserny válasza lidi hozzászólására (») Aug 11, 2010 /
 
Milyen sebességen járattad a 45K22 mikrovezérlőt? Nem lehet, hogy egyszerűen túl gyors volt a tempó, s nem tartottad be a TAS (RS vagy R/W - > E) "követési távolságot"?

Ez nem RMW, hanem "LCD adatlap ajánlásainak be nem tartása" probléma.
(#) lidi válasza icserny hozzászólására (») Aug 11, 2010 /
 
Alap belső osc, 16Mhz. De mondom , más picen ment, pl 20Mhz - 16F887 en. Ja és próbáltam persze lassabb órajelen is. De az sem segített. Csak az hogy nem billegtetem egymás után a lat biteket. Az E bit magasra állítása előtt álltam meg, és nem volt bekapcsolva egyáltalán a RS bit, holott be kellett volna neki. Tehát nem a magas órajel miatt nem volt ideje magas szintre mászni RS nek. Ezért is tudtam észrevenni szemmel , ledekkel.
(#) Hp41C válasza lidi hozzászólására (») Aug 11, 2010 /
 
Szia!

Ezt olvastad. Sok durva dolog van benne... Ugyan nem érintik közvetlenül a portbiteket....
(#) Collector hozzászólása Aug 11, 2010 /
 
Nemrég nálam volt egy olyan mókás dolog, hogy egy lineáris potit kötöttem tesztelésre (illetve tanulásra) A/D lábra, lcd-re írta ki 0-1023-ig az A/D értékét. Az érdekes csak az volt, hogy a poti csak logaritmikusan állította a feszültséget (először nagyon hirtelen, aztán pedig egyre kevésbé változott az érték). Multival rámértem, a feszültség is logaritmikusan változott. A poti pedig lineáris volt.
Aztán a programban mit találok.. 8jegy helyett véletlen 7-et írtam be a TRISB-re, így az a láb, amire volt kötve a poti, kimenet volt, és ennek hatására logaritmikusan változott a feszültség rajta
A pic és a láb is túlélte.. 18F4520ról van szó.
(#) Attila86 hozzászólása Aug 12, 2010 /
 
Ezt nem értem...
A PIC-et átültettem egy másik panelba, amin semmi lényes különbség egyébként nincsen. Az előző panelon még a PIC normálisan mért (Bővebben: Youtube), ugrálás nélkül. Most ugyan azzal a szoftverrel ugrál a kijelzés! Azon először külső 10MHz-es kvarcról ment PLL-el 40MHz-en, aztán kiforrasztottam a kvarcot és átállítottam hogy belső oszcillátorról ketyegjen PLL-el, 32MHz-en. Akkor is ugrálás nélkül mért. Az A/D FOSC/32-re és 2TAD-re volt állítva mindig. A PIC pedig PIC18F2523. Egyenlőre arra gondoltam hogy az FOSC és a TAD beállítások nem jók, noha eddig jó volt. Próbálgattam más értékeket de ugyan úgy ugrál. Szóval lehet hogy valami egészen más jellegű hibája van. Hardveresen teljesen hibátlannak tűnik a műszer, mert a referencia (a PIC külső referenciát kap) és a mérőjelek is teljesen stabilak. Szóval az ugrálás már a PIC-ben kell hogy "szülessen". Viszont ehhez csak az A/D konfigurációnak lehet köze. Az meg mint fentebb írtam eddig jó volt, meg most próbálgattam más értékeket is de nem lett jobb.
Szóval kezdek elkeseredni... bár negyed egy van és ilyen későn szoktam érdekes dolgokat alkotni... Ilyenkor reggelre mindig kitalálom a megoldást, adja Isten hogy most is így legyen.
(#) Attila86 válasza Attila86 hozzászólására (») Aug 12, 2010 /
 
Basszus, most kivételesen nem kellett reggelig várnom a megoldásra.
A műszer AC tápfeszről is megy, meg kaphat külső +-5V-ot is. Eddig az előző panelon +-5V DC-t kapott, most meg AC-ról hajtottam. Ha DC-t adok neki akkor ez is hibátlanul mér. Érdekes amúgy, mert megvannak a tápfeszek, stabilak meg minden... Na mindegy, most már tudom merre keressem a hibát.

Már többször tapasztaltam amúgy hogy a PIC elég érzékeny a (táp)feszültségekre. Gondolok itt akár a tápfesz kötelező pufferolására stb... Vagy például attól is megbolondul ha negatív feszültséget kap valamelyik bemenetén. Ezzel is mennyit szenvedtem anno mire rájöttem.
(#) lidi válasza Hp41C hozzászólására (») Aug 12, 2010 /
 
Igen, olvastam, sajnos. Eléggé elszomorító hogy pl az ember vált egy nagyobb picre, és olyannal szembesül fejlesztés közben hogy ennek meg az ADC -je defektes. Nade ott még nem tartok, egyenlőre az alap rutinokat szeretném működésre bírni. Így tiszta fejjel visszagondolva a tegnapira, érdekes dolog ez. Lehet hogy a C fordító cseszett el valamit. Este majd rakok fel kódot, még jó hogy tudom reprodukálni a hibát. Ugyanis ha megállok a két bit billegtetés között, akkor is alacsony maradt az RS bit, és ennek semmilyen HW logika szerint nem lett volna szabad megtörténnie. Arra gyanakszom, hogy kétszer is beállítottam azt a bitet (feleslegesen persze, hiszen elég lett volna csak az első nibble előtt), és lehet hogy az elsőt kioptimalizálta a fordító.

Attila86: ez érdekes, mert ok hogy "zajos" a táp AC -ről, nade nem átlagolódik ki ?
(#) Attila86 válasza lidi hozzászólására (») Aug 12, 2010 /
 
Idézet:
„Attila86: ez érdekes, mert ok hogy "zajos" a táp AC -ről, nade nem átlagolódik ki ?”

Mondom, nem zajos a táp AC-ról sem. A még érdekesebb az az, hogy a műszer elődjének táp része ugyan ilyen felépítésű, az mégsem ugrál.
Következő: »»   786 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem