Fórum témák

» Több friss téma
Fórum » PIC programozás assemblyben
 
Témaindító: sonajkniz, idő: Máj 30, 2015
Témakörök:
Lapozás: OK   27 / 32
(#) nemgyuri válasza nedudgi hozzászólására (») Jún 16, 2022 /
 
Ha 1 soros input lenne, nem lenne problémám. Az egyidejüséggel -ütközés- van problémám.
----Közben szétnéztem a PIC-ek között és találtam jó-néhány PIC-et amiben benne van 3 hardveres UART. --- Az érdekelt, hogy egyszerübb PIC-el hogyan oldható meg a 2+1 soros port kezelése software-ből.
( Azt hiszem, hogy maradok a 3 UART-os PIC-nél...)
(#) nedudgi válasza nemgyuri hozzászólására (») Jún 16, 2022 /
 
Minden egyes UART külön megszakításhoz köthető (pontosabban másik bit jelzi a megszakítás okát), nem lehet itt semmi probléma. (Az gond lehet, ha túl nagy az adatátviteli sebesség, és a kontroller nem bírja.) Ha csak egyirányú az adatforgalom, két UART is elboldogul a dologgal.
Ütközés nem számít, a FIFO-ba írás sokkal gyorsabb, mint egy adatbájt átküldése.
A hozzászólás módosítva: Jún 16, 2022
(#) Peter65 válasza nemgyuri hozzászólására (») Jún 17, 2022 /
 
Szia!
Ha a soros kommunikáció sebessége alacsony, akkor nem olyan lehetetlen dolog a szoftveres UART. Adni értelemszerűen egyszerűbb, sőt ha van egy kihasználatlan SPI modulod, azon is ki lehet adni a soros kommunikáció szerinti adatsort.
A vétel sem lehetetlen, több féle módon felépíthető, például itt is olvashatsz egy megközelítést.
(#) benjami válasza nemgyuri hozzászólására (») Jún 17, 2022 /
 
Ha az output bitsebessége megegyezik valamelyik input bitsebességével akkor elegendő 2 uart is. Amúgy szoftveresen az output könnyebben megoldható, egy timer-t használva akár több uart outputot is működtethetsz (bár ebben az esetben erre pont nincs szükség). Az viszont lényeges, hogy szoftveres uart esetén a megszakításokat úgy kell kialakítani, hogy ne okozzon túl sok bitidő változást a többi megszakítás. Ezt megszakítás prioritással vagy alacsony bitsebesség esetén nagyon rövid végrehajtási idejű megszakításkiszolgáló eljárásokkal lehet megoldani.
(#) asch válasza nemgyuri hozzászólására (») Jún 17, 2022 /
 
Elméletileg tűpontos UART adót Timer+Output Compare hardverre építve lehet csinálni, vevőt pedig input capture-re építve. Ezzel a megoldással a legkevésbé szigorú az interrupt kiszolgálás reakcióideje.

Kevésbé pontos, ha a kimenetet timer interruptból változtatjuk, a bemenetet pedig interruptban mintavételezzük. Itt ugye az interrupt kiszolgálási idejéből adódni fog egy jitter.

Olyat is lehet csinálni, hogy interruptokat letiltva, az utasítások végrehajtási idejét számítva adjuk ki a jelet (bit banging). Ehhez hasonló vevőt is lehet írni. Szinkron esetben (az egyik adó a másik órajelét másolja küldésre) meg lehet csinálni duplex működést is, azaz azt hogy egyszerre írunk és olvasunk.

Egyrészt szép kihívás ilyeneket csinálni, másrészt viszont időrabló, és nagyon kellemetlen debuggolni, ha nem jól működik. Márpedig nekem sosem szokott elsőre működni. Plusz ha más feladata is van a csipnek, akkor az azzal való együttműködéssel egyre komplexebb lesz számolni időzítési szempontból. Úgyhogy a legjobb olyan csipet választani, amin van elegendő UART.
(#) nemgyuri válasza Peter65 hozzászólására (») Jún 17, 2022 /
 
Köszönöm, ezt még tanulmányoznom kell!
(#) nemgyuri válasza asch hozzászólására (») Jún 17, 2022 /
 
"asch" és "benjami" Köszönöm a segítségeteket, a kimenet nem okoz problémát. Az a Timeres ötlet a vételnél is működhet, ha jól gondolom. (Feltéve, hogy azonos baudrate van minden csatornán.) Startbit megjelenésétől adott időben kell kezdeni a port olvasását és bitenként beforgatni. Szerintem az nem jelenthet túl nagy problémát, hogy a két input véletlenszerűen érkezik.
(#) Bakman válasza nemgyuri hozzászólására (») Jún 17, 2022 /
 
Milyen PIC-ről van szó?
(#) nemgyuri válasza Bakman hozzászólására (») Jún 18, 2022 /
 
Nem volt szó konkrét típusról. Elvi kérdés volt. lehetőleg szoftveres megoldásra.
(#) nedudgi válasza nemgyuri hozzászólására (») Jún 18, 2022 /
 
Nemrégen még hardver portról volt szó. Itt.
A hozzászólás módosítva: Jún 18, 2022
(#) nemgyuri hozzászólása Jún 28, 2022 /
 
Segítséget kérek, PIC12F1572-t vettem (valamikor). MPLAB-ban ilyen nincs. GITHUB-ról letöltöttem a PIC12F1562.inc file-t, betettem a többi közé, de ettől még továbbra sem választható ki.
Tudja VALAKI, hogy mit kellene tennem?
(#) Pali79 válasza nemgyuri hozzászólására (») Jún 28, 2022 /
 
A pickit2-höz csináltak korábban több ezsközt ismerő állományt. A pickit2 továbbfejlesztése vagy ilyesmi a téma neve, ott kellene megnézni.
(#) user1914 válasza nemgyuri hozzászólására (») Jún 29, 2022 /
 
Keresd a "PK2DeviceFile.dat" állományt. A 2019.12.21. állományban benne van.
Nálam az eredeti telepített verzióban is megtalálható. "PICkit 2 v2.61" 2009.03.24.
Üdv. M.
A hozzászólás módosítva: Jún 29, 2022
(#) Hp41C válasza Pali79 hozzászólására (») Jún 29, 2022 /
 
Nem a PICkit2 -höz keresi az okosítást, hanem az MpLab -hoz.
Van két nem túl jó hírem:
1. MpLab fejlesztése megállítva, használja az ember az MpLabX -et. Jó adag törelem kell hozzá.
2. Az MpLabX fejlesztése közben a MpAsm -et félre tették, helyette az as nevű program jött. Még nem használtam.

MpLab8.92.JPG
    
(#) nemgyuri válasza Hp41C hozzászólására (») Jún 30, 2022 /
 
Köszönöm MINDENKI hozzászólását segítségét. Már rájöttem, hogy az MPLAB-al nem jutok előrébb ( valószinű ).
Már letöltöttem az MLABX-et, küzdök vele. ( Eddig úgy tűnik, hogy nem lesz a kedvencem. )
A hozzászólás módosítva: Jún 30, 2022
(#) sonajkniz válasza nemgyuri hozzászólására (») Júl 1, 2022 /
 
Szia!

Én MPLAB X-et használok sok éve, és teljesen jól elvagyok vele.
De az tény, hogy az újabb verziók el vannak cse*-ve.
A leg használhatóbb a v3.65-ös.
(#) nemgyuri hozzászólása Dec 4, 2022 /
 
Sziasztok! PIC12F1501-esnél küzdök az analóg-digitál átalakítással.
  1. ; Analóg-digitál átalakítás
  2.         BANKSEL ADCON1 ;
  3.         clrf    ADCON2  ;NINCS AUTO CONVERZIÓ
  4. ;       movlw   b'11110000' ;Right justify, FRC oscillator (most jó a lassú átalakítás)
  5.         movlw   b'01110000' ;balra igazítva, FRC oscillator (most jó a lassú átalakítás)
  6.                 ;csak az ADRESH fölső bitjeit vizsgáljuk
  7.         movwf   ADCON1 ;Vdd and Vss Vref+
  8.         BANKSEL TRISA ;
  9.         BSF     TRISA,POTI ;Set RA4 to input (AN3)
  10.         BANKSEL ANSELA ;
  11.         BSF     ANSELA,POTI ;Set RA4 to analog
  12.         BANKSEL WPUA
  13.         BCF     WPUA,POTI ;Disable weak pull-up on RA4
  14.         BANKSEL ADCON0 ;
  15.         MOVLW   B'00001101' ;Select channel AN3 <-RA4
  16.         MOVWF   ADCON0 ;Turn ADC On
  17. Cont:   CALL    SampleTime ;Acquisiton delay (most 230usec)
  18.         BANKSEL ADCON0 ;
  19.         BSF     ADCON0,ADGO ;Start conversion (converziós idő 1-6usec)
  20.         nop
  21.         nop
  22.         BTFSC   ADCON0,ADGO ;Is conversion done?
  23.         GOTO    $-1 ;No, test again
  24.         BANKSEL ADRESH ;
  25.         MOVF    ADRESH,W ;Read upper 2 bits
  26.         MOVWF   RESULTHI ;store in GPR space
  27.         BANKSEL ADRESL ;
  28.         MOVF    ADRESL,W ;Read lower 8 bits
  29.         MOVWF   RESULTLO ;Store in GPR space
  30.  
  31. ;kitöltés beállítása:
  32.         banksel INTCON
  33.         bcf     INTCON,GIE      ;megszakítás letíltva
  34.         clrf    TEMP
  35.         rlf     RESULTHI,f
  36.         rlf     TEMP,f
  37.         rlf     RESULTHI,f
  38.         rlf     TEMP,f
  39.         rlf     RESULTHI,f
  40.         rlf     TEMP,f
  41.         rlf     RESULTHI,f
  42.         rlf     TEMP,f
  43.         bsf     INTCON,GIE      ;-engedélyezve
  44.         goto    Cont    ;Kezd

A beállítás majdnem ua. mint a PIC pdf-ben van. Mit nézek el?
(#) zenetom válasza nemgyuri hozzászólására (») Dec 4, 2022 /
 
Szia!
Csak pár apróság, az ADC résztől függetlenül:
A INTCON core regiszter, tehát neki nem kell BANKSEL, mindig elérhető bárhonnan. Ahol saját regisztereket használsz (RESULTHI, RESULTLO, TEMP), azoknál jó bank van kiválasztva? (Ha ezeket a common ram-ba tetted, akkor ezeknek se kell bankselect).
A SampleTime rutinban is jól van beállítva a bank (ha szükség van rá)? Mert az úgy hívódik meg, hogy az ADCON0 bankja van kiválasztva.
A hozzászólás módosítva: Dec 4, 2022
(#) nemgyuri válasza zenetom hozzászólására (») Dec 4, 2022 /
 
Az összes változóm a common-ban van. Ez csak egy potival szabályozható kitöltésű négyszögjelet állít elő, megszakításból.
(#) nemgyuri válasza nemgyuri hozzászólására (») Dec 4, 2022 /
 
Bocsánat! Nem itt volt a hiba... Teszteléshez másik változót használtan és benne maradt.
(#) zenetom válasza nemgyuri hozzászólására (») Dec 5, 2022 /
 
Na, akkor végül mégis a változóval volt a baj.
(#) nemgyuri válasza zenetom hozzászólására (») Dec 6, 2022 /
 
Igen, ez maradt ki:
rlf TEMP,f
--> movf TEMP,w
--> movwf arány
bsf INTCON,GIE ;-engedélyezve
goto Cont ;Kezd
(#) nemgyuri hozzászólása Jan 21, 2023 /
 
Sziasztok!
MPLAB-X szimulátorával küzdök. RA2-t szeretném izgatni, ha közvetlenül átírom az RA2-t akkor beugrik a megszakításba, de a mellékelt módon nem. Nem látom az RA2 változását sem. (Aszinkron módból is működik, de így nem tudom a megfelelő időben átírni.) Mit rontok el?

stimolus.PNG
    
(#) proba válasza nemgyuri hozzászólására (») Jan 21, 2023 /
 
Szerintem itt a felső kis kockában azt lehetne beállítani, az induláshoz képest mennyi idő múlva történjen a váltás, le leginkább a sor végén lévő mező kitöltése segítene. ( szerintem ott lehet beállítani, milyen változó milyen értékénél következzen be a gombnyomás.)
(#) nemgyuri válasza proba hozzászólására (») Jan 21, 2023 /
 
Különböző számokat is próbáltam, semmi eredmény.
(#) nemgyuri válasza nemgyuri hozzászólására (») Jan 22, 2023 /
 
"MPLAB X IDE v4.05" -t letöltöttem, ezzel működik! ( A korábbi v3.65-el volt a problémám...)
Megpróbáltam először a legújabb "v6.05"-t majd a "v6.00"-t, de ezeknél az "#include "p12F1572.inc" sornál már megadta magát. vagy nem szereti az assemblyt, vagy én telepítettem rosszul.
(#) helektro válasza nemgyuri hozzászólására (») Jan 22, 2023 /
 
Attól függ milyen asm-et használsz? Ha az mpasm-et, akkor az még 32 bites és az MPLAB-X 5.35-ös verziója ami még ezt támogatja, az újabbak már nem.
(#) nemgyuri válasza helektro hozzászólására (») Jan 22, 2023 /
 
Köszi, ezt nem tudtam. (Ettől a V3.65-el még illett volna működnie.)
(#) nemgyuri válasza nemgyuri hozzászólására (») Jan 28, 2023 /
 
Talán segít valakinek: (az előzőekben szerepelt stimulus problémával kapcsolatban)
STIMULUS
A lényeg fordítása: -gugli-
Az inger lehetővé teszi a felhasználók számára, hogy értékeket adjanak a tűkhöz és az SFR-ekhez is. Ez némi zavart okozhat, mivel a portregisztermezők és a porttűk általában ugyanazt a nevet viselik, például RB0 és PortB.RB0.
Az ösztönzés megköveteli, hogy a portregisztermezők a PortName.FieldName formátumot használják, hogy megkülönböztessék a portmezőt a port PIN-kódjától. Például:
PORTB.RB0 - a port mezőre utal
RB0 - a tűre utal
Amikor egy tűhöz injektál, a szimulátor azt tekinti, hogy ez megegyezik a tűre feszültséget hajtó alkalmazási áramkörrel. A PORT regiszterbe történő injektáláskor a szimulátor azt tekinti, hogy ez megegyezik a PIC szoftverrel a portregiszterbe történő írással. A tűbe injektálás modellezi a PIC-eszköz bemenetét. A PORT regiszterbe történő injektálás a PIC kimenetét modellezi.
(#) sonajkniz hozzászólása Ápr 9, 2023 /
 
Sziasztok!

Az lenne a kérdésem, hogy létezik-e MPLAB X-ben olyan behívási parancs, amire a fordító hajlandó megkeresni a kívánt fájlt?

Hogy érthetőbb legyen a kérdésem.

  1. #include    Januar.asm    ;0
  2. #include    Februar.asm   ;1
  3. #include    Marcius.asm   ;2
  4. #include    Aprilis.asm   ;3
  5. #include    Majus.asm     ;4
  6. #include    Junius.asm    ;5
  7. #include    Julius.asm    ;6
  8. #include    Augusztus.asm ;7
  9. #include    Szeptember.asm;8
  10. #include    Oktober.asm   ;9
  11. #include    November.asm  ;10
  12. #include    December.asm  ;11

Ezek a memóriába töltendő képfájlok egy része.
Ebben a formában kizárólag akkor hívja be a fordító, ha a főprogrammal azonos mappában van.
Ha már ezen mappán belűl egy almappába teszem, hibára fut.
Pedig nagyon szeretném elkülöníteni, mert a képfájlokkal és alprogramokkal együtt van vagy 50 db. behívásom, és a törzsmappa ettől már kissé áttekinthetetlen.
Ha valaki tud erre valami trükköt és megosztaná velem, nagyon megköszönném.
A hozzászólás módosítva: Ápr 9, 2023
Következő: »»   27 / 32
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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