Fórum témák

» Több friss téma
Fórum
Keresés
Lapozás: OK   5 / 196
(#) 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
(#) tufatofu hozzászólása Jan 18, 2024
Sziasztok!
Járt már hasonlóképpen valaki?
Vettem az asszonynak karácsonykor üzletben egy Xiaomi Redmi note 12 telefont, mert a fiam azt mondta, hogy ezeket már telefonnak lehet nevezni. 4.-én már vissza is vittem a boltba mert nem volt hajlandó tölteni semmiféle módon.
Szerintetek jobb lett volna akkor elállni a vásárlástól? Mi a gyakorlat ilyenkor? Megpróbálják megkókányolni, mert ez nekem nem tűnt olyan könnyen szétszedhetőnek. A bolt meddig ülhet egy ilyen "javításon", ill. mikor köteles kicserélni egy újra?
Köszönöm a válaszokat!
(#) Massawa válasza Massawa hozzászólására (») Jan 11, 2024
Egy ujabb fejlemény ( erröl nem is tudtam), hogy a SW hibáját elöször a posta ( bank) alkalmazottjaira kenték és kb 700 alkalmazottat büntettek meg. A bank alkalmazottajait ezért, mert a SW hiányt jelzett sok számlán amit lopásnak minösitettek.
Most a parlament dönt arrol, hogy kegyelmet és kártalanitást kapnak, de több mint 10 éves büntetett priusz rengeteg embert közülük csödbe vitt. ( egyszerü alkalmazottaktol bankfiok igazgatoig mindenki elöfordul a listán).
Egy szoftware hiba miatt.
(#) Massawa válasza sargarigo hozzászólására (») Jan 10, 2024
Mit tud a kuncsaft tenni, amikor átveri a bank (illetve magát a bankot is átveri valaki más)?
Ha meg marad valami apropénze biztos, hogy átmegy máshova, de ha nem marad semmi csak fizethetlen hitel akkor mi van?
Talán meg emlékszünk a devizahitelekre.
Külföldön ez sokkal gyakoribb, nem ritkán éjjel nappal jönnek a financiális mézesmadzagok, és sajnos mindig van egy réteg aki ész nélkül ráragad.
Ha meg baj van, láthatod az esetben is, 36 évvel késöbb kerülsz sorra a kártéritésre. És azt sem tudjuk ki mennyit kap vissza, általában soha nem annyit amit vesztett.
Nem ritkán a pénzügyek sajnos piramis játék szerüen épülnek fel, és gyakran annyira alattomosan, hogy még nagy és megbizhatonak tartott bankok is a vesztesek közé kerülnek. Föleg az angolszász világban a bank filozofia nagyon eltér a nálunk megszokottol. Ott bizonyos összeg felett a kuncsaft „befektet“ , ami mindig rizikoval jár.
(#) Massawa válasza majkimester hozzászólására (») Jan 10, 2024
Azért figyelhetnél jobban az irottakra.

1. a SW-t 36 évvel ezelött kezdték használni. ( kb 1988)
2. Többször merült fel közben, hogy valami nincs rendben. (valoszinü a banknak is)
3. a cég egyfolytában tagadott 2003-ig ( visszaélt az eröfölénnyel), amikor sikerült bebizonyitani a hibát.

Te gondolod, hogy idöközben nem voltak upgradek stb. söt valoszinü, hogy a HW is közben (többször) cserélödött, mégsem történt semmi. És valoszinü nem a kuncsaft reklamált, hanem a bank meg végül valoszinüleg egy megbizott, szintén SW specialista cég, akik be tudták bizonyitani a hibát.

( látod mi történik hasonlo esetekben a repülögépekkel, autokkal, vonatokkal stb. Az utolso csavarig szétszedik, és mindent tüzetesen átviszgálnak, még azt is kideritik, ki huzta az utolso vonalat a rajzokra és levonják a konzekvenciát. Ilyesmit eddig nem igen hallottunk, ha a SW-ben fordul elö a hiba.)
A hozzászólás módosítva: Jan 10, 2024
(#) img válasza xxxyyy hozzászólására (») Jan 10, 2024
Egyetértek, szintén zenész.

https://forum.vcfed.org/index.php?threads/486-l2-cache-not-working.1241500/
A hozzászólás módosítva: Jan 10, 2024
(#) majkimester válasza Massawa hozzászólására (») Jan 9, 2024
Idézet:
„Ezekszerint a szoftware fejlesztök valahogy nem felelösek a munkájuk minösegéért.”

Komolyabb helyeken a szoftvert megrendelő ügyfél, jelen esetben a bank saját maga végez(tet) egy UAT-t (User Acceptance Test) Ennek célja, hogy a valós környezetben bebizonyítani, hogy a sw a követelményeknek maradéktalanul megfelel. Ha az nem történt meg vagy nem elég alaposan akkor a bank hibázott. Ha az UAT eredményét a bank elfogadta, akkor ő bizonyíthatóan elismerte, hogy a sw megfelel a követelményeknek. Ez után kár mutogatni a sw fejlesztőre.
A hozzászólás módosítva: Jan 9, 2024
(#) Massawa hozzászólása Jan 9, 2024
Angol barátaim meselik, hogy mi történt az utobbi 36 evben.
Az egyik neves bank ( fiokjai voltak minden településen) egy rossz szoftwaret használt. A szoftver gyártoja évekig tagadta, hogy hibás lenne. A betétesek ezrei vesztették el a pénzüket.
Mintegy 20 éve a hatoságok bebizonyitották, hogy valoban hiba van a szoftwareben, és kényszeritették a neves közismert céget a javitásra.
Most jutott el a biroság a kártalanitàsra ( már aki meg él a károsultak közül), de érdekes modon senkit nem vontak felelöségre. Pedig sokan vesztették nemcsak a pénzüket, de a házukat lakásukat is.
Ezekszerint a szoftware fejlesztök valahogy nem felelösek a munkájuk minösegéért.
(#) Udvari Zsombor válasza Régi motoros hozzászólására (») Jan 6, 2024
Gondolj bele, a fényérzékelő nem tudja megkülönböztetni, hogy körülötte van fény vagy a saját fényét érzékeli, tehát normális, hogy kivárja a beállított időtartamot, míg lekapcsol.
"This is a feature, not a bug."
(#) asch válasza andyka hozzászólására (») Jan 5, 2024
Bocs, közben megnéztem a linkelt leírást is. Ő huntingnak nevezi a jelenséget és ír róla, hogy előfordulhat és hogy kell javítani:
"note that when used as a servo or speed control, you will experience hunting if the gain is too high, and/or if the feedback caps (C1 and C2) are too small (the arrangement shown below didn't require the caps). Hunting means that the servo will 'hunt' for the correct setting, but will overshoot and undershoot continuously"
Tehát vagy a gain túl nagy, vagy a C1 C2 túl kicsi.

>Három huzalja van: gnd és két + szál, egyik forgatja erre, a másik meg arra
Belül mi lehet benne? Hogy működik?

Azért nem biztos, hogy jó ötlet az analóg szabályozás, mert esetleg kis eltérésre folyni fog áram, de épp nem indul be a motor és feleslegesen melegítheti a szabályzó. Persze ha nem ég le, akkor mindegy. Meg nem is vagyok teljesen biztos benne, hogy előállhat ez a helyzet. Analóg rendszereken szerintem sokkal nehezebb hibát keresni, és például jelen helyzetben nehezebb beállítani a lengés mentes szabályozást is.
(#) glaci hozzászólása Dec 30, 2023
Sziasztok!
Működik a rendszer, de van azért hibája. Előfordul, hogy be se lép a while(1) részbe, csak esetenként a második bekapcsolásra. Van úgy, hogy megáll (lefagy) a 400ms késleltetés után és nem folytatódik a végtelen ciklus.

  1. /*PIC16F887  8MHz belső oszcillátor
  2. KÖZELEDÉS ÉRZÉKELŐ HC-SR04 ultrasonic szenzorral
  3.  
  4. */
  5.  
  6.  // LCD module connections
  7. sbit LCD_RS at RD2_bit;
  8. sbit LCD_EN at RD3_bit;
  9. sbit LCD_D4 at RD4_bit;
  10. sbit LCD_D5 at RD5_bit;
  11. sbit LCD_D6 at RD6_bit;
  12. sbit LCD_D7 at RD7_bit;
  13.  
  14. sbit LCD_RS_Direction at TRISD2_bit;
  15. sbit LCD_EN_Direction at TRISD3_bit;
  16. sbit LCD_D4_Direction at TRISD4_bit;
  17. sbit LCD_D5_Direction at TRISD5_bit;
  18. sbit LCD_D6_Direction at TRISD6_bit;
  19. sbit LCD_D7_Direction at TRISD7_bit;
  20. // End LCD module connections
  21. //változók
  22.   int a;
  23.   char txt[7];
  24.  
  25. void main()
  26. {  
  27.   OSCCON=0x70;
  28.   C1ON_bit=0;
  29.   C2ON_bit=0;
  30.   INTCON.GIE=0;
  31.   ANSEL=0;
  32.   ANSELH=0;
  33.   TRISB = 0b00010000;           //RB4 bemenet PIN (ECHO)
  34.   TRISD=  0b00000000;            //minden RD kapu kimenet
  35.   Lcd_Init();
  36.   Lcd_Cmd(_LCD_CLEAR);          // Clear display
  37.   Lcd_Cmd(_LCD_CURSOR_OFF);     // Cursor off
  38.   PORTB.F0=0;                   //trig kimeneti jel
  39.   //PORTB.F4=0;
  40.     Lcd_Out(1,1,"HC-SR4");
  41.     Delay_ms(2000);
  42.     Lcd_Cmd(_LCD_CLEAR);
  43.     T1CON = 0x10;
  44.  
  45.    while(1)
  46.   {  
  47.     TMR1H = 0;
  48.     TMR1L = 0;
  49.  
  50.     PORTB.F0 = 1;               //TRIGGER HIGH
  51.     Delay_us(10);               //10uS Delay
  52.     PORTB.F0 = 0;               //TRIGGER LOW
  53.     while(!PORTB.F4);           //várjuk az echo jelet high
  54.     T1CON.F0 = 1;               //Timer Starts
  55.     while(PORTB.F4);            //várjuk az echo jel végét LOW
  56.     T1CON.F0 = 0;               //Timer Stops
  57.  
  58.     a = (TMR1L | (TMR1H<<8));   //Reads Timer Value
  59.     a = a/58.82;                //Converts Time to Distance
  60.     a = a + 1;                  //Distance Calibration
  61.  
  62.     if(a>=2 && a<=400)          //Check whether the result is valid or not
  63.     {
  64.       Lcd_Out(1,1,"itt vagyok");
  65.       IntToStr(a,txt);
  66.       Ltrim(txt);
  67.       Lcd_Cmd(_LCD_CLEAR);
  68.       Lcd_Out(1,1,"Distance = ");
  69.       Lcd_Out(1,12,txt);
  70.       Lcd_Out(1,15,"cm");
  71.     }
  72.     else
  73.     {
  74.       Lcd_Cmd(_LCD_CLEAR);
  75.       Lcd_Out(1,1,"Out of Range");
  76.     }
  77.    
  78.     Delay_ms(400);
  79.        // Lcd_Cmd(_LCD_CLEAR);
  80.     Lcd_Out(2,1,"itt vagyok6");
  81.   }
  82.  
  83. }
(#) glaci hozzászólása Dec 29, 2023
Sziasztok!
Mint az előbbi kérdésemben elővezettem, sok a tudatlanságom!
Most hogy az idők rendben vannak a kérdés az, hogy miért nem lép ki while(!PORTB.F4); ciklusból a program, pedig a feltétel változik.

/*PIC16F887 8MHz belső oszcillátor
KÖZELEDÉS ÉRZÉKELŐ HC-SR04 ultrasonic szenzorral

*/

// LCD module connections
sbit LCD_RS at RD2_bit;
sbit LCD_EN at RD3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISD2_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
// End LCD module connections
//változók
int a;
char txt[7];

void main()
{
OSCCON=0b01110101;
TRISB = 0b00010000; //RB4 bemenet PIN (ECHO)
TRISD= 0b00000000; //minden RD kapu kimenet
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
PORTB.F0=0; //trig kimeneti jel
//PORTB.F4=0;
Lcd_Out(1,1,"HC-SR4");
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);
T1CON = 0x10;

while(1)
{
TMR1H = 0;
TMR1L = 0;

PORTB.B0 = 1; //TRIGGER HIGH
Delay_us(10); //10uS Delay
PORTB.B0 = 0; //TRIGGER LOW

Lcd_Out(1,1,"itt vagyok");
while(!PORTB.F4); //Waiting for Echo

T1CON.F0 = 1; //Timer Starts
while(PORTB.F4); //Waiting for Echo goes LOW
T1CON.F0 = 0; //Timer Stops

a = (TMR1L | (TMR1H<<8)); //Reads Timer Value
a = a/58.82; //Converts Time to Distance
a = a + 1; //Distance Calibration
if(a>=2 && a<=400) //Check whether the result is valid or not
{
IntToStr(a,txt);
Ltrim(txt);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Distance = ");
Lcd_Out(1,12,txt);
Lcd_Out(1,15,"cm");
}
else
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Out of Range");
}

Delay_ms(400);
}

}
  1.  
A hozzászólás módosítva: Dec 29, 2023
(#) Frankye hozzászólása Dec 27, 2023
Sziasztok!
Nemrégiben gépcsere volt nálam, a régi XP-s Win cserére került Win10-re. Ezzel együtt a korábbi Flowcode-om is megszánt létezni. Letöltöttem a díjmentes verziót, ez azonban nem hozza létre a kívánt hex-et. Az alábbi hibaüzenetet dobja:
Idézet:
„You do not have a valid licence to perform this action”

(Amennyiben a HEX-be fordítást választom.)
Hogyan lehet ezt kiküszöbölni?
Előre is köszönöm a választ!
(#) Laslie válasza asch hozzászólására (») Dec 13, 2023
Ezt csináltam, a leírások alapján:
  1. #include <SPI.h>
  2. #include <SD.h>
  3. #include "TMRpcm.h"
  4. #include "LowPower.h"
  5.  
  6. const int chipSelect = 10;
  7. const int wakeUpPin = 2;
  8. const int fetPin = 3;
  9. int buttonState = 0;
  10.  
  11. TMRpcm tmrpcm;
  12. File root;
  13.  
  14. void wakeUp() {
  15.   buttonState = HIGH;
  16.   detachInterrupt(digitalPinToInterrupt(wakeUpPin));
  17. }
  18.  
  19. void initSDCard() {
  20.   while (!Serial);
  21.     Serial.print("Initializing SD card...");
  22.  
  23.   if (!SD.begin(chipSelect)) {
  24.     Serial.println("initialization failed. Things to check:");
  25.     Serial.println("1. is a card inserted?");
  26.     Serial.println("2. is your wiring correct?");
  27.     Serial.println("3. did you change the chipSelect pin to match your shield or module?");
  28.     Serial.println("note: press reset or reopen this serial monitor after fixing your issue!");
  29.     while (true);
  30.   }
  31.  
  32.   Serial.println("initialization done.");
  33.   root = SD.open("/");  
  34.   tmrpcm.speakerPin = 9;
  35.   tmrpcm.setVolume(5);
  36.   tmrpcm.quality(1);
  37. }
  38.  
  39. void setup() {
  40.   Serial.begin(9600);
  41.   pinMode(wakeUpPin, INPUT);
  42.   pinMode(fetPin, OUTPUT);
  43.   digitalWrite(fetPin, LOW);
  44. }
  45.  
  46. void loop() {
  47.   buttonState = LOW;
  48.   attachInterrupt(digitalPinToInterrupt(wakeUpPin), wakeUp, RISING);
  49.   LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
  50.   if (buttonState == HIGH) {
  51.     initSDCard();
  52.     digitalWrite(fetPin, HIGH);
  53.     tmrpcm.play("DINGDONG.WAV");
  54.     digitalWrite(fetPin, LOW);
  55.   }
  56. }
Következő: »»   5 / 196
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