Fórum témák

» Több friss téma
Fórum
Keresés
Lapozás: OK   8 / 197
(#) Lucifer válasza Skori hozzászólására (») Okt 31, 2023
Nyilván meg tudom oldani így csak alapból nem szeretem az ilyen tákolásokat...

Most a visszafejtett java kódot nézegetem, hogy mit baltáztak el az indiánok.
Ha akarnál sírni/nevetni akkor erre tessék:
https://github.com/martonmiklos/ipecmd/tree/master

A környezeti változós trükk jó ötlet, de nem jó sajnos az sem:
  1. mm@P15:/tmp/ipecmd/commandline$ export filepath="/tmp/foo bar.hex"
  2. mm@P15:/tmp$  cd /opt/microchip/mplabx/v6.15/mplab_platform/mplab_ipe
  3. mm@P15:/opt/microchip/mplabx/v6.15/mplab_platform/mplab_ipe$ ./ipecmd.sh -OV -P16F1718 -F$filepath -TPPK4
  4. Hex file not found.
  5. mm@P15:/opt/microchip/mplabx/v6.15/mplab_platform/mplab_ipe$ echo $filepath
  6. /tmp/foo bar.hex
  7. mm@P15:/opt/microchip/mplabx/v6.15/mplab_platform/mplab_ipe$ ./ipecmd.sh -OV -P16F1718 -F$filepath -TPPK4
  8. Hex file not found.
A hozzászólás módosítva: Okt 31, 2023
(#) MATA válasza asch hozzászólására (») Okt 31, 2023
Közben megtaláltam a beállítást most ezt a híbát írja:
uilding file: ../misc/aux.cpp
Invoking: AVR C++ Compiler
avr-g++ -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega328 -DF_CPU=16000000UL -MMD -MP -MF"misc/aux.d" -MT"misc/aux.o" -c -o "misc/aux.o" "../misc/aux.cpp"
../misc/aux.cpp: In function ‘void aux_ADCReadIntr(uint8_t)’:
../misc/aux.cpp:38:39: error: ‘ADFR’ was not declared in this scope
ADCSRA = (1<<ADEN) | (1<<ADIE) | (1<<ADFR) | (1<<ADIF) | (1<<ADSC) |
^
make: *** [misc/subdir.mk:23: misc/aux.o] Error 1
"make all" terminated with exit code 2. Build might be incomplete.

11:16:01 Build Failed. 2 errors, 0 warnings. (took 721ms)
(#) Bakman válasza MATA hozzászólására (») Okt 29, 2023
Ebben van a lényeg:
  1. DigitalPowerSupply-1.elf section `.data' will not fit in region `text'
  2. /usr/lib/gcc/avr/5.4.0/../../../avr/bin/ld: region `text' overflowed by 30 bytes
Valamelyik változóban (?) nem férnek el az adatok.

A ".data" rész nem fog elférni a "text" területen. "text" túlcsordulás 30 bájttal.
(#) MATA válasza asch hozzászólására (») Okt 29, 2023
Hello!
Megpróbltam Linuxon is ezeket írta ki utána:
7:02:32 **** Build of configuration Release for project DigitalPowerSupply-1 ****
make all
Building file: ../sensors/ds18b20.cpp
Invoking: AVR C++ Compiler
avr-g++ -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega8 -DF_CPU=16000000UL -MMD -MP -MF"sensors/ds18b20.d" -MT"sensors/ds18b20.o" -c -o "sensors/ds18b20.o" "../sensors/ds18b20.cpp"
Finished building: ../sensors/ds18b20.cpp

Building file: ../misc/aux.cpp
Invoking: AVR C++ Compiler
avr-g++ -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega8 -DF_CPU=16000000UL -MMD -MP -MF"misc/aux.d" -MT"misc/aux.o" -c -o "misc/aux.o" "../misc/aux.cpp"
Finished building: ../misc/aux.cpp

Building file: ../misc/pwm.cpp
Invoking: AVR C++ Compiler
avr-g++ -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega8 -DF_CPU=16000000UL -MMD -MP -MF"misc/pwm.d" -MT"misc/pwm.o" -c -o "misc/pwm.o" "../misc/pwm.cpp"
Finished building: ../misc/pwm.cpp

Building file: ../lcd/hd44780.cpp
Invoking: AVR C++ Compiler
avr-g++ -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega8 -DF_CPU=16000000UL -MMD -MP -MF"lcd/hd44780.d" -MT"lcd/hd44780.o" -c -o "lcd/hd44780.o" "../lcd/hd44780.cpp"
../lcd/hd44780.cpp: In member function ‘void HD44780::sendstringformat(char*, ...)’:
../lcd/hd44780.cpp:192:9: warning: unused variable ‘LASTCHAR’ [-Wunused-variable]
int LASTCHAR = NUMCHARS - 1;
^
Finished building: ../lcd/hd44780.cpp

Building file: ../io/DigitalIn.cpp
Invoking: AVR C++ Compiler
avr-g++ -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega8 -DF_CPU=16000000UL -MMD -MP -MF"io/DigitalIn.d" -MT"io/DigitalIn.o" -c -o "io/DigitalIn.o" "../io/DigitalIn.cpp"
Finished building: ../io/DigitalIn.cpp

Building file: ../io/DigitalOut.cpp
Invoking: AVR C++ Compiler
avr-g++ -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega8 -DF_CPU=16000000UL -MMD -MP -MF"io/DigitalOut.d" -MT"io/DigitalOut.o" -c -o "io/DigitalOut.o" "../io/DigitalOut.cpp"
Finished building: ../io/DigitalOut.cpp

Building file: ../main.cpp
Invoking: AVR C++ Compiler
avr-g++ -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega8 -DF_CPU=16000000UL -MMD -MP -MF"main.d" -MT"main.o" -c -o "main.o" "../main.cpp"
../main.cpp: In function ‘int main()’:
../main.cpp:159:32: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
"********************\n");
^
../main.cpp:190:4: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
);
^
Finished building: ../main.cpp

Building target: DigitalPowerSupply-1.elf
Invoking: AVR C++ Linker
avr-g++ -Wl,-Map,DigitalPowerSupply-1.map,--cref -mrelax -Wl,--gc-sections -Wl,-u,vfprintf -lprintf_flt -lm -Llibprintf_flt.a -Llibm.a -mmcu=atmega8 -o "DigitalPowerSupply-1.elf" ./sensors/ds18b20.o ./misc/aux.o ./misc/pwm.o ./lcd/hd44780.o ./io/DigitalIn.o ./io/DigitalOut.o ./main.o
/usr/lib/gcc/avr/5.4.0/../../../avr/bin/ld: DigitalPowerSupply-1.elf section `.data' will not fit in region `text'
/usr/lib/gcc/avr/5.4.0/../../../avr/bin/ld: region `text' overflowed by 30 bytes
collect2: error: ld returned 1 exit status
make: *** [makefile:94: DigitalPowerSupply-1.elf] Error 1
"make all" terminated with exit code 2. Build might be incomplete.

17:02:33 Build Failed. 3 errors, 3 warnings. (took 1s.77ms)
(#) KoblogPerGyok hozzászólása Okt 29, 2023
Üdv!

Minden úgy működik, ahogy kell, de tényleg. UART, SPI-RAM stb. is simán megy a sok buktató ellenére. A különböző GND probléma is meg van oldva. Sok szimulációs hiba/bug és spi trükkös megoldással sikerült sok-sok problémát megoldani, olyanokat is, amikre az adatlap sem tér ki. DE MEGINT van egy ilyen...

Kezdek belebolondulni, hogy semmi sem úgy megy, mint ahogy azt az ember elgondolná. ADC-t szeretnék csinálni az alábbi feltétlekkel:

-Vref+ A0
-Vref - A1
-Jel + An4
-Jel - A5 -de errenincs szükség dsPIC33FJ128M802-nél, mert az adott beállítások mellett nem tudja, a Vref- -t használja, ha jól tudom.

-Nincs Scan, csak 1 csatorna kell, 16 órajel 1 mintára, csak ezt használja, nincs interrupt, mert a timer indítja, amit én paraméterezek fel. A gond már ott kezdődik, hogy sdPIC33FJ32M202-t lehet szimulálni, de az is kétséges sokszor, mert volt olyan, hogy a logikailag hibás SPI-vel simán ment, a helyessel meg kerülőkkel szóval...
Itt a gond, amit bármilyen beállítást alkalmazok sem jó. (persze csak azt az egyet nem próbáltam, ami jó lenne!!!!

Ha ebből a while-t kiszedem, és sok nop-al helyettesítem, akkor kapok sok-sok nullát, ami ugyan nem jó, de előrelépés a semmihez képest. While-al semit semkapok, mert soha nem teljesül a feltétel, ez miatt minden más funkció is megáll, amit a main loop-ból hívnék.... A baj az, hogy a DONE soha nem lesz 1. Miért? Melyik beállítás miatt nem lesz ez soha 1? Ezt is a netről kaptam, valakinél így megy, kap eredményeket is. Ebben az esetben két dolog lehet. 1 ha jó minden, akkor a szimuláció nem jó az eltérő procik miatt. 2 nem jók a bellításaim sem.

  1. unsigned int readADC(void) {
  2.     // Start conversion
  3.     //Ha ezeket bennthagyom, és  a while-t kiveszem, akkor megy, de nem mér semmit
  4.     //Csak nullákkal tér vissza, amit okozhat a helytelen init is és az eltérő proceszorok is.
  5.     __builtin_nop();
  6.     __builtin_nop();
  7.     __builtin_nop();
  8.     __builtin_nop();
  9.     __builtin_nop();
  10.     // Clear the DONE bit
  11.     AD1CON1bits.DONE = 0;
  12.     AD1CON1bits.SAMP = 1;
  13.     // Wait for conversion to complete
  14.     //while (!AD1CON1bits.DONE);
  15.     __builtin_nop();
  16.     __builtin_nop();
  17.     __builtin_nop();
  18.     __builtin_nop();
  19.     __builtin_nop();
  20.     // Return the result
  21.     return ADC1BUF0;
  22. }


Itt van a harmadik beállítás.

  1. void init_ADC_2(void)
  2. {
  3.     TRISAbits.TRISA4 = 1; // Analóg jel ide jön be, input
  4.     ADPCFGbits.PCFG4 = 0; //Analógra állítva
  5.    
  6.     AD1CON1bits.FORM = 0; // Data Output Format: integer (Signed Fraction - Q15 format)
  7.     AD1CON1bits.SSRC = 0; // 000 = Clearing sample bit ends sampling and starts conversion
  8.     AD1CON1bits.ASAM = 0; // ADC Sample Control: Sampling begins immediately after conversion
  9.     AD1CON1bits.AD12B = 0; // 10-bit ADC operation
  10.     AD1CON1bits.SIMSAM = 1; // Simultaneous sampling for multiple channels
  11.     AD1CON2bits.CHPS = 0b10; // s CH1, CH2, CH3, because CH2 is the one you are using.
  12.     AD1CON2bits.CSCNA = 0; // Do not scan inputs
  13.     AD1CON2bits.VCFG = 0; // Use voltage reference Vss/Vdd
  14. //Eleve ezt is be  kell majd állítani jóra, de addig eljutni....
  15.  
  16.     AD1CON2bits.ALTS = 0; // Always use input  for channel A
  17.     AD1CON2bits.BUFM = 0; // Always start filling at buffer 0
  18.     AD1CON3bits.ADRC = 0; // ADC Clock is derived  Systems Clock
  19.     AD1CON3bits.SAMC = 0; // Auto Sample Time = 0*Tad
  20.     AD1CON3bits.ADCS = 2; // ADC Conversion Clock Tad = Tcy * (ADCS + 1) = (1 / 40M) * 3 = 75ns (13.3MHz)
  21.  
  22.     // ADC Conversion Time for 10-bit Tc = 12 * Tad = 900ns (1.1MHz)
  23.     AD1CON1bits.ADDMABM = 1; // DMA buffers are built in conversion order mode
  24.     AD1CON2bits.SMPI = 0; // SMPI must be 0
  25.  
  26.     AD1CON4bits.DMABL = 0; // Only 1 DMA buffer for each analog input
  27.  
  28.    
  29.         //AD1CHS0/AD1CHS123: A/D Input  register
  30. //    AD1CHS0bits.CH0SA = 0; // MUXA +ve input ion (AIN0) for CH0
  31. //    AD1CHS0bits.CH0NA = 0; // MUXA -ve input ion (Vref-) for CH0
  32. //Az MC802-nél nincs külön analóg bemenet negatívra lehet?ség, a ref- haszálhatom    
  33. //01 = CH1, CH2, CH3 negative input is VREF-
  34. //00 = CH1, CH2, CH3 negative input is VREF-  
  35.     AD1CHS123bits.CH123NB = 0; // MUXA -ve input ion (Vref-) for CH1, CH2,CH3
  36.    
  37. //CH123SB: Channel 1, 2, 3 Positive Input  for Sample B bit
  38. //If AD12B = 1:
  39. //1 = Reserved
  40. //0 = Reserved
  41. //If AD12B = 0:
  42. //1 = CH1 positive input is AN3, CH2 positive input is AN4, CH3 positive input is AN5
  43. //0 = CH1 positive input is AN0, CH2 positive input is AN1, CH3 positive input is AN2
  44. //Mert az analg jel AN4-re csatlakozik    
  45.     AD1CHS123bits.CH123SB = 1; // MUXA +ve input ion (AIN0) for CH1
  46.    
  47.    
  48. //    // Az AN4 lábat válaszd ki pozitív referenciaként
  49. //    AD1CHS0bits.CH0SA = 4; // AN4 láb kiválasztása
  50.  
  51.     IFS0bits.AD1IF = 0; // Clear the A/D interrupt flag bit
  52.     IEC0bits.AD1IE = 0; // Do not Enable A/D interrupt
  53.  
  54.     AD1CSSLbits.CSS4 = 1; // Scan  AN4 only
  55.     AD1PCFGLbits.PCFG4 = 1; // Only AN4 in analog input mode
  56.  
  57.     AD1CON1bits.ADON = 1; // Turn on the A/D er
  58. }


Ezek egyelőre csak tesztek lettek volna, de a readADC()- ben a while miatt soha, egyik sem megy, ezért nem tudom az init-ben sem pontosítani a beállításokat.

Van valaki aki ezen már sikeresen végigment?
Proteus 8.1, MplabIDE 5.35, dsPIC33FJ128MC802.

Köszönöm a segítséget előre is!
(#) asch válasza MATA hozzászólására (») Okt 26, 2023
Megnéztem a kódot, a fordítókörnyezethez adott vsnprintf hívást használja a kiíráshoz (lásd: https://github.com/radhoo/digital_bench_power_supply/blob/1a3af2e5a...p#L195 )
Rákerestem hasonló problémára, és azt találtam, hogy a float formázást kihagyja a fordító a rendszerből, ha nem kapcsoljuk be. Gondolom azért, hogy spóroljon a kódterülettel. A problémára találat itt: https://stackoverflow.com/questions/37815771/snprintf-not-working-a...vr-gcc

A megoldás onnan kimásolva (nem próbáltam ki): Ezeket a linker opciókat hozzá kell adni a linker híváshoz:

  1. -Wl,-u,vfprintf -lprintf_flt -lm


Eclipse alatt fordítod a kódot, azzal a .project fájllal, amit benn van a git projektben? Vagy csináltál hozzá make fájlt? El tudom képzelni, hogy Eclipse alatt ezt a paramétert az egész workspace-re állította be, vagy valamiért az ő környezetében alapból ki volt kapcsolva ez a méretoptimalizáció, azért működött jól az eredeti kód az eredeti szerzőnél.
(#) MATA hozzászólása Okt 26, 2023
Üdv mesterek!
A következő lenne a gondom van itt ezen az oldalon ez a kapcsolás:
https://www.pocketmagic.net/digital-bench-power-supply/
Nos én letöltöttem a tömörített mappát amiben bent volt a lefordított Hex fálj is meg a forráskód is.
Namármost amikor feltöltöttem a Hex fájlt az AVR-re teljesen jó volt a kijelzés csak éppen az a baj hogy a kódban meg kellene változtatni az ellenállás értékeket azt meg ugye a Hex fájlban nem lehetséges. Ezért elővettem a forráskódot de amikor azt lefordítom és felírom az AVR-re akkor a feszültség és áram értékek helyett csak ?-et ír ki a kijelző és nem tudom ez mitől lehet.
Itt van egy kép az eredti Hex-el és a frissen fordítottal.
És a forráskód:
  1. /*
  2.  File:       main.cpp
  3.  Version:    1.0 - first version
  4.  Date:       April 7, 2015
  5.  License:       GPL v2
  6.  
  7.  Digital Bench Power supply
  8.  http://www.pocketmagic.net/digital-bench-power-supply/
  9.  
  10.  ****************************************************************************
  11.  Copyright (C) 2015 Radu Motisan  <radu.motisan@gmail.com>
  12.  
  13.  http://www.pocketmagic.net
  14.  
  15.  This program is free software; you can redistribute it and/or modify
  16.  it under the terms of the GNU General Public License as published by
  17.  the Free Software Foundation; either version 2 of the License, or
  18.  (at your option) any later version.
  19.  
  20.  This program is distributed in the hope that it will be useful,
  21.  but WITHOUT ANY WARRANTY; without even the implied warranty of
  22.  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  23.  GNU General Public License for more details.
  24.  
  25.  You should have received a copy of the GNU General Public License
  26.  along with this program; if not, write to the Free Software
  27.  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  28.  ****************************************************************************
  29.  */
  30. #include <avr/io.h>
  31. #include <avr/interrupt.h>
  32. #include <avr/wdt.h>
  33. #include <string.h>
  34. #include <stdlib.h>
  35. #include "timeout.h"
  36. #include "io/DigitalIn.h"
  37. #include "io/DigitalOut.h"
  38. #include "sensors/ds18b20.h"
  39. #include "lcd/hd44780.h"
  40. #include "misc/aux.h"
  41. #include "misc/pwm.h"
  42.  
  43.  
  44. /************************************************************************************************************************************************/
  45. /* Main entry point                                                                                                                                                                                                     */
  46. /************************************************************************************************************************************************/
  47. HD44780         lcd;
  48. DS18B20         ds18b20;
  49. PWM             pwm;
  50. DigitalOut      relay,
  51.                         speaker,
  52.                         fan;
  53. DigitalIn       but1, // v+
  54.                         but2, // v-
  55.                         but3, // i+
  56.                         but4; // i-
  57. float tempval = 0;
  58. float vref = 5.0;
  59.  
  60. /* power control modes */
  61. #define MODE_MEASURE_CURRENT 0
  62. #define MODE_MEASURE_VOLTAGE 1
  63. volatile bool adc_mode = MODE_MEASURE_CURRENT;
  64. volatile float current = 0, voltage = 0;
  65.  
  66. /* my power supply after rectifier shows 16.1V on the center tap and 33.8V on full secondary
  67.  * opamp will introduce some upper voltage limitations. Currently using TL082 and we can reach close to 26V maximum
  68.  */
  69. #define VOLTAGE_LIMIT   26
  70. #define CURRENT_LIMIT   5
  71. #define TEMPERATURE_STARTFAN 50 // if 40degrees celsius are reached, we will start the fan
  72. #define TEMPERATURE_SHUTDOWN 70 // if 80degrees celsius are reached, we will reduce the power until the unit cools down
  73.  
  74.  
  75. /* set default values: later save/load them to/from EEPROM */
  76. volatile float targetVol = 5.0, targetCur = 1;
  77.  
  78. volatile bool alarm = false;
  79. uint16_t cycles = 0;
  80.  
  81.  
  82. // Interrupt service routine for the ADC completion
  83. // we measure the current (PC5) and the voltage (PC4) alternatively
  84. ISR(ADC_vect){
  85.         uint16_t analogVal = ADCL | (ADCH << 8);
  86.         if (adc_mode == MODE_MEASURE_CURRENT) {
  87.                 current = (analogVal / 1024.0 * vref) / 0.186666; // the output power resistor measures 0.55Ohm
  88.                 // alternate mode
  89.                 adc_mode = MODE_MEASURE_VOLTAGE;
  90.                 ADMUX = PC4; // next time we will do ADC on PC4, to get the voltage
  91.         } else if (adc_mode == MODE_MEASURE_VOLTAGE) {
  92.                 // the actual R13 and R14 resistors can be measured using a multimeter for better accuracy
  93.                 float R14 = 9.87, /*10k*/ R13 = 98.2; /*100K */
  94.                 voltage = analogVal / 1024.0 * (R13 + R14) / R14 * vref;
  95.                 // alternate mode
  96.                 adc_mode = MODE_MEASURE_CURRENT;
  97.                 ADMUX = PC5; // next time we will do ADC on PC5, to get the current
  98.         }
  99.  
  100.         // If free-running mode is enabled (ADFR), we don't need to restart conversion
  101.         // But we can't use ADFR as we want to monitor two separate ADC channels alternatively
  102.  
  103.         // start another ADC conversion
  104.         ADCSRA = (1<<ADEN) | (1<<ADIE) | (1<<ADIF) /* | (1<<ADFR) */ | (1<<ADSC) |
  105.                                 (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // set prescaler to 128 (16M/128=125kHz, above 200KHz 10bit results are not reliable)
  106.  
  107.         // control operations, in order
  108.  
  109.         // 1. act on short circuit
  110.         // decrease quickly on current spike
  111.         if (current > targetCur + targetCur / 2) {
  112.                 pwm.setDuty(pwm.getDuty() / 2);
  113.                 alarm = true; // will sound alarm in main thread
  114.         }
  115.         // 2.act on over current
  116.         // decrease slowly on higher current
  117.         else if (current > targetCur) {
  118.                 pwm.setDuty(pwm.getDuty() - 1);
  119.         }
  120.         // 3.act on over temperature
  121.         else if (tempval > TEMPERATURE_SHUTDOWN) {
  122.                 pwm.setDuty(pwm.getDuty() - 1);
  123.                 alarm = true;
  124.         }
  125.         // 4. act on over voltage
  126.         // take care of voltage with lower priority
  127.         else if (voltage > targetVol) pwm.setDuty(pwm.getDuty() - 1);
  128.         // 5. act on under voltage
  129.         else if (voltage < targetVol) pwm.setDuty(pwm.getDuty() + 1);
  130. }
  131.  
  132. int main(void) {
  133.         // setup everything
  134.         relay.init(&PORTD, PD5);
  135.         fan.init(&PORTD, PD6);
  136.         speaker.init(&PORTB, PB0);
  137.         pwm.initPWM();
  138.  
  139.         but1.init(&PORTC, PC0);
  140.         but2.init(&PORTC, PC1);
  141.         but3.init(&PORTC, PC2);
  142.         but4.init(&PORTC, PC3);
  143.  
  144.  
  145.         ds18b20.init(&PORTD, PD7);
  146.         lcd.init(&PORTD, PD4, &PORTB, PB3, &PORTD, PD3, &PORTB, PB4, &PORTD, PD2, &PORTB, PB5); //RS, E, D4, D5, D6, D7
  147.  
  148.         // setup ADC to measure as interrupt: go for current first
  149.         adc_mode = MODE_MEASURE_CURRENT;
  150.         ADMUX = PC5;
  151.         ADCSRA = (1<<ADEN) | (1<<ADIE) | (1<<ADIF) | (1<<ADSC) |
  152.                         (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // set prescaler to 128 (16M/128=125kHz, above 200KHz 10bit results are not reliable)
  153.         sei();
  154.  
  155.         // show welcome screen
  156.         lcd.sendstring("********************\n"\
  157.                                    "*Digital Pwr Supply*\n"\
  158.                                    "*pocketmagic.net'15*\n"\
  159.                                    "********************\n");
  160.  
  161.         // keep screen then clear
  162.         //_delay_ms(500);
  163.  
  164.         // main loop
  165.         while (1) {
  166.  
  167.                 // engage relay if we're at 12V or more. use measured voltage or configured voltage?
  168.                 relay.set(targetVol > 12);
  169.                 // engage fan is temperature is above threshold
  170.                 fan.set(tempval > TEMPERATURE_STARTFAN);
  171.  
  172.                 // limit the frequency for some ops including display and temperature reading
  173.                 if (cycles == 0) {
  174.                         float temp = 0;
  175.                         cli();
  176.                         if (ds18b20.readTemperature(&temp) == THERM_OK)
  177.                                 tempval = temp;
  178.                         sei();
  179.  
  180.                         lcd.cursorhome();
  181.                         lcd.sendstringformat(
  182.                                 " +SET: %5.2fV %5.2fA\n"\
  183.                                 "%5.1fC %5.2fV %5.2fA\n"\
  184.                                 "%s       PWM:%4d\n"
  185.                                 "2015 pocketmagic.net",
  186.                                 targetVol, targetCur,
  187.                                 tempval, voltage, current,
  188.                                 fan.get()?" +FAN":"     ",
  189.                                 pwm.getDuty()
  190.                         );
  191.                 }
  192.                 cycles ++;
  193.                 if (cycles > 10000) cycles = 0;
  194.  
  195.  
  196.                 // sound alarm
  197.                 if (alarm) {
  198.                         speaker.set(1);
  199.                         _delay_ms(30);
  200.                         speaker.set(0);
  201.                         // stop alarm
  202.                         alarm = false;
  203.                 }
  204.  
  205.                 // act on buttons
  206.                 if (but1.get() == 0) {
  207.                         if (targetVol < VOLTAGE_LIMIT) targetVol += 0.1;
  208.                         cycles = 0; // force lcd refresh
  209.                 }
  210.                 if (but2.get() == 0) {
  211.                         if (targetVol > 0.1) targetVol -= 0.1;
  212.                         cycles = 0; // force lcd refresh
  213.                 }
  214.                 if (but3.get() == 0) {
  215.                         if (targetCur < CURRENT_LIMIT) targetCur += 0.1;
  216.                         cycles = 0; // force lcd refresh
  217.                 }
  218.                 if (but4.get() == 0) {
  219.                         if (targetCur > 0.1) targetCur -= 0.1;
  220.                         cycles = 0; // force lcd refresh
  221.                 }
  222.  
  223.  
  224.  
  225.         }
  226.  
  227. }

Köszönöm előre is ha valaki tudna ebbe segélni.
(#) KoblogPerGyok válasza Bakman hozzászólására (») Okt 24, 2023
Nekem sem világos, ezt valahonnan nyestem, a szimulációkban ok minden.

Adatlapból:

Idézet:
„bit 1 SPITBF: SPIx Transmit Buffer Full Status bit
1 = Transmit not yet started, SPIxTXB is full
0 = Transmit started, SPIxTXB is empty
Automatically set in hardware when CPU writes SPIxBUF location, loading SPIxTXB
Automatically cleared in hardware when SPIx module transfers data from SPIxTXB to SPIxSR”


Eddig azt hittem az a while azt csinálja, hogy megvárja, mire vége lesz az átvitelnek. Itt lehet a hiba? Nincs vége, de már bezárom? Ok, kipróbálom, majd, hogy csak az init-ben indítom el és nem kapcsolom ki. De addig is nincs olyan lehetőség, while, ami megmondja, hogy mikor ment át az adat? Hasonlóan a read-nél lévőnél? Melyik regiszter és bitje lehet ez. Sajnos most nem látom már át rendesen.
A hozzászólás módosítva: Okt 24, 2023
(#) KoblogPerGyok hozzászólása Okt 24, 2023
Üdv!

Megint nem értem pontosan mi történik, mert megint hulla fáradt is vagyok már.

Minden működik, de tényleg. UART-ról fogadok karaktereket, küldök sok adatot, de az SPI csak nem megy. Az is a baj, hogy Proteusban csak p33FJ32MC202-t tudok szimulálni, de nekem p33FJ128MC202-m van. A szimulációban minden tökéletes, simán jó. A valóságban meg....
Átírom mindenhol a header-eket, hogy a p33FJ128MC802.h forduljon bele a kódba. Feltöltöm, ráteszem az analizátort és a csatolt képet kapom. Elvileg RAM-ba kellene írni. Az írás nem jó, mert nagy vonalakban, mikor olvasnék ki akkor az óra jele megjelenik és jó. Előtte a három próbálkozás az az RAM felé az instrukció, cím felső byte, majd alsó byte, majd ami már jó, az az olvasás lenne. Nem tudom mia baj. Lehet kellene lehúzó ellenállás, meg ilyesmi, de akkor olvasáskor miért jó? Nem értem.
A MOSI sem jó, ott is hiba van, semmit nem csinál. A képen látszik, hogy az első 3 próbálkozás, ami a write lenne időben sem jó, sokkal rövidebb, nem csak hiányzik az óra impulzus sorozat.
Itt a kód:

  1. #include <p33FJ128MC802.h>
  2. //#include<p33FJ32MC202.h>
  3.  
  4.   void SPI_Master_Init(void)
  5.   {
  6.    
  7.      //SPI Error flag, overflow stb.
  8.      SPI1STATbits.SPIROV=0;
  9.      SPI1STATbits.SPITBF=0;
  10.      
  11.     //* The following code shows the SPI register configuration for Master mode */
  12.     IFS0bits.SPI1IF = 0; // Clear the Interrupt Flag
  13.     IEC0bits.SPI1IE = 0; // Disable the Interrupt
  14.     // SPI1CON1 register Settings
  15.     SPI1CON1bits.DISSCK = 0; // Internal Serial Clock is Enabled
  16.    
  17.     SPI1CON1bits.DISSDO =0; // SDOx pin is controlled by the module
  18.    
  19.     SPI1CON1bits.MODE16 = 0; // Communication is word-wide (16 bits)
  20.     SPI1CON1bits.SMP = 0; // Input data is sampled at the middle of data
  21.    
  22.     // output time
  23.     SPI1CON1bits.CKE = 0; // Serial output data changes on transition
  24.     // from Idle clock state to active clock state
  25.     SPI1CON1bits.CKP = 0; // Idle state for clock is a low level;
  26.     // If CKP = 0, always place a pull-down
  27.     //resistor on SSx.
  28.     // active state is a high level
  29.     SPI1CON1bits.MSTEN = 1; // Master mode Enabled
  30.    
  31.     //Most 1:64 és 1:8!!
  32.     //Oszcillátor leosztása://bit 1-0 PPRE<1:0>: Primary Prescale bits (Master mode)(3)
  33.     //    //11 = Primary prescale 1:1
  34.     //    //10 = Primary prescale 4:1
  35.     //    //01 = Primary prescale 16:1
  36.     //    //00 = Primary prescale 64:1
  37.     //    SPI1CON1bits.PPRE = 0b10;
  38.     //    //bit 4-2 SPRE<2:0>: Secondary Prescale bits (Master mode)(3)
  39.     //    //111 = Secondary prescale 1:1
  40.     //    //110 = Secondary prescale 2:1
  41.  
  42.     SPI1CON1bits.PPRE = 0b00; //10 = Primary prescale 64:1
  43.     SPI1CON1bits.SPRE = 0b110; //110 = Secondary prescale 2:1
  44.  
  45.     //SPI1STATbits.SPIEN = 1; // Enable SPI module
  46.  
  47.  
  48.     //SPI1BUF = 0b11111111; // Write data to be transmitted
  49.     // Interrupt Controller Settings
  50.     IFS0bits.SPI1IF = 0; // Clear the Interrupt Flag
  51.     IEC0bits.SPI1IE = 1; // Enable the Interrupt
  52.  
  53.   }
  54.   void Write_SPI(unsigned char data)
  55.   {
  56.     IFS0bits.SPI1IF = 0; // Clear the Interrupt Flag
  57.     SPI1STATbits.SPIEN = 1; // Enable SPI module    
  58.     SPI1BUF = data;     // Write character to SPI buffer
  59.     while(SPI1STATbits.SPITBF) ;  // Wait until transmission is started
  60.     IFS0bits.SPI1IF = 0; // Clear the Interrupt Flag
  61.     SPI1STATbits.SPIEN = 0; // Enable SPI module    
  62.    
  63.   }
  64.   char SPI_Read(void)
  65. {    
  66.     IFS0bits.SPI1IF = 0; // Clear the Interrupt Flag
  67.     SPI1STATbits.SPIEN = 1; // Enable SPI module  
  68.     SPI1STATbits.SPIROV = 0;  // Reset overflow bit
  69.      char C;
  70.     SPI1BUF=0x0;
  71.     SPI1STATbits.SPIRBF  =0x00;
  72.    
  73.      while (!SPI1STATbits.SPIRBF); // Wait for character
  74.      SPI1STATbits.SPIROV = 0;  // Reset overflow bit
  75.     C = SPI1BUF & 0xff;    // Get character
  76.     IFS0bits.SPI1IF = 0; // Clear the Interrupt Flag
  77.     SPI1STATbits.SPIEN = 0; // Enable SPI module      
  78.    
  79.     return(C);
  80. }


Elvileg a pin remapping jó, mert akkor nem jelenne meg az óra, mikor a read()-t hívom meg. A csatolt képen látszik a hiba, de olvasáskor a megjelenő óra ideje jó, 80 MHz van leosztva 128-al.
A hozzászólás módosítva: Okt 24, 2023
(#) Gafly válasza Audience hozzászólására (») Okt 22, 2023
Köszönöm , közben én is kutakodtam, de magyarul nem sokra jutottam, szerintem azért mert ritka dolog hazánkban:

Phase shifter
Idézet:
„The phase shifter is an Iacon relic that grants the user the ability to pass through solid objects. It works intuitively, allowing the user to phase through objects or not depending on the needs of the situation.”


Quadrature booster
Idézet:
„Where parallel circuits with different capacities exist between two points in a transmission grid (for example, an overhead line and an underground cable), direct manipulation of the phase angle allows control of the division of power flow between the paths, preventing overload.”


Szerintem egyértelműen ez utóbbiról van szó.

Nyelvet nem beszélőknek hevenyészett magyarítás:
Idézet:
„A fázisváltó egy Iacon ereklye, ami lehetővé teszi a szilárd testeken történő áthatolást. Saját szabályai szerint működik, vagy nem, a helyzettől függően.”

Idézet:
„Ahol párhuzamosan két különböző kapacitású áramkör van (például légvezeték és földkábel) a hálózatban, fázisszög közvetlen változtatása lehetővé teszi az energia áramlás szabályozott megosztását, és így az esetleges túlterhelés megelőzését.”
(#) Lamprologus válasza don_peter hozzászólására (») Okt 17, 2023
Nem értem!
Minek kéne flag register? Minek kell az előző állapot?

Jön a megszakítás, megnézed hogy magas, vagy alacsony szint van-e. Ha magas felfotó él volt, ha alacsony lefutó!
A hozzászólás módosítva: Okt 17, 2023
(#) don_peter válasza Bakman hozzászólására (») Okt 17, 2023
Sajnos a választott PIC azon lábai amit használok, csak Change notification-t tudnak. Minden változásra jeleznek. Nincs külön flag register. A bebillenést követően vizsgálom a portot és az előző elmentett állapotot megnézem és a kettő közti változásból következtetek a megszakítást kiváltó eseményre. Nos ezen logika mentén gondolkodom és haladok.
(#) antikzsolt válasza antiktelefon hozzászólására (») Okt 14, 2023
Nem az a célom. Az volt a lényeg hogy gyorsan és működjön pár napig. Így tudtam megoldani 20 perc alatt. Nem volt egy működőképes nagy kapacitású power bank azt ez lett belőle. Ma kérdéses hogy menni fog e végig. Holnap meg fel lesz töltve úgy is. Ha meglett volna a step down konverter kéznél elhiheted egy autó aksit is odaraktam volna ehelyett a valami helyére. Szerencsére csak egy mini kamera és egy telefon van rajta ami adja a netet a kamerának. Az eredeti rendszer elköszönt egy hibás töltésvezérlőnek köszönhetően. Kamera meg kell. A kinézet ellenére igényes a dobozolása. 15x10cm szerelő dobozban nyugszik így már az eső sem gond neki.
(#) KoblogPerGyok válasza pipi hozzászólására (») Okt 11, 2023
Üzenet:

cannot convert 'float*' to 'long int*' in assignment
ptr = (float*)malloc(2 * Ciklus_max * sizeof(float));
^

exit status 1

Compilation error: cannot convert 'float*' to 'long int*' in assignment

Kód:
ptr = (float*)malloc(2 * Ciklus_max * sizeof(float));

if (ptr == NULL) {
Serial.println("Memory not allocated.\n");
}
else
{
Serial.println("Memory allocated.\n");
}

Így gondoltad? Már totál belezavarodtam mindenbe. Ezt is kipróbáltam. A pointer meg nem lehet float, kipróbáltam azt is, hogy a otr is float, és a fenti kódban is ahogy mondtad.

Meg ezt is:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. float PI_=3.141592653;
  6.  
  7. const long Mintaszam=32768/2; //32768
  8. long Ciklus_max=32768/2;
  9. float Re[Mintaszam];
  10. float Im[Mintaszam];
  11. float Adatok[Mintaszam];
  12.  
  13.  
  14.  
  15. //malloc-hoz kell
  16. //long* ptr;
  17.  
  18.  
  19. void setup() {
  20.   long i;
  21.  
  22.   Serial.begin(115200);
  23.   Serial.println ("Eddig megy...");
  24.  
  25. // Dynamically allocate memory using malloc()
  26. //https://www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/
  27. //  ptr = (float*)malloc(2 * Ciklus_max * sizeof(float));
  28.  
  29. //    if (ptr == NULL) {
  30. //        Serial.println("Memory not allocated.\n");
  31. //    }
  32. //    else
  33. //    {
  34. //      Serial.println("Memory allocated.\n");
  35.  //   }
  36.  
  37.  
  38.  
  39. //******************************************************
  40.  
  41.   for (i=0; i<Ciklus_max; i++)
  42.     {
  43.       Re[i]=1.1*i;
  44.     }
  45.   for (i=0; i<Ciklus_max; i++)
  46.     {
  47.       Im[i]=10.1*i;
  48.     }
  49.   for (i=0; i<Ciklus_max;i++)
  50.     {
  51.      Adatok[i]=456.1*i;
  52.     }
  53.   Serial.println ("Ciklusok után...");
  54. }


Hiba. Írtam, hogy ezzel kezdtem, mert az az eleje mindennek. Elvileg mennie kellene, de ezek szerint másik memória területekbe kellene pakolnom, vagy ilyesmi, de nem értem.

Kell valami módszer, ami az egyiket az egyik memória szegmensbe teszi, a másikat másikba és így tovább. A DSPIC-ben van ilyesmi, de az ESP-t nem ismerem.
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Okt 11, 2023
Erre már a fordító is mérges, de már nem látom át rendesen....

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. float PI_=3.141592653;
  6.  
  7. const long Mintaszam=32768/2; //32768
  8. long Ciklus_max=32768/2;
  9. float Re[Mintaszam];
  10. float Im[Mintaszam];
  11. float Adatok[Mintaszam];
  12.  
  13. //malloc-hoz kell
  14. long* ptr;
  15.  
  16.  
  17. void setup() {
  18.   long i;
  19.  
  20.   Serial.begin(115200);
  21.   Serial.println ("Eddig megy...");
  22. // Dynamically allocate memory using malloc()
  23. //https://www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/
  24.   ptr = (long*)malloc(2 * Ciklus_max * sizeof(float));
  25.  
  26.     if (ptr == NULL) {
  27.         Serial.println("Memory not allocated.\n");
  28.     }
  29.     else
  30.     {
  31.       Serial.println("Memory allocated.\n");
  32.     }
  33.  
  34.   for (i=0; i<Ciklus_max; i++)
  35.     {
  36.       Re[i]=1.1*(float)i;
  37.     }
  38.   for (i=0; i<Ciklus_max; i++)
  39.     {
  40.       Im[i]=10.1*(float)i;
  41.     }
  42.   for (i=0; i<Ciklus_max;i++)  //HIBA ROSSZUL MÁSOLTAM!!!!
  43.     {
  44.      Adatok[i]=456.1*(float)i;
  45.     }
  46.   Serial.println ("Ciklusok után...");
  47. }


A (float)i is egy teszt, ha nincs előtte, akkor sem megy.

IDE
DRAM segment data does not fit.
region `dram0_0_seg' overflowed by 94392 bytes

De ilyen hibát dobott akkor is, mikor a const Mintaszam-al akartam pár dolgot megoldani, ezért kellett a Ciklus_max. Ez teszt, nem éles, több változó is kell majd. Sokkal.
A hozzászólás módosítva: Okt 11, 2023
(#) KoblogPerGyok válasza pipi hozzászólására (») Okt 11, 2023
Linkről:

ptr = (int*) malloc(100 * sizeof(int));
Since the size of int is 4 bytes, this statement will allocate 400 bytes of memory. And, the pointer ptr holds the address of the first byte in the allocated memory.

Kód:
  1. //malloc-hoz kell
  2.  int* ptr;
  3.  
  4.  
  5. void setup() {
  6.   //long i;
  7.  
  8.   Serial.begin(115200);
  9.   Serial.println ("Eddig megy...");
  10. // Dynamically allocate memory using malloc()
  11. //https://www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/
  12.   ptr = (int*)malloc(2 * Ciklus_max * sizeof(float));
  13.  
  14.     if (ptr == NULL) {
  15.         Serial.println("Memory not allocated.\n");
  16.     }
  17.     else
  18.     {
  19.       Serial.println("Memory allocated.\n");
  20.     }


Nem sikerül allocálni. Nem lehet, hogy elromlott az ESP?

Futás a Serial monitoron:

Eddig megy...
Memory not allocated.

Ciklusok után...

Ha értéket adnék nekik, akkor rögtön hibával elszáll, azaz az IDE is azt mondja, hogy túlléptem a megengedett határt. A Malloc-al ki szerettem volna deríteni, hogy rosszul csináltam-e valamit és azért nem jó, vagy nincs elég memória ehhez, nem töltöm fel a tömböket, csak létrehozom például így:

float Adatok[16278];
float Re[16278];
float Im[16278];

A pointernek egésznek kell lennie, mert a memória területre mutat. Lehet ennek long-nak kell lennie? 540KByte meghaladná az integert? Na ez még lehet. Megnézem.
(#) KoblogPerGyok válasza kapu48 hozzászólására (») Okt 11, 2023
Vennem kell másikat, de szűkös a keret mostanában sajnos. Tegnap borozgattaam, miközben a Malloc-al foglalkoztam. De ma megnéztem, és rájöttem miért hagytam ott és ittam inkább tovább...

  1. Serial.begin(115200);
  2.   Serial.println ("Eddig megy...");
  3. // Dynamically allocate memory using malloc()
  4. //https://www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/
  5.   ptr = (int*)malloc(2 * Ciklus_max * sizeof(float));
  6.  
  7.     if (ptr == NULL) {
  8.         Serial.println("Memory not allocated.\n");
  9.     }
  10.     else
  11.     {
  12.       Serial.println("Memory allocated.\n");
  13.     }


A Ciklus_max az a tömb mérete, 16384. De nem férek el benne, de elvileg 500+KByte-nak kellene lennie. Ebben el kellene férnie nem? Ez 128KByte, de már ez sem fér el. Az IDE nem panaszkodik minden esetben, de volt olyan futás ami felment az ESP-re, de folyton újraindult. De azt egy hibás const -okozta.

Szóval hibásan írtam, hogy megvan a hiba. Sajnos nincs meg.

Másképpen kell a memóriát használni? Nekem sajnos kell ez a fajta memória, a Flash-ben is kell valamennyit tárolnom, de 3-4 ilyen tömbre szükségem lenne. Még így is Hanoi tornyait kell játszanom.
A hozzászólás módosítva: Okt 11, 2023
(#) Régi motoros válasza formasu hozzászólására (») Okt 10, 2023
Mégis hogy próbáltad le akkor a motort? Azt döntsük már el, hogy ez most BLDC vagy sima DC(kefés) motor? Mert nem mindegy milyen motorvezérlőt veszel.

A BMS -re írtam, a lényeg, hogy 7S legyen, és lítium ionhoz való, lehetőleg minél nagyobb áramú, ami még befér a régi helyére.
Idézet:
„BMS 7S 24V 10A 15A 20A 30A Li-ion 18650 Battery Charge Board With Balance Function Short Circuit / Temperature Protection
és a másik:
BMS 7S 25.9V 30A 20A 15A 10A Li-ion 18650 Battery Manage Board Balanced Charging Short Circuit Protection Common Port Power bank

Ebből én igazából csak két szöveget látok, nem magát a terméket. Azért kértem, linket tegyél fel, hogy az alapján tudjunk javaslatot tenni ha a technikai paramétereit megnéztük. Így első olvasatra az utóbbit mondanám, mert arra nagyobb feszültség van írva, csak épp ennyi információval nem sokra megyünk.

Idézet:
„...egyik miért 24 V-os, a másik miért 25,9 V-os?”

Na ez az amit mi sem tudunk, amíg nem magát a két terméket nézzük meg.
A hozzászólás módosítva: Okt 10, 2023
(#) KoblogPerGyok válasza kapu48 hozzászólására (») Okt 10, 2023
Sziasztok!

Küzdök még kicsit, de nem jó.
Mintaszam=16384;
Float típusú tömbökkel operálnék.

Elvileg ekkor 1 tömb 4*16384 Byte, ami 65536byte, ami 64KByte.

Két ilyennél ezt a hibát kapom a fordítótól:

DRAM segment data does not fit.
region `dram0_0_seg' overflowed by 28848 bytes

Elvileg az 520KByte-ba ennek és a kicsi kódnak bele kéne férnie.
Arduino IDE 2.1.0

Board:
ESP32-WROOM-DA Module

De ezzel sem jó:

NodeMCU-32S

Mi lehet a gond?
(#) formasu hozzászólása Okt 10, 2023
Sziasztok!
Szükségem van egy 7 akkucellás MBS-re, egy Bosch porszívóba. A régi panel, amiben a BMS is benne van, "meghalt". A porszívóban eredetileg 7 akku cella van, és 27,5 V van ráírva.
Gyakorlatilag kétféle MBS-t látok: az egyik:
BMS 7S 24V 10A 15A 20A 30A Li-ion 18650 Battery Charge Board With Balance Function Short Circuit / Temperature Protection
és a másik:
BMS 7S 25.9V 30A 20A 15A 10A Li-ion 18650 Battery Manage Board Balanced Charging Short Circuit Protection Common Port Power bank
MBS-ekkel eddig nem foglalkoztam, nem tudom, hogy mi a különbség köztük, az egyik miért 24 V-os, a másik miért 25,9 V-os?
Melyik lenne a jó nekem? Az eredeti panelen látok egy 20 A-es biztosítékot, ebből arra következtetek, hogy a motor nem vesz fel 15 A-nál, esetleg 10 A-nál többet.
A működési időre max. 75 perc van írva, és "Turbó" állapotban 15 perc. Feltételezem, hogy nem valami speciálisan nagy Ah-ás akkumulátorok voltak a porszívóban. (Nem látom felírva a kapacitásukat)
A kérdésem, hogy nekem melyik BMS-re van szükségem? A 24 V-osra, vagy a 25,9 Voltosra? Ezen kívül a 10, 15, vagy a 20 A-osra?
Ezen kívül szükségem van egy motor meghajtóra is. Nem tudom eldönteni, hogy 10A-os, vagy 15 A-os, esetleg a 20 A-os kellene-e? Az, hogy hány A-os a motor meghajtó, az azt jelenti, hogy a ráírt max. áramerősségnél lekapcsol, letilt, vagy azt, hogy ez fölött tönkre megy?
Én úgy gondolom, hogy ez biztosan jó lenne:
DC 6V-90V 15A DC Motor Speed Controller Stepless Speed Regulation Pulse Width PWM DC 12V 24V 36V 48V 1000W
A hozzászólás módosítva: Okt 10, 2023
(#) img válasza sonajkniz hozzászólására (») Okt 8, 2023
(#) devergo74 hozzászólása Okt 6, 2023
Sziasztok!
Szeretnék felprogramozni egy Arduino pro mini-t, de állandóan ezt a hibaüzenetet kapom:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x25

Már telepítettem könyvtárakat, újra tettem az Arduino ide-t, próbáltam régebbi verzióval, de semmi, a hiba továbbra is fennáll.
Van valakinek valami ötlet, mi lehet a gond?
(#) sargarigo válasza sany hozzászólására (») Okt 5, 2023
This is not a bug, this is a feature! Kvantumpoti, diszkrét állapotokkal, az egyes kvantumpontok között megfelelő erejű és irányultságú kinetikus energia szükséges!
(#) tibike32 hozzászólása Szept 24, 2023
Sziasztok !

Adott egy program MH ET LIVE ESP32 MiNiKit-re, ARDUINO IDE 1.8.12 a fordító, a végén ezt a hibát dobja fel. E:\aquacontrol32-master\aquacontrol32-master\aquacontrol32\webservertask.ino: In function 'bool setupMDNS(const char*)':
webservertask:673:49: error: cannot convert 'ip4_addr*' to 'esp_ip4_addr_t*' {aka 'esp_ip4_addr*'}
esp_err_t res = mdns_query_a( hostname, 2000, &addr );
^~~~~
In file included from C:\Users\Tibi HP8470P\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\libraries\ESPmDNS\src/ESPmDNS.h:46,
from E:\aquacontrol32-master\aquacontrol32-master\aquacontrol32\aquacontrol32.ino:7:
C:\Users\Tibi HP8470P\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11/tools/sdk/esp32/include/mdns/include/mdns.h:649:83: note: initializing argument 3 of 'esp_err_t mdns_query_a(const char*, uint32_t, esp_ip4_addr_t*)'
esp_err_t mdns_query_a(const char * host_name, uint32_t timeout, esp_ip4_addr_t * addr);
~~~~~~~~~~~~~~~~~^~~~

cannot convert 'ip4_addr*' to 'esp_ip4_addr_t*' {aka 'esp_ip4_addr*'}

Mi lehet a gondja ?

Tibi
(#) tunerman válasza tunerman hozzászólására (») Szept 19, 2023
Az ötödik nap délelőttjén hatalmas sóhajtás után feldaraboltam az Audio note AN-SP QSSC hangfalvezetékeket, majd szépen befűztem a helyükre.
Délután majd az ellenállásokat kezdem el beforrasztani, ezek AN 2 wattos nem mágnesezhető tantalumok 
TJ.
(#) robis01 válasza HiMen hozzászólására (») Szept 14, 2023
Idézet:
„With distance more than approximately 5 feet (1.5 meters), you may need to use a powered USB hub, as the USB port on your computer does not supply enough power to stretch over distance.”


Dugd át egy nagy áramú (>500mA) USB portba akkor működnie kellene.
(#) tothtechnika2 hozzászólása Szept 8, 2023
Sziasztok! Adott egy ESP32. Letöltöttem arduinoban a legfrissebb könyvtárat hozzá (2.xxx) Osx alatt egyszerűen képtelenség beüzemelni. Sikerült ez itt bárkinek valahogy? Mindenféle python error van. Most már odáig eljutottam, hogy ez a hiba:
  1. Traceback (most recent call last):
  2.   File "esptool/loader.py", line 57, in <module>
  3.   File "PyInstaller/loader/pyimod02_importers.py", line 352, in exec_module
  4.   File "serial/tools/list_ports.py", line 31, in <module>
  5.   File "PyInstaller/loader/pyimod02_importers.py", line 352, in exec_module
  6.   File "serial/tools/list_ports_posix.py", line 33, in <module>
  7.   File "PyInstaller/loader/pyimod02_importers.py", line 352, in exec_module
  8.   File "serial/tools/list_ports_osx.py", line 26, in <module>
  9.   File "PyInstaller/loader/pyimod02_importers.py", line 352, in exec_module
  10.   File "ctypes/__init__.py", line 7, in <module>
  11. ImportError: dlopen(/var/folders/7_/p8pscx8x6f591tt7dc_ty4r00000gn/T/_MEIjJve7F/lib-dynload/_ctypes.cpython-38-darwin.so, 2): Symbol not found: _ffi_closure_alloc
  12.   Referenced from: /var/folders/7_/p8pscx8x6f591tt7dc_ty4r00000gn/T/_MEIjJve7F/lib-dynload/_ctypes.cpython-38-darwin.so (which was built for Mac OS X 10.15)
  13.   Expected in: /usr/lib/libffi.dylib
  14.  in /var/folders/7_/p8pscx8x6f591tt7dc_ty4r00000gn/T/_MEIjJve7F/lib-dynload/_ctypes.cpython-38-darwin.so
  15.  
  16. During handling of the above exception, another exception occurred:
  17.  
  18. Traceback (most recent call last):
  19.   File "esptool.py", line 31, in <module>
  20.   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  21.   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  22.   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  23.   File "PyInstaller/loader/pyimod02_importers.py", line 352, in exec_module
  24.   File "esptool/__init__.py", line 41, in <module>
  25.   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  26.   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  27.   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  28.   File "PyInstaller/loader/pyimod02_importers.py", line 352, in exec_module
  29.   File "esptool/cmds.py", line 14, in <module>
  30.   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  31.   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  32.   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  33.   File "PyInstaller/loader/pyimod02_importers.py", line 352, in exec_module
  34.   File "esptool/bin_image.py", line 14, in <module>
  35.   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  36.   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  37.   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  38.   File "PyInstaller/loader/pyimod02_importers.py", line 352, in exec_module
  39.   File "esptool/loader.py", line 62, in <module>
  40. AttributeError: module 'sys' has no attribute 'VERSION'
  41. [33007] Failed to execute script 'esptool' due to unhandled exception!
  42. exit status 1
  43. Hiba a(z) ESP32S3 Dev Module alaplapra fordításra.


Van valakinek ötlete mi lehet ez?
(#) Skori hozzászólása Szept 3, 2023
Hozzáértőket kérdezném.
Samsung PM883 SSD adatlapot nézem, konkrétan ezt: Bővebben: Link
A 8. oldal alján van egy ilyen paraméter:
Data Retention: 3months
notE:
1) Data retention was measured by assuming that SSD reaches the maximum rated endurance at 40'C in power-off state.

Jól értem, hogy kikapcsolt állapotban, 40°C-on tárolva, már 3 hónap után adatot veszthet??
A hozzászólás módosítva: Szept 3, 2023
(#) Koczur42 hozzászólása Aug 23, 2023
Helló!
Még kezdő vagyok, segítséget kérek. Újratelepítettem a Win10 és az Arduinot is.
Azóta az Arduino letöltésnél a következőket írja ki.

Avrdude: Stk_getaync{} attempt 10 of 10: not in sync: resp=0x00

Előre is köszönöm a segítséget.
Üdv: Koczur42
(#) pipi válasza Tambi hozzászólására (») Aug 20, 2023
The Timer/Counter Interrupt Mask register - TIMSK
4. Bit - OCIE1A: Timer/Counter1 Output CompareA Match Interrupt Enable
ebbe elég nehéz lenne egy egész bájtot(8bitet) beletölteni, ezért fúj szerintem.
De miért is ebbe a regiszterbe akarsz periódust tölteni?
A hozzászólás módosítva: Aug 20, 2023
Következő: »»   8 / 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