Fórum témák

» Több friss téma
Fórum » PIC programozás
 
Témaindító: G-Lex, idő: Okt 24, 2005
Lapozás: OK   43 / 66
(#) Hp41C válasza Balagemann2031 hozzászólására (») Aug 6, 2011 / 1
 
Szia!

Gondolom PICKit2 -vel programozol... A programnak van egy kis problémája az All protect felirattal...

- Indítsd el a PICKit2 kezelő programját, ismertesd fel a kontroller, majd Erase.
- Lépj ki a programból és indítsd el újra, ismertesd fel a kontroller, majd Read.

Nicsak nincs többé All protect...
(#) Balagemann2031 válasza Hp41C hozzászólására (») Aug 7, 2011 /
 
Hihetetlen! És működik Köszi szépen!
(#) Tomi111 hozzászólása Aug 8, 2011 /
 
Üdv Mindenkinek!

PIC16F819-el szeretnék AD konverziót csinálni, de valahogy nem működik, pedig egyszerűnek tűnik az adatlapján.
Itt a prg-részlet:
konf:
BANKSEL PORTA ;bank 0 kiválasztása
CLRF PORTA ;porta törlése
CLRF PORTB ;portb törlése
MOVLW B'01000001' ;Fosc/8, A/D enable, analóg port RA0/AN0
MOVWF ADCON0
BANKSEL TRISA ;bank 1 kiválasztása
MOVLW B'10001111' ;adress right justified(eredmény ADRESL-ben+ADRESH 0,1 bit), port beállítások leírása fenn!!
MOVWF ADCON1 ;ha B'0*** akkor left justified, 6 legkisebb bit ADRESL-ben nulla!!
MOVLW B'00011111' ;RA bemenet-kimenet beállítás(0-kimenet, 1-bemenet)
MOVWF TRISA
CLRWDT
MOVLW B'10000111'
MOVWF OPTION_REG ;felhúzóellenállásokok tiltva
CLRF INTCON ;interruptok tiltása
MOVLW B'00000000'
MOVWF TRISB ;RB kimenet-bemenet beállítás(0-kimenet, 1-bemenet)
CLRF PIE1
CLRF PIE2
MOVLW B'00000001'
MOVWF PCON
MOVLW B'00000000' ;hangolás alap
MOVWF OSCTUNE
MOVLW B'01000000' ;oszci 1Mhz-en
MOVWF OSCCON
BANKSEL PORTA ;Bank 0 kiválasztása
MOVLW B'00000000'
MOVWF CCP1CON
CLRF _MER ;_MER törlése

a konverzió részlet:
meres1:
CALL ido1
BSF ADCON0,GO ;A/D Conversion start
varas:
BTFSC ADCON0,GO ;vagyBTFSS PIR1,ADIF) ;vár a konverzió végére
GOTO varas
MOVLW ADRESL ;eredmény olvasása(első 8 bit - 0-7.)
MOVWF _MER ;eredmény írása _MER-be
BSF PIR1,ADIF
CALL ido1
MOVLW _MER
MOVWF PORTB ;eredmény kiírása PORTB-re(binárisan)
GOTO meres1

Megszakítást nem használtam. Így mindig 11001100 az eredmény.(PORTB-re kiíratva).
Mit nem csinálok jól?[b]
(#) vilmosd válasza Tomi111 hozzászólására (») Aug 8, 2011 /
 
Jo lenne ha hasznalnad a code gombot, vagy mellekelned a ASM filet. Mellekletben egy lehetseges megoldas.

ANALOG1.ASM
    
(#) Tomi111 válasza vilmosd hozzászólására (») Aug 8, 2011 /
 
Üdv!

Még nem volt időm átnézni teljesen, de csatolom az enyémet. Gondolom, csak a konf. ill a meres1 .rész a lényeg.
A többi részben vannak dolgok, amit egyszerűbben is meg lehet írni, pl a villogtatást.
A BSF PIR1,ADIF sor valószínű nem kell, csak megszakítás esetén.

admeres.asm
    
(#) Tomi111 válasza vilmosd hozzászólására (») Aug 8, 2011 /
 
Üdv!

Lehet, hogy az ADCON0 regiszter beállításával lesz a gond? 6., 7. bit?
Integrált oszcillátort használok 1MHz-en.
Maga a konverzió úgy nézem ugyanaz. A BSF PIR1,ADIF sort törlöm. Nekem közben több szoftveres időzítés van, de gondolom ez nem befolyásolhatja.
AZ RA0 bemeneten egy 100nF-os kondi van és egy 10k-poti ossza le egy TL431 jelét.(2,47V). A poti csúszóérintkezője a bemeneten.
A +vref a 2,47V-on, a -vref a testen.
Így működhet?
(#) vilmosd válasza Tomi111 hozzászólására (») Aug 8, 2011 /
 
Nem neztem mindent at, de talaltam hibat:
  1. MOVLW   ADRESL          ;eredmény olvasása(első 8 bit - 0-7.)
  2.                 MOVWF   _MER            ;eredmény írása _MER-be
  3.                 BCF     PIR1,ADIF
  4.                 CALL    ido1
  5.                 MOVLW   _MER
  6.                 MOVWF   PORTB           ;eredmény kiírása PORTB-re(binárisan)
helyett:
  1. MOVfW   ADRESL          ;eredmény olvasása(első 8 bit - 0-7.)
  2.                 MOVWF   _MER            ;eredmény írása _MER-be
  3.                 BCF     PIR1,ADIF
  4.                 CALL    ido1
  5.                 MOVfW   _MER
  6.                 MOVWF   PORTB           ;eredmény kiírása PORTB-re(binárisan)

Te a movlw parancsot hasznaltad, igy a w-be a adresl cime kerul, nem a tartalma. a portra irasnal ugyanez a helyzet.
(#) Tomi111 válasza vilmosd hozzászólására (») Aug 8, 2011 /
 
Üdv!

Köszönöm!
Akkor biztos ez volt a hiba.
Mindenhol movlw-t használtam, így a PORTB-n mindig a címet írta ki, nem az értéket. Azért volt mindig ugyanaz az eredmény.

Ki is próbálom a próbapanelen, addig nem változtatok a frekin.

Üdv! Tomi
(#) Tomi111 válasza vilmosd hozzászólására (») Aug 8, 2011 /
 
Üdv!

Így működik, de csak az első kér bit változik a bemenő fesszel arányosan. Csak a felső két bitet mutatná? De nem csak a poti végállása felé világítanak a ledek, hanem arányosan, mintha csak két bit lenne a felbontása.
Na majd még holnap próbálkozom.

Köszi mindent.

Üdv! Tomi
(#) vilmosd válasza Tomi111 hozzászólására (») Aug 8, 2011 /
 
Nem csodalkozom rajta. Te a Bank0-ban olvasol, tehat a ADRESH-t a 0x1E cimen. A ADRESL olvasasahoz bankot kellene valtani. De nincs problema, csak a ADFM bitet kellene 0/ba tenni az ADCON1 regiszterben, es igy az ADRESH-ban lenne az AD ertek felso 8 bitje.
Tehat:
  1. MOVLW   B'00001111'     ;adres left justified
  2.                 MOVWF   ADCON1          ;  
  3. .
  4. .
  5. .
  6.                 MOVFW   ADRESH          ;
  7.                 MOVWF   _MER            ;

Igy mar jonak kell lennie.
(#) Tomi111 válasza vilmosd hozzászólására (») Aug 9, 2011 /
 
Üdv!

Így már működik a dolog.
Köszönöm.
Van még mit tanulnom, erre nem is figyeltem, hogy a bank0-ban olvasok.

Mégegyszer köszi!!

Üdv! Tomi
(#) Balagemann2031 hozzászólása Aug 27, 2011 /
 
Sziasztok!

Szeretném megkérdezni, hogy van-e valami okos megoldás arra, hogy ha több nyomógombot akarok kezelni, (pl: K1 indítja futófény rutin 1-et, K2 a 2-őt és így tovább) ne kelljen várakozni amíg lefut, hanem amint megnyomom a K2-őt program 1 futása közben egyből váltson át program 2-re, és így tovább... Vagy megszakításokban gondolkodjak? Ötleteket előre is köszi! Üdv!
(#) kissi válasza Balagemann2031 hozzászólására (») Aug 27, 2011 /
 
A megszakítás is lehetőség, de megoldható úgy is, hogy miközben fut, akkor is kérdezed a gombokat ( a késleltetés közben ) és megnyomás esetén befejezed az aktuális ütem futtatását és visszatérsz a döntési helyre ( persze előtte már bekapcsoltad a megfelelő ütem jelzését! ) .

Steve
(#) nedudgi válasza Balagemann2031 hozzászólására (») Aug 27, 2011 /
 
Nem az lenne a legegyszerűbb, ha gomb lenyomása esetén a program előlről kezdene mindent, vagyis a 0 címre ugrana?
(#) Balagemann2031 válasza nedudgi hozzászólására (») Aug 27, 2011 /
 
Szia! Az csak egy egyszerű reset nem? :yes:
(#) Balagemann2031 válasza kissi hozzászólására (») Aug 27, 2011 /
 
Arra gondolsz hogy a rutinokban is (két villogás között) is vizsgáljam a nyomógombot? Vagy adattáblákat kéne használnom, nem rztinokat, és úgy két retlw visszatérés között? Vagy nem tudom melyik lenne a jó.. :/
(#) nedudgi válasza Balagemann2031 hozzászólására (») Aug 27, 2011 /
 
Igen. Amennyit én felfogtam a problémából, mindig az utolsó parancs érvényes, tehát gomblenyomáskor reset, és a megfelelő feladat végrehajtása, függetlenül attól, mik voltak az előzmények.
(#) Balagemann2031 válasza nedudgi hozzászólására (») Aug 27, 2011 /
 
Igen így valóban megoldás lehet köszi
(#) watt válasza nedudgi hozzászólására (») Aug 27, 2011 /
 
Elég gáz megoldás, még ha működik is!
(#) watt válasza Balagemann2031 hozzászólására (») Aug 27, 2011 /
 
Egyértelmű, hogy ha érzékelni akarod az eseményt, akkor időt kell szakíts rá! Simán belefér a többi közé, ha jól illeszted, kezeled!
(#) nedudgi válasza watt hozzászólására (») Aug 27, 2011 /
 
Mi a gáz ebben?
(#) watt válasza nedudgi hozzászólására (») Aug 27, 2011 /
 
Resettel alaphelyzetbe hozni egy programot üzemszerűen? Vagy valamit nem jól értek?
(#) icserny válasza nedudgi hozzászólására (») Aug 27, 2011 /
 
Kicsit fapados dolog a resetelés.
Egy régi vicc jut erről eszembe:
1. feladat: főzzön teát, ha adott egy rezsó, egy kanna, stb.
Fizikus: Vizet töltök a kannába, bekapcsolom a rezsót, blabla...
Matematikus: (Elmondja ugyanezt)

2. feladat: Főzzön teát, ha a rezsó már be van kapcsolva!
Fizikus: Vizet töltök a kannába, s a rezsóval már nem kell foglalkozni...
Matematikus: Kikapcsolom a rezsót, a feladatot ezzel visszavezettem az előző megoldára.
Hát ez a resetelés is kb. ilyen megoldás.
(#) nedudgi hozzászólása Aug 28, 2011 /
 
A fizikus ott követi el a hibát, hogy nem ellenőrzi a rezsó állapotát.
Egy programozó ellenőrizné:
- be van kapcsolva a rezsó?
- melegedik a víz?
- elérte a szükséges hőfokot elvárható idő alatt?

Ha nem
  1. SVC: 15
  2. BRU $
Ha jól emlékszem!
(#) watt válasza nedudgi hozzászólására (») Aug 28, 2011 /
 
De itt három gomb lenne és három funkció. Valamint meg lehet oldani simán programból, hogy azt csinálja amit akarsz. A reset melyik gombra menne?
Írtam már pár programot, egyikben sincs reset. (Kivéve watchdog, de az nem történt még meg, hogy működésbe lépett, csak jó ha van, mint a kőszáli sas!)
(#) imix77 válasza watt hozzászólására (») Aug 28, 2011 /
 
Sziasztok!
Meg szeretnék tanulni picet programozni. Nem tudtok ájanlani esetleg valamilyen weboldalt, könyvet , tananyagot, ami az alapokkal kezdi és a végén úgy tudok megírni egy led villogtató progit , hogy tényleg minden lépést értek ? Köszi a választ.
(#) bbalazs_ válasza imix77 hozzászólására (») Aug 28, 2011 /
 
Remeljuk, nem az lesz a palyad csucsa.
Elso kerdes: programoztal-e mar barmilyen nyelven?
Ha igen, nem lesz nehez.
Masodik: foglalkoztal-e mar legalabb alapszinten elektronikaval?
Ha nem, nehez lesz....
(#) imix77 válasza bbalazs_ hozzászólására (») Aug 28, 2011 /
 

Igen programoztam már c-be c#-ba java-ba és foglalkoztam már az elektronikával.
(#) Balagemann2031 hozzászólása Aug 28, 2011 /
 
Sziasztok!

Eljutottam odáig, hogy adattáblát kelljen használnom, de kicsit belekavarodtam a dolgokba, mert több példát átnéztem, és szinte mindenhol máshogy kezelik az adattáblát....Az lenne a kérdésem, hogy mik a leg alapvetőbb lépések, hogy az adattáblát kezelni tudjam? magát a táblát nagyjából értem hogy a programszámláló értéke szerinti sort tölti be elvileg... Viszont nem tudom, hogy hogyan kezeljem a táblát a főprogramban... valami tanácsot tudnátok adni? Előre is köszi! Üdv!
(#) icserny válasza imix77 hozzászólására (») Aug 28, 2011 /
 
Következő: »»   43 / 66
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