Fórum témák

» Több friss téma
Fórum
Keresés
Lapozás: OK   5 / 197
(#) PEXESO válasza Régi motoros hozzászólására (») Ápr 11, 2024
Sziasztok!
Sajnos nagyon elfoglalt voltam,csak most tudok válaszolni.A válaszodat és a többiekét is köszönöm,jó tanácsokat adtatok.
A bankomban letiltattam a tranzakcióket,kettő is volt,a bank azonnal letiltotta a kártyámat,most várom az újat.Azóta a pénzt vissze is utalták a számlámra. Az Alin a felhasználói nevemet,jelszót megváltoztatom és másik telefont fogok használni.
(#) Suba53 válasza SteveRawen hozzászólására (») Ápr 8, 2024
Azért én csak megmérném a kibontott cellákat. Lehet hogy simán jók még ezer helyre. Pl zseblámpába, power bank modulba, vagy egyéb helyekre.
Nekem például a vezeték nélküli csengő beltéri része megy ilyen celláról, meg egy LIDL ledes zseblámpa a 3db AAA elem helyett, meg csavarbehajtóban cseréltem a 3db NiCd akkut egy 18650-es cellára, kifogástalanul megy.
Amúgy ezeknek a celláknak jól forrasztható a kivezetése. Csak nem szabad túl sokáig molyolni vele.
A hozzászólás módosítva: Ápr 8, 2024
(#) Lamprologus válasza Bakman hozzászólására (») Ápr 5, 2024
  1. #INT_RDA
  2.    void rda_isr(void)
  3. {
  4.    static int t; // statikus t változó létrehozása (megtartja az értékét)
  5.    // notE: CCS getc() in this mode reads portB and clears the port INT
  6.    buffer1[next_in1]=fgetc(PORT1);  // beolvassa az érkez? karaktert a bufferbe,
  7.    t=next_in1++;  // t=mutató, majd növeli a mutató értékét
  8.    if (BUFFER1_SIZE==next_in1) next_in1=0; // ha a mutató az utolsó elemre mutat, átállítja az els?re
  9.    if(next_in1==next_out1)  next_in1=t;    // ha túlcsordul a buffer mutatóértékét egyel visszaállítja. Buffer full !!
  10. }


  1. #INT_EXT2
  2.  
  3. void EXT2_isr(void) {
  4.  
  5.     if (dpf_szunet_ido_figyelo > DPF_ADAGOLO_SZUNET_IDO) { // ha letelt a szünet idő és újabb löket érkezik nullázza a számlálót
  6.         dpf_szamlalo = 0;
  7.         dpf_ido_sec = 0;
  8.         dpf_ido_sec_temp = 0;
  9.         dpf_kepernyo_kell = 1;
  10.     }
  11.  
  12.     dpf_szamlalo++; // számolja a löketeket
  13.  
  14.     dpf_ido_sec = dpf_ido_sec + dpf_ido_sec_temp;
  15.     dpf_ido_sec_temp = 0;
  16.  
  17.  
  18.     dpf_szunet_ido_figyelo = 0; // nulázza a szünet id?t.
  19. }
(#) pipi válasza pipi hozzászólására (») Ápr 3, 2024
Hali!
Ma írtak emailt is:
Idézet:
„Hey Istvan,
How are you?
1)Good news, our official website has initially uploaded some instruction manuals for your reference. The functions are still being improved, so stay tuned.
Download link is https://www.jsypowermeter.com/download/
2)Kindly note we will have 3 days off in the next 3 days because of the Chinese Qingming Festival, we will go to worship our ancestors.”

Ma megérkezett a csere jsy-mk-194t, megteszteltem, és most valóban mér mindkét irányban, előjellel "melyik irányban" fűzöm át a drótot az áramváltó trafón.
Én a gyártótól vettem, nem viszonteladótól: https://vi.aliexpress.com/item/1005005390626087.html
Nagyon rendesek, segítőkészek voltak, és már a doksik is letölthetők a weboldalukról ( a tesztprogi még nem, de jeleztem nekik, hogy tegyék fel azt is)
(#) Frankye válasza sany hozzászólására (») Ápr 3, 2024
Sany, vargham: köszi. Most néztem, nálam továbbra is a "not found - 404" hiba jön be.
Bbb: nálam is hasonló van, a a domainre rákeresek.
(#) benjami válasza Skori hozzászólására (») Márc 22, 2024
Néhány stm32 típusban van úgynevezett nagyfelbontású timer (HRTIM). Ennek az órajele egy belső PLL-el a GHz tartományba van feltornázva. Lehet, hogy érdemes szétnézned tudod-e használni. Itt egy pdf róla.
(#) Sick-Bastard válasza majkimester hozzászólására (») Márc 22, 2024
Tegnapi felállás szerint:
sizeof(flash_esp_mqtt) és sizeof(esp_mqtt) is 200-at kapok.

Módosítások:
Teszt 1.
Beraktam reserved (rsvd) változókat, hogy 4-el osztható "tömböket" kapjak.

  1. struct{
  2.   td_u16b_register mqtt_reg;
  3.   uint8_t mqtt_flags;
  4.   uint16_t mqtt_port;
  5.   uint8_t mqtt_device_count;
  6.   uint16_t rsvd;                          // empty
  7.   char mqtt_server_name[64];
  8. ...


Ekkor:
sizeof(flash_esp_mqtt) és sizeof(esp_mqtt) is 202-őt kapok.

Teszt 2:
Mivel az első változó is egy typedef ezért kipróbáltam hátha alá helyezve mást kapok:
  1. struct{
  2.   td_u16b_register mqtt_reg;
  3.   uint16_t rsvd;                          // empty
  4.   uint8_t mqtt_flags;
  5.   uint16_t mqtt_port;
  6.   uint8_t mqtt_device_count;
  7.   char mqtt_server_name[64];
  8. ...

Ugyan az 202 mindkét értékre.

Teszt 3:
  1. String SimpleLoop()
  2. {
  3.   String result = "RAM == FLASH";
  4.   uint32_t i = 0;
  5.   uint8_t equal = 1;
  6.   for(; (i < sizeof(flash_esp_mqtt) && (equal == 1)); i++)
  7.   {
  8.     if(esp_mqtt.b[i] != pgm_read_byte(flash_esp_mqtt.b + i))
  9.     {
  10.       equal = 0;
  11.     }
  12.   }
  13.  
  14.   if(equal == 0)
  15.   {
  16.     result = "RAM != FLASH at " + String(i) + "address";
  17.   }
  18.   return(result);
  19. }

Eredménye:
Idézet:
„RAM == FLASH”



További info:
Ha mindent csak RAMban tárolok, akkor az MQTT elindul, de!
Ha már fut és a HTTP felületen ismét elindítom, engedélyez/fut checkbox pipálva és a Save (submit)-re kattintok, akkor ESP rebootol.
Akkor is, ha előtte leállítom, checkbox kivesz majd save, nincs reboot, de ha ismét bekapcsolom, akkor ESP reboot jön.

Amik eddig az ESP8266-ban vannak:
OTA
TWI - MCP23017
RTC - belső interrupton fut
egy saját egyszerű UDP csatorna

WiFi Multi
WiFiAP
HTTP Web felület
HTTPs OTA
HTTPs MCP23017 kezelőfelület
MDNS
LLMNR
DDNS
NTP
MQTT - HomeAssistant

SB
(#) Massawa válasza Skori hozzászólására (») Márc 21, 2024
A baj az, hogy a hátteret nem lehet megállitani. Nem a végfelhasználo a ludas, öt csak arra kényszeritik és nála torlodik a hulladek.
Nekem is a minap kellett telefont cserélnem, mert a bank közölte, hogy májustol nem támogatják a 3 éves OS-t. A régi telefonom különben remekül müködik.
A gyártok kénytelenek abbol dolgozni, amit a beszállitok kinálnak.öket meg többek között a sporolás meg a technologiai fejlödes hajtja.
Nézd meg a szoftwareket van olyan szoftwarem amit szinte évente frissiteni kell ( 2005 ota használom és a régi is tökéletesen megfelelne, de nem megy az ujabb HW-n.)
A garancia abszolut semmit oldhat meg, azonkivül, hogy a mennyekbe hajtja az árakat. Ez csak egy agyalágyult bürokrata tudja elképzelni, hogy évekig valakik raktáron tudják tartani a ma kiszállitott áruhoz az alkatrészeket. Ráadásul lehet, hogy azok 60-70% érintetlenül kerül majd a garancia végén a szemétbe.
(#) Hp41C válasza Naresh Jain hozzászólására (») Márc 11, 2024
IN main.c sw1 and sw2 not defined nor referenced.
(#) Tambi válasza pipi hozzászólására (») Márc 10, 2024
Kedves Pipi!

Ezt mind írja, ami az én "-végtelen -> 0" angoltudásomat még Google fordítóval is messze meghaladja...

C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino: In function 'void setup()':
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:12:7: error: 'class AD9833' has no member named 'Begin'; did you mean 'begin'?
gen.Begin();
^~~~~
begin
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:13:7: error: 'class AD9833' has no member named 'EnableOutput'
gen.EnableOutput(true);
^~~~~~~~~~~~
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino: In function 'void loop()':
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:21:35: error: 'class AD9833' has no member named 'ApplySignal'
if(sw1==LOW && sw2==LOW) gen.ApplySignal(SINE_WAVE,REG0,f);
^~~~~~~~~~~
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:21:47: error: 'SINE_WAVE' was not declared in this scope
if(sw1==LOW && sw2==LOW) gen.ApplySignal(SINE_WAVE,REG0,f);
^~~~~~~~~
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:21:47: note: suggested alternative: 'SIZE_MAX'
if(sw1==LOW && sw2==LOW) gen.ApplySignal(SINE_WAVE,REG0,f);
^~~~~~~~~
SIZE_MAX
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:21:57: error: 'REG0' was not declared in this scope
if(sw1==LOW && sw2==LOW) gen.ApplySignal(SINE_WAVE,REG0,f);
^~~~
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:21:57: note: suggested alternative: 'FE0'
if(sw1==LOW && sw2==LOW) gen.ApplySignal(SINE_WAVE,REG0,f);
^~~~
FE0
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:22:35: error: 'class AD9833' has no member named 'ApplySignal'
if(sw1==LOW && sw2==HIGH) gen.ApplySignal(TRIANGLE_WAVE,REG0,f);
^~~~~~~~~~~
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:22:47: error: 'TRIANGLE_WAVE' was not declared in this scope
if(sw1==LOW && sw2==HIGH) gen.ApplySignal(TRIANGLE_WAVE,REG0,f);
^~~~~~~~~~~~~
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:22:61: error: 'REG0' was not declared in this scope
if(sw1==LOW && sw2==HIGH) gen.ApplySignal(TRIANGLE_WAVE,REG0,f);
^~~~
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:22:61: note: suggested alternative: 'FE0'
if(sw1==LOW && sw2==HIGH) gen.ApplySignal(TRIANGLE_WAVE,REG0,f);
^~~~
FE0
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:23:35: error: 'class AD9833' has no member named 'ApplySignal'
if(sw1==HIGH && sw2==LOW) gen.ApplySignal(SQUARE_WAVE,REG0,f);
^~~~~~~~~~~
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:23:47: error: 'SQUARE_WAVE' was not declared in this scope
if(sw1==HIGH && sw2==LOW) gen.ApplySignal(SQUARE_WAVE,REG0,f);
^~~~~~~~~~~
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:23:59: error: 'REG0' was not declared in this scope
if(sw1==HIGH && sw2==LOW) gen.ApplySignal(SQUARE_WAVE,REG0,f);
^~~~
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:23:59: note: suggested alternative: 'FE0'
if(sw1==HIGH && sw2==LOW) gen.ApplySignal(SQUARE_WAVE,REG0,f);
^~~~
FE0
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:24:35: error: 'class AD9833' has no member named 'ApplySignal'
if(sw1==HIGH && sw2==HIGH) gen.ApplySignal(HALF_SQUARE_WAVE,REG0,f);
^~~~~~~~~~~
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:24:47: error: 'HALF_SQUARE_WAVE' was not declared in this scope
if(sw1==HIGH && sw2==HIGH) gen.ApplySignal(HALF_SQUARE_WAVE,REG0,f);
^~~~~~~~~~~~~~~~
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:24:64: error: 'REG0' was not declared in this scope
if(sw1==HIGH && sw2==HIGH) gen.ApplySignal(HALF_SQUARE_WAVE,REG0,f);
^~~~
C:\Users\APA-PC-Otthon\Desktop\OneDrive - Csarnok.hu Kft\EN\AVR_2024\AD9833_ALAP\AD9833_ALAP.ino:24:64: note: suggested alternative: 'FE0'
if(sw1==HIGH && sw2==HIGH) gen.ApplySignal(HALF_SQUARE_WAVE,REG0,f);
^~~~
FE0
Multiple libraries were found for "AD9833.h"
Used: C:\Users\APA-PC-Otthon\Documents\Arduino\libraries\AD9833
not used: C:\Users\APA-PC-Otthon\Documents\Arduino\libraries\AD9833-Library-Arduino-master
exit status 1

Compilation error: 'class AD9833' has no member named 'Begin'; did you mean 'begin'?
(#) Naresh Jain hozzászólása Márc 10, 2024
HI ,every one once again I need help, i have a code of 16F676 to control the triac and schematic attached here , i think sw1 and sw2 not defined,i am not know much about coding, please help;
(#) reloop válasza diamik hozzászólására (») Márc 8, 2024
Szia! A "not great, not terrible" -jut eszembe a kapcsolási rajzról. Ami igazán laikus benne, az a végtranzisztorok párhuzamos kapcsolása. Ahhoz, hogy a terhelés valamelyest arányosan oszoljon el a párhuzamos tranzisztorok között, emitter-ellenállással kell őket ellátni. Mintaként szolgálhat a témájában alaposan kitárgyalt ST151-re keresztelt erősítő.
A kérdéseidre a válaszok:
- a TR8-at nagyjelű erősítőnek nevezzük. A bázisa és kollektora közötti kondenzátor célja, a visszacsatolt erősítő fázismenetének olyan korrekciója, hogy az egységnyi erősítés határáig a fázistolás 180° alatt maradjon, azaz ne váljon az áramkör oszcillátorrá.
- az R1, R2, R5 ellenállások az őket meghajtó tranzisztorok munkapontját stabilizálják. A rajtuk folyó áram miatt kisebb mértékben változik a tranzisztorok árama azzal szemben, ha mindössze a következő fokozat bázisáramával terhelnénk. Eredménye a lineárisabb működés lesz.
- A TR7/R4 a végtranzisztorok nyugalmi áramát állítja be és stabilizálni is képes, ha a TR7 együtt melegszik a végtranzisztorokkal. A hozzászólásom elején említett végtranzisztor emitter-ellenállások abban is segítenek, hogy korlátozzák a nyugalmi áramot míg a termikus egyensúly ki em alakul.
- a műveleti erősítő kimenete rosszul viseli a kapacitív terhelést, az R12 választja le róla TR9 Miller-kapacitását.
- az R10 a bemenetnek ad referecia-feszültséget arra az esetre, ha a műveleti erősítőt leválasztanánk róla véletlen/szándékosan.
- R6,R13 szokványos negatív visszacsatolás. Az erősítés 1+R6/R13.
- a C4+R11 a terhelés impedanciamenetét javítja, bővebb információt Zobel-tag, Boucherot-cella keresésre találhatsz.
- a soros R8, R9 határozza meg a differenciál erősítő emitter-áramát. Azért van két részre osztva, hogy C5 szűrje a táp hullámosságát.
(#) Georgee hozzászólása Márc 5, 2024
Sziasztok.

Adott egy 18F458-as PIC. Frissítés közben sikeresen le lett húzva az USB. Azóta bootloader not respond van. Rákötöttem a pickitet, külső frissítéssel próbálkozok. A PICKit látja is az eszközt. Ha rámegyek Erase akkor visszajelez hogy erase complete utána a device blank-ra kattintva a következő hibaüzenetet kapom:
Idézet:
„Program memory is not blank starting at adress 0x000000”
. Ilyenkor mi a helyzet? Így a .het-et se tudom feltölteni neki. Ha a read-re megyek, akkor szintén kiolvassa az eszközt és nem FFFF fogad. Valakinek ötlete mit szúrtam el? Vagy hogy javítható az eszköz?
(#) Massawa válasza Skori hozzászólására (») Márc 5, 2024
Én is most jöttem a bankomtol, mert rákényszeritettek - engem mint kuncsaftit, higy vegyek uj telefont, mert ugye ök átállitottak valamilyen SW-t es a 3 éves nem eppen olcso telefon ezt nem támogatja.
Nem tudom ezt miért nem vasalják be a telefon FW fejlesztöin?
De ugyanez van a PCkkel is. Nekem már 4-t kell üzembe tartanom, mert az egyiken ez nem megy a másikon meg az. A legujjabra meg nincs a használt program kompatibilis verzioja. Szoval ez megy mindenütt. A bank legalább valami kompenzäciot igért, de mások nem is válaszolnak. Vagy megveszed a szuper két méteres csili vili TV-t ami elvben mindent tud a sok tunerja segitségével a másik szolgáltato müsorát is fel tudod venni, addig mig bele nem dugod a kedvenc szolgáltatod kártyáját. Az egyböl leblokkolja a párhuzamos felvételt ( pl DVBT DVBS) és senki még a fülét sem billenti, hogy pénzért még meg is loptak, mert lehülyiti a kártya a drága TV tulajdonságait.
(#) Gafly válasza gyurma888 hozzászólására (») Márc 4, 2024
Arra kiváncsi vagyok, hogy mire jutsz, mert egyáltalan nem biztos hogy az ügyfélszolgálatos bele tud/akar nézni, nem hogy túrni.
Idézet:
„4 Use of the equipment identity register
A network operator can make administrative use of the IMEI in the following manner:
Three registers are defined, known as "white lists", "grey lists" and "black lists". The use of such
lists is at the operators' discretion.
The white list is composed of all number series of equipment identities that are permitted for use.
The black list contains all equipment identities that belong to equipment that need to be barred.
Besides the black and white list, administrations have the possibility to use a grey list. Equipments on the grey list are not barred (unless on the black list or not on the white list), but are tracked by the network (for evaluation or other purposes).”

Amúgy ez nem akkora titok ám, amióta mobiltelefon van, nagyjából működik: GSM 02.16
(#) glaci válasza Hp41C hozzászólására (») Márc 1, 2024
Az OSCCON beállítása megtörtént a 113-mal:"0111001" beállítással

bit 6-4 IRCF<2:0>: Internal Oscillator Frequency bits
111 = 8 MHz

bit 3 OSTS: Oscillator Start-up Time-out Status bit
(1)
0 = Device is running the internal oscillator (HFINTOSC or LFINTOSC)

bit 2 HTS: HFINTOSC Status bit (High Frequency – 8 MHz to 125 kHz)
0 = HFINTOSC is not stable

bit 1 LTS: LFINTOSC Stable bit (Low Frequency – 31 kHz)
0 = LFINTOSC is not stable

bit 0 SCS: System Clock bit
1 = Internal oscillator is used for system clock
(#) Hp41C válasza treshold hozzászólására (») Feb 27, 2024
Szia!

Réges-régen, talán még a múlt évezredben, a PIC18 kontrollerekben egy csomó FSR volt, de közel sem annyi, mint az új típusokban. Az SFR -ek akkor elérhetők voltak (egy-két típus kivételével) az un. ACCESS bankból. A mai típusok esetén sok FSR az ACCESS -ban címtartományán kívül esik. Ilyen típus az említett PIC18F16Q40 is.
Az ACCESS bank a 0x460...04FF SFR címtartományt éri el.
ACCESS bankban van pl. a PIE0 (0x4A8), INTCON0 (0x4D6), INTCON (0x4D7), de nem érhető el az IOCAN0 (0x406), IOCAN1 (0x407).
A megoldás a BSR regiszter kezelése a movlb utasítással.
movlw 11100000B
  1. movwf INTCON0,ACCESS
  2. movlw 11000000B
  3. movwf INTCON1,ACCESS
  4. movlw 00000100B
  5. movlb  IOCAN
  6. movwf IOCAN,bankED
(#) xNorbi válasza Skori hozzászólására (») Feb 24, 2024
Szerintem se annyira lényeges az impulzus jelleggörbéje.

A kisütő áramkör a legtöbb esetben egy egyszerű dióda és megfelelő ellenállás kombinációja. Ezeket álltalában úgy méretezik, hogy a keletkező feszültség sose legyen magasabb 1kV-nál. Ha valaki jobban belegondol, a mágnes védelme szempontjából minél nagyobb ellenállás lenne a kívánatos, hiszen így növeljük azt az energiát ami külsőleg alakul hővé és nem tekercs normál állapotú vezetőjét hevíti.
Vagyis itt egy gyorsan megjelenő feszültségcsúcsra, majd egy exponenciális lefutású jellegörbére lehet számítani. Mi ezt a kisütő diódát szeretnénk a jövőben egy IGBT + FPGA modullal helyettesíteni, aminek úgy szabályoznánk nyitását hogy az egész kisütő feszültség az előre beállított értéken maradjon, kérdés mennyire sikerül majd ez, így inkább egy négyszögre haonslító jelleggörbét kapnánk. A feszültség felfutása pedig a pneumatikus kapcsolón múlik ami bontja mágnse energiaellátását, de ennél közelebbit nem tudok, később ezt is IGBTre lenne cserélve.

Egyébként erre a kisütésre különböző technikák vannak, nagyobb mágneseknél ez nem elég, ott alkalmaznak úgynevezett "quench heter"-eket, amik pillanatok alatt felfűtik az egész tekercset, jobban eloszlatva az összeomló mágnses tér energiáját, ilyenek vannak alkalmazva az LHC mágneseiben is. Némely megoldás segédtekercseket alkalmaz az energia elosztására, vagy ellenkezőleg lokálisan növeli némely pontbana mágneses teret normál állapotot idézve elő, néhol a problémás részt kerüli ki az áram valami módon. Kondenzátor bank kisütése a tekercs áramkörébe is szóba jöhet rezgőkört létrehozva és az "AC loss" jelenséget kihasználva melegíti a tekercset. Ha valakit jobban érdekel a téma quench protecion címszó alatt talál róla anyagot.

Egyébként találtam ezt az érdekes VOM1271 vagy TLP3910 fotovoltaikus optocsatolót, ami egy MSOFET gate meghajtó feszültségforrás nélkül a működéséhez szükséges energiát a belső LED és belső "napelem" szolgáltatja. Ezzel egyszerűen megvalósíthatónak tűnik egy MOSFET meghajtása és annak galvanikus elválasztása is.
A hozzászólás módosítva: Feb 24, 2024
(#) zamatőr válasza pipi hozzászólására (») Feb 24, 2024
Megmenekült a power bank. Vettem 2 "szerelt panel"-t. Az első egyszerűbb már nem is lehetne HT4928S az IC. de ugyanúgy lekapcsol ha nagyon kicsi az áramfelvétel. A második viszont tökéletes állítható kimenő feszültség és állandó jelenlét.
(#) majkimester válasza Hp41C hozzászólására (») Feb 22, 2024
A "I" közvetlen bekerül a Transmit Shift register-be, amiből az adás megy, a "T" meg a TXREG-be ami az 1 byte buffer, de utánna már várni kell a második "T" beirása előtt, ez normális.
A TXIF flag akkor lesz beállítva amikor a TXREG átkerül a TSR-be, ekkor még megy az adás, de van bőven idő betölteni a következő byte-ot a TXREG-be.

Amit irsz viszont igaz:
Idézet:
„TXIF becomes valid in the second instruction cycle following the write execution. Polling TXIF immediately following the TXREG write will return invalid results.”


Szóval nálam azért működik, mert nálam van pluszban call + return
(#) majkimester válasza sonajkniz hozzászólására (») Feb 22, 2024
Én ugyanígy TXIF-re várva küldtem adatot, eddig mindig működött, szerintem nem ott van a hiba:

  1. RS232_SendByte
  2. RS232_waittx    btfss   PIR1, TXIF              ; wait for empty buffer
  3.                 goto    RS232_waittx
  4.                 movwf   TXREG
  5.                 return


Milyen PIC, milyen órajelet használsz és hogyan néz ki az inicializálás?
Szerintem azért nem kapod meg minden második byteot, mert a PC UART framing error miatt eldobja. Ugyanúgy neked is le kell majd kezelned a végleges programban fogadáskor ezeket az eseteket:

  1. RS232_ReceiveByte
  2.                 btfss   PIR1, RCIF
  3.                 goto    RS232_norec
  4.                 movlw   ((1 << OERR) | (1 << FERR))     ; serial receive error
  5.                 andwf   RCSTA,w
  6.                 jz      RS232_rb_no_error
  7.                 movf    RCREG,w                         ; read received byte twice for deletion
  8.                 movf    RCREG,w
  9.                 btfsc   RCSTA, OERR                     ; if OERR
  10.                 bcf     RCSTA, CREN                     ;    - clear CREN and
  11.                 bsf     RCSTA, CREN                     ;    - and set again.
  12. RS232_norec     clrw
  13.                 clrz                                    ; Z=0 -> error or not received
  14.                 return
  15.  
  16. RS232_rb_no_error
  17.                 movf    RCREG,w
  18.                 setz                                    ; Z=1 -> ok
  19.                 return
(#) pipi válasza sonajkniz hozzászólására (») Feb 22, 2024
Ne a txif-et nézd, hanem a megfelelő soros vez. regiszter bitet. Meg nézd meg az erratát, mert pic24valamiben futottam bele, hogy dokumentáltan rossz az egyik vezérlőbit
UTXBF /* wait if the buffer is full, not working correctly!!!!*/
TRMT jó
https://www.mouser.com/datasheet/2/268/80522c-19131.pdf
Module: UART (TX Buffer)
If the transmit buffer is filled sequentially with
four characters, the characters may not be
transmitted in the correct order.
Work around
Do not completely fill the buffer before transmitting data; send three characters or less at a
time.
Affected Silicon Revisions
5. Module: UART (Transmit)
The Transmit Buffer Full flag, UTXBF
(UxSTA<9>), may become cleared before data
starts moving out of the full buffer. If the flag is
used to determine when data can be written to
the buffer, new data may not be accepted and
data may not be transmitted.
Work around
Poll the Transmit Buffer Empty flag (TRMT,
UxSTA<8>) to determine when the transmit
buffer is empty and can be written to.
(#) zamatőr hozzászólása Feb 20, 2024
Üdv!
Adott egy power bank amit óra tápként szeretnék használni de néhány másodperc után kikapcsol.Az óra áramfelvétele fél másodpercenként 100-200 mA rövid impulzus a szünetekben néhány uA. Az usb-n csak a táp vezeték van bekötve. Hogyan tudom folyamatos üzemre bírni a power bankot? + terhelést nem szeretnék bekötni.
Köszönöm.
A hozzászólás módosítva: Feb 20, 2024
(#) Gafly válasza TÉ288 hozzászólására (») Feb 12, 2024
Adatlap szerint nem megy tönkre:
Idézet:
„Analog Input Voltage (Either Input) (note 1) . . . . . . . . . . . . V+ to V-
Reference Input Voltage (Either Input). . . . . . . . . . . . . . . . . V+ to V-”
(#) Peter65 válasza Pixi hozzászólására (») Feb 7, 2024
Szia!
Ez sajnos nem ilyen egyszerű. Egy kommutátoros, univerzális motornak is lehetséges az úgynevezett szenzor mentes fordulatszám szabályozása, és így kis fordulaton is lesz érdemi nyomatéka, de ennek megvalósítása nem egyszerű, és nem univerzális. Az hogy nem univerzális, azt jelenti, hogy adott motorhoz illeszteni kell. A gyártó ismeri a fúrógépbe szerelt motor jellemzőit, és a szabályzó ezekhez a paraméterekhez illesztve képes a megfelelő szabályozásra. Hogy milyen jellegű számításokat, szabályozási feladatokat kell ellátni, itt egy link egy ilyen egyszerűbb szabályozási megoldásról szóló dokumentumhoz: Bővebben: Link Ez alapján beláthatod, hogy ilyen általános, univerzális fordulatszámot tartó szabályzót nem tudsz vásárolni. Vagy megveszed az eredetit, vagy megjavítod a régit, esetleg neki állsz, és a hobbi kedvéért megméred a motorod jellemzőit, és készítesz egy hozzá illeszkedő szabályzót.
A hozzászólás módosítva: Feb 7, 2024
(#) mcc válasza Karesz 50 hozzászólására (») Feb 2, 2024
DNF=do not fit
(#) Laslie hozzászólása Feb 1, 2024
Sziasztok!

Az általam készített Arduino alapú csengővel kapcsolatos további információk és a kód:
- A hang lejátszáshoz a TMRpcm lib-et használtam fel.
- A kód tartalmaz DEBUG módhoz további kód részleteket, amik az élesztéshez kellettek nekem. Ezt kikapcsoltam.
- Van benne SD kártya leállító és indító kód is. Bár ennek nem sok jelentősége van (kísérleteztem ), mivel trafóról fog nálam működni a csengő.
- Az isFnMusic() függvényben több fájlnév kiterjesztés is látható a WAV-on kívűl. Ez ne tévesszen meg senkit. Tudomásom szerint a TMRpcm lib csak WAV fájlt tud lejátszani.
- A kód tartalmaz egy kapcsolót is, mely az LM386 tápját hivatott ki/be kapcsolni.
  1. #include <avr/power.h>
  2. #include <avr/sleep.h>
  3. #include <avr/wdt.h>
  4.  
  5. #include <SPI.h>
  6. #include <SD.h>
  7. #include "TMRpcm.h"
  8.  
  9. const int chipSelect = 10;
  10. const int buttonPin = 2;
  11. const int fetPin = 3;
  12. int buttonState = 0;
  13. bool SDCardState = false;
  14. bool foundMusicFile = false;
  15.  
  16. TMRpcm tmrpcm;
  17.  
  18. byte keepSPCR;
  19. char musicFileName[128];
  20.  
  21. //#define __DEBUG__
  22.  
  23. void turnOnSDcard() {
  24.   delay(6);                                         // let the card settle
  25.                                                     // some cards will fail on power-up unless SS is pulled up  ( &  D0/MISO as well? )
  26.   DDRB = DDRB | (1<<DDB5) | (1<<DDB3) | (1<<DDB2);  // set SCLK(D13), MOSI(D11) & SS(D10) as OUTPUT
  27.                                                     // note: | is an OR operation so  the other pins stay as they were. (MISO stays as INPUT)
  28.   PORTB = PORTB & ~(1<<DDB5);                       // disable pin 13 SCLK pull-up – leave pull-up in place on the other 3 lines
  29.   power_spi_enable();                               // enable the SPI clock
  30.   SPCR = keepSPCR;                                  // enable SPI peripheral
  31.   delay(10);  
  32.   SDCardState = true;
  33. }
  34.  
  35. void turnOffSDcard()
  36.  {
  37.   delay(6);
  38.   SPCR = 0;                                                   // disable SPI
  39.   power_spi_disable();                                        // disable SPI clock
  40.   DDRB &= ~((1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2));   // set All SPI pins to INPUT
  41.   PORTB |= ((1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2));   // set ALL SPI pins HIGH (~30k pullup)
  42.   SDCardState = false;
  43. }
  44.  
  45. void initSDCard() {
  46.   #if defined (__DEBUG__)
  47.   while (!Serial);
  48.     Serial.print("Initializing SD card...");
  49.   #endif
  50.  
  51.   if (!SD.begin(chipSelect)) {
  52.     #if defined (__DEBUG__)
  53.     Serial.println("initialization failed. Things to check:");
  54.     Serial.println("1. is a card inserted?");
  55.     Serial.println("2. is your wiring correct?");
  56.     Serial.println("3. did you change the chipSelect pin to match your shield or module?");
  57.     Serial.println("note: press reset or reopen this serial monitor after fixing your issue!");
  58.     #endif
  59.     while (true);
  60.   }
  61.  
  62.   #if defined (__DEBUG__)
  63.   Serial.println("initialization done.");
  64.   #endif
  65.   File root = SD.open("/");
  66.   if (! foundMusicFile) {
  67.     searchMusicFile(root);
  68.     /*if (!foundMusicFile) {
  69.       musicFileName = "DINGDONG.WAV";
  70.     }*/
  71.     #if defined (__DEBUG__)
  72.     Serial.println(musicFileName);
  73.     #endif
  74.   }
  75.   #if defined (__DEBUG__)
  76.     printDirectory(root, 0);
  77.   #endif
  78.  
  79.   tmrpcm.speakerPin = 9;
  80.   tmrpcm.setVolume(5);
  81.   tmrpcm.quality(1);
  82. }
  83.  
  84. #if defined (__DEBUG__)
  85. void printregisters() {
  86.   byte aaa = TCCR1A;
  87.   Serial.print("TCCR1A: ");
  88.   Serial.println(aaa, BIN);
  89.   aaa = TCCR1B;
  90.   Serial.print("TCCR1B: ");
  91.   Serial.println(aaa, BIN);
  92.   aaa = ADCSRA;
  93.   Serial.print("ADCSA: ");
  94.   Serial.println(aaa, BIN);
  95.   aaa = ADCSRB;
  96.   Serial.print("ADCSRB: ");
  97.   Serial.println(aaa, BIN);
  98. }
  99. #endif
  100.  
  101. void setup() {
  102.   keepSPCR = SPCR;               // save the default SPCR register contents
  103.  
  104.   #if defined (__DEBUG__)
  105.   Serial.begin(9600);
  106.   printregisters();
  107.   #endif
  108.   initSDCard();
  109.   pinMode(buttonPin, INPUT);
  110.   pinMode(fetPin, OUTPUT);
  111.   digitalWrite(fetPin, LOW);
  112. }
  113.  
  114. void loop() {
  115.   if (!tmrpcm.isPlaying()) {
  116.     if (SDCardState) {
  117.       turnOffSDcard();
  118.       digitalWrite(fetPin, LOW);      
  119.       #if defined (__DEBUG__)
  120.       printregisters();
  121.       #endif
  122.     }
  123.     buttonState = digitalRead(buttonPin);
  124.   }
  125.   if (buttonState == HIGH) {
  126.     buttonState = LOW;
  127.     turnOnSDcard();
  128.     initSDCard();
  129.     digitalWrite(fetPin, HIGH);
  130.     tmrpcm.play(musicFileName);
  131.   }
  132. }
  133.  
  134. void searchMusicFile(File dir) {
  135.   while (true) {
  136.     File entry =  dir.openNextFile();
  137.     if (! entry) {
  138.       // no more files
  139.       break;
  140.     }
  141.  
  142.     if (entry.isDirectory()) {
  143.       searchMusicFile(entry);
  144.     } else {
  145.       if (isFnMusic(entry.name())) {
  146.         strncpy(musicFileName, entry.name(), 127);
  147.         entry.close();
  148.         foundMusicFile = true;
  149.         break;
  150.       }
  151.     }
  152.  
  153.     entry.close();
  154.   }
  155. }
  156.  
  157. bool isFnMusic(char* filename) {
  158.   int8_t len = strlen(filename);
  159.   bool result;
  160.   if (  strstr(strlwr(filename + (len - 4)), ".mp3")
  161.      || strstr(strlwr(filename + (len - 4)), ".aac")
  162.      || strstr(strlwr(filename + (len - 4)), ".wma")
  163.      || strstr(strlwr(filename + (len - 4)), ".wav")
  164.      || strstr(strlwr(filename + (len - 4)), ".fla")
  165.      || strstr(strlwr(filename + (len - 4)), ".mid")
  166.      // and anything else you want
  167.     ) {
  168.     result = true;
  169.   } else {
  170.     result = false;
  171.   }
  172.   return result;
  173. }
  174.  
  175. #if defined (__DEBUG__)
  176. void printDirectory(File dir, int numTabs) {
  177.   while (true) {
  178.     File entry =  dir.openNextFile();
  179.     if (! entry) {
  180.       // no more files
  181.       break;
  182.     }
  183.  
  184.     for (uint8_t i = 0; i < numTabs; i++) {
  185.       Serial.print('\t');
  186.     }
  187.  
  188.     Serial.print(entry.name());
  189.     if (entry.isDirectory()) {
  190.       Serial.println("/");
  191.       printDirectory(entry, numTabs + 1);
  192.     } else {
  193.       // files have sizes, directories do not
  194.       Serial.print("\t\t");
  195.       Serial.println(entry.size(), DEC);
  196.     }
  197.  
  198.     entry.close();
  199.   }
  200. }
  201. #endif
(#) Bakman válasza lefituta hozzászólására (») Feb 1, 2024
Esetleg a "Forget Me not" nevű bővítmény.
(#) KoblogPerGyok válasza treshold hozzászólására (») Jan 22, 2024
Szia!

Rég volt, hogy ilyet írtam, megkérdeztem az agyat, hátha:

  1. ; PIC18F16Q40 INT2 megszakítás kezelése
  2.  
  3. ; Az INT2 megszakítási vektor címe: 0x000C
  4. ; A vektori tábla elejének címe: 0x0000
  5.  
  6.     ORG 0x000C           ; Az INT2 megszakítási vektor címe
  7.     GOTO MyInt2Handler   ; Ugrás a kezelő rutinba
  8.  
  9. MyInt2Handler:
  10.     ; Ide írd be az INT2 megszakítás kezelő kódját
  11.     ; Például:
  12.     BSF STATUS, RP0      ; bank 1 kiválasztása
  13.     BCF INTCON3, INT2IF  ; INT2 megszakítás flag törlése
  14.     BCF STATUS, RP0      ; Vissza a bank 0-ba
  15.     ; További kód az INT2 megszakítás kezeléséhez
  16.  
  17.     RETFIE               ; Megszakításból való visszatérés


A megszakításaid címe jó? Nem kell a bank select? Hátha nem törli a flag-et.

Datasheet

A datasheet 116. oldalán az int0 0x08-on van, a tiéd, ami a programodban van ORG 0X0018
goto ISR_L az nem a SPI1RX (Serial Peripheral Interface) -nek van?

De álmos is vagyok, meg nem is tudtam nagyon átnézni, de hátha.
A hozzászólás módosítva: Jan 22, 2024
(#) treshold hozzászólása Jan 21, 2024
Segítséget kérnék az alábbiakhoz:
PIC18F16Q40-nél nem sikerül a megszakítást megírni Asseblyben.
Ez egy új generációs PIC és nem találok rá még hasonló minta progit sem
MPLAB X IDE V6.15-öt használok.
Feladat:
Alaphelyzetben 13. láb, LATB,4 kimeneten LED1 villog. (EZ MŰKÖDIK)
Ha a 17. láb INT2-re impulzus jön, akkor a 16. láb LATC,0 kimeneten LED2-nek világítania kell (megszakításba ugrás) majd villog tovább LED1.
A megszakításba ugrás nem működik.

  1. ; DATE: 2024.01.21. - UTOLSÓ MÓDOSITAS
  2.  
  3. PROCESSOR 18F16Q40
  4.    
  5. ; CONFIG1
  6.   CONFIG  FEXTOSC = OFF         ; External Oscillator Selection (Oscillator not enabled)
  7.   CONFIG  RSTOSC = HFINTOSC_64MHZ; Reset Oscillator Selection (HFINTOSC with HFFRQ = 64 MHz and CDIV = 1:1)
  8.  
  9. ; CONFIG2
  10.   CONFIG  CLKOUTEN = OFF        ; Clock out Enable bit (CLKOUT function is disabled)
  11.   CONFIG  PR1WAY = ON           ; PRLOCKED One-Way Set Enable bit (PRLOCKED bit can be cleared and set only once)
  12.   CONFIG  CSWEN = ON            ; Clock Switch Enable bit (Writing to NOSC and NDIV is allowed)
  13.   CONFIG  FCMEN = ON            ; Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor enabled)
  14.   CONFIG  FCMENP = ON           ; Fail-Safe Clock Monitor - Primary XTAL Enable bit (Fail-Safe Clock Monitor enabled; timer will flag FSCMP bit and OSFIF interrupt on EXTOSC failure.)
  15.   CONFIG  FCMENS = ON           ; Fail-Safe Clock Monitor - Secondary XTAL Enable bit (Fail-Safe Clock Monitor enabled; timer will flag FSCMP bit and OSFIF interrupt on SOSC failure.)
  16.  
  17. ; CONFIG3
  18.   CONFIG  MCLRE = EXTMCLR      ; MCLR Enable bit (If LVP = 0, MCLR pin is MCLR; If LVP = 1, RE3 pin function is MCLR )
  19.   CONFIG  PWRTS = PWRT_OFF      ; Power-up timer selection bits (PWRT is disabled)
  20.   CONFIG  MVECEN = OFF          ; Multi-vector enable bit (Interrupt contoller does not use vector table to prioritze interrupts)
  21.   CONFIG  IVT1WAY = ON          ; IVTLOCK bit One-way set enable bit (IVTLOCKED bit can be cleared and set only once)
  22.   CONFIG  LPBOREN = OFF        ; Low Power BOR Enable bit (Low-Power BOR disabled)
  23.   CONFIG  BOREN = SBORDIS       ; Brown-out Reset Enable bits (Brown-out Reset enabled , SBOREN bit is ignored)
  24.  
  25. ; CONFIG4
  26.   CONFIG  BORV = VBOR_1P9       ; Brown-out Reset Voltage Selection bits (Brown-out Reset Voltage (VBOR) set to 1.9V)
  27.   CONFIG  ZCD = OFF             ; ZCD Disable bit (ZCD module is disabled. ZCD can be enabled by setting the ZCDSEN bit of ZCDCON)
  28.   CONFIG  PPS1WAY = ON          ; PPSLOCK bit One-Way Set Enable bit (PPSLOCKED bit can be cleared and set only once; PPS registers remain locked after one clear/set cycle)
  29.   CONFIG  STVREN = ON           ; Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
  30.   CONFIG  LVP = ON              ; Low Voltage Programming Enable bit (Low voltage programming enabled. MCLR/VPP pin function is MCLR. MCLRE configuration bit is ignored)
  31.   CONFIG  XINST = OFF           ; Extended Instruction Set Enable bit (Extended Instruction Set and Indexed Addressing Mode disabled)
  32.  
  33. ; CONFIG5
  34.   CONFIG  WDTCPS = WDTCPS_31    ; WDT Period selection bits (Divider ratio 1:65536; software control of WDTPS)
  35.   CONFIG  WDTE = OFF            ; WDT operating mode (WDT Disabled; SWDTEN is ignored)
  36.  
  37. ; CONFIG6
  38.   CONFIG  WDTCWS = WDTCWS_7     ; WDT Window Select bits (window always open (100%); software control; keyed access not required)
  39.   CONFIG  WDTCCS = SC           ; WDT input clock selector (Software Control)
  40.  
  41. ; CONFIG7
  42.   CONFIG  BBSIZE = BBSIZE_512   ; Boot Block Size selection bits (Boot Block size is 512 words)
  43.   CONFIG  BBEN = OFF            ; Boot Block enable bit (Boot block disabled)
  44.   CONFIG  SAFEN = OFF           ; Storage Area Flash enable bit (SAF disabled)
  45.   CONFIG  DEBUG = OFF           ; Background Debugger (Background Debugger disabled)
  46.  
  47. ; CONFIG8
  48.   CONFIG  WRTB = OFF            ; Boot Block Write Protection bit (Boot Block not Write protected)
  49.   CONFIG  WRTC = OFF            ; Configuration register Write Protection bit (Configuration registers not Write protected)
  50.   CONFIG  WRTD = OFF            ; Data EEPROM Write Protection bit (Data EEPROM not Write protected)
  51.   CONFIG  WRTSAF = OFF          ; SAF Write protection bit (SAF not Write Protected)
  52.   CONFIG  WRTAPP = OFF          ; Application Block write protection bit (Application Block not write protected)
  53.  
  54. ; CONFIG9
  55.   CONFIG  CP = ON               ; PFM and Data EEPROM Code Protection bit (PFM and Data EEPROM code protection enabled)
  56.  
  57.  #include <xc.inc>
  58.  
  59. #define     LED1        LATB,4
  60. #define     LED2        LATC,0   ;HANG
  61.  
  62.  ; Variable settings
  63.  
  64. STATUS_TEMP     EQU             0x000   ; w register for context saving (ACCESS)
  65. WREG_TEMP       EQU             0x001   ; status used for context saving
  66. BSR_TEMP        EQU             0x002   ; bank select used for ISR context saving
  67. FLAG            EQU             0x003   ; Jelz?bit     
  68. FLAG_FLAG       EQU             0x004   ; Jelz?bit
  69.  
  70. Delay1          equ     0x77              ; Define two file registers for the
  71. Delay2          equ     0x78                ; delay loop
  72. Delay3          equ     0x79                ; delay loop
  73. Delay4          equ     0x7A                ; delay loop
  74.  
  75.   PSECT resetVec,class=code,delta=2
  76.   resetVect:
  77.     PAGESEL main
  78.     goto main
  79.    
  80. ;*******[ Magas szint? megszakítás kezel? rutin KEZDETE ]************************************
  81.  
  82.         ORG     0X0008
  83.         goto    ISR_H
  84.  
  85. ;*******[ Alacsony szint? megszakítás kezel? r11utin KEZDETE ]************************************
  86.  
  87.         ORG     0X0018
  88.         goto    ISR_L
  89.        
  90. ;*******[ A tényleges alacsony szint? megszakítás rutin ]***************************************
  91. ISR_L:
  92.     ; Context Saving for Low ISR
  93.         movff   STATUS,STATUS_TEMP      ;save STATUS register
  94.         movff   WREG,WREG_TEMP          ;save working register
  95.         movff   BSR,BSR_TEMP            ;save BSR register
  96.        
  97.         bsf     LATC,0
  98.         bcf     PIR10,0         ;INT2 FLAG törlés
  99.        
  100.                 movff   BSR_TEMP,BSR            ;restore BSR register
  101.         movff   WREG_TEMP,WREG          ;restore working register
  102.         movff   STATUS_TEMP,STATUS      ;restore STATUS register
  103.     RETFIE
  104.    
  105.    
  106.     ;*******[ A tényleges magas szint? megszakítás rutin ]***************************************
  107.    
  108.  
  109. ISR_H:
  110.     ; Context Saving for High ISR
  111.         movff   STATUS,STATUS_TEMP      ;save STATUS register
  112.         movff   WREG,WREG_TEMP          ;save working register
  113.         movff   BSR,BSR_TEMP            ;save BSR register
  114.        
  115.         bsf     LATC,0
  116.         bcf     PIR10,0         ;INT2 FLAG törlés
  117.        
  118.         movff   BSR_TEMP,BSR            ;restore BSR register
  119.         movff   WREG_TEMP,WREG          ;restore working register
  120.         movff   STATUS_TEMP,STATUS      ;restore STATUS register
  121.     RETFIE
  122.    
  123.  PSECT code
  124.  main:
  125.    
  126.    Oscillator_settings:
  127. ;    movlw   01100000B;// NDIV 1; NOSC HFINTOSC;
  128.  ;   movwf   OSCCON1
  129.  
  130.     movlw   0x0;// SOSCPWR Low power; CSWHOLD may proceed;
  131.     movwf   OSCCON3
  132.    
  133.     movlw   0x0;// EXTOEN disabled; HFOEN disabled; MFOEN disabled; LFOEN disabled; SOSCEN disabled; ADOEN disabled;
  134.     movwf   OSCEN
  135.    
  136.     movlw   00000110B; // HFFRQ 32_MHz xxxx0110;
  137.     movwf   OSCFRQ
  138.    
  139.     movlw   0x0;// TUN undefined;
  140.     movwf   OSCTUNE
  141.    
  142.     movlw   0x0;// ACTEN disabled; ACTUD enabled;
  143.     movwf   ACTCON
  144.    
  145. bankSEL PORTB ;
  146. CLRF PORTA ;Clear PORTB
  147. CLRF PORTB ;Clear PORTB
  148. CLRF PORTC ;Clear PORTC
  149.    
  150. bankSEL LATB ;
  151. CLRF LATA ;Clear Data Latch
  152. CLRF LATB ;Clear Data Latch
  153. CLRF LATC ;Clear Data Latch
  154.    
  155. bankSEL ANSELB ;
  156. CLRF ANSELA ;Enable digital drivers
  157. CLRF ANSELB ;Enable digital drivers
  158. CLRF ANSELC ;Enable digital drivers
  159.    
  160. bankSEL TRISB ;
  161. movlw   00000100B   ;Ra2 BE
  162. movwf   TRISA
  163. movlw   00100000B   ;RB4 Ki, RB5 be
  164. movwf   TRISB
  165. CLRF    TRISC        ;RC0 ki, RC7 ki
  166.    
  167. movlw   11100000B   ;Megszakítás, INT2 megszakítás lefutó élre
  168. movwf   INTCON0
  169.    
  170. movlw   00000001B   ;(INT2IF) External Interrupt 2 Interrupt Priority
  171. movwf   IPR10
  172.    
  173. movlw   00000001B   ;(INT2IE) External Interrupt 2 Interrupt Enable
  174. movwf   PIE10
  175.    
  176. movlw   11000000B   ;
  177. movwf   INTCON1
  178.  
  179. MainLoop:
  180. bsf         LATB,4             ; turn on LED1
  181. call    SUBRUTIN
  182. bcf         LATB,4             ; Turn off LED1
  183. call    SUBRUTIN
  184. bra          MainLoop            ; Do it again...
  185.  
  186. SUBRUTIN:
  187. OndelayLoop:
  188.      decfsz    Delay1, f            ; Waste time.  
  189.      goto      OndelayLoop         ;
  190.      decfsz    Delay2, f            ;
  191.      goto      OndelayLoop         ;
  192.      decfsz    Delay3,F            ;
  193.      goto      OndelayLoop  
  194.      decfsz    Delay4,F            ;
  195.      goto      OndelayLoop
  196.      return                        ;
  197.                    
  198.      END resetVect;reset_vec
A hozzászólás módosítva: Jan 23, 2024
Moderátor által szerkesztve
Következő: »»   5 / 197
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