• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Pomoc w modyfikacji kodu
#1

.txt   zap1 pop.txt (Rozmiar: 49.3 KB / Pobrań: 7)
.txt   zap1 pop.txt (Rozmiar: 49.3 KB / Pobrań: 7)
.txt   zap1 pop.txt (Rozmiar: 49.3 KB / Pobrań: 7) Witam
Jestem zielony w programowaniu arduino,jestem tylko elektronikiem.Chcę zbudować generator sygnału prostokątnego z wypełnieniem 50%,Mam kod ściągnięty z neta który działa ,potrzebuje informacji jak dopisać częstotliwości np.682khz do kodu .
 
Odpowiedź
#2
Wrzuć linka gdzie to znalazłeś, część programu jest po angielsku, część po polsku, nie wiadomo co jest pierwotnym, działającym kodem, a co zostało dopisane przez niewiadomo kogo.
Edit:
Dobra, coś można się domyśleć w sumie. Bez większego przerabiania programu masz do wyboru dostępne częstotliwości wypisane w tym segmencie:
frequency 682,00000 KHz → EEPROM memory = 256 - tą pewnie dopisałeś, nie jest prawidłowa, max wartość to 255
frequency 7,81250 KHz → EEPROM memory = 255
frequency 7,87402 KHz → EEPROM memory = 254
i tak dalej do 0.
Zgodnie z programem na pozycji
frequency 682,00000 KHz → EEPROM memory = 009
masz te 682kHz.
Czy to jest tyle czy te przecinki znaczą coś innego to trzeba wgrać i przetestować.
W kolejnym bloku programu z tych 256 wartości (0-255) jest wybranych 100 i zapisanych do pamięci przy wgrywaniu programu, z tych 100 można wybierać podczas działania programu wartości i ich używać:
EEPROM.update(1, 167); // it means frequency 25,00
EEPROM.update(2, 166); // it means frequency 25,64
EEPROM.update(3, 165); // it means frequency 26,32
jak zamienisz na 3 pozycji (czy innej wybranej)
EEPROM.update(3, 9); // it means frequency 682,00000 KHz to pod komórką pamięci 3 będziesz miał te 682kHz dostępne.
 
Odpowiedź
#3
Zobacz ten wątek. https://forum.arduinopolska.pl/watek-pwm...te-w-fazie
Tam masz dokładnie opisane, jak ustawiać częstotliwość.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#4
Witam.Przetestowałem wpisy po modyfikacji ale nic to nie zmienia ,wszystkie częstotliwości pozostają bez zmian.Częstotliwość 682khz w kodzie żródłowym tam gdzie się pojawia,dopisałem sam.Załączam link z kodem żródłowym i proszę o modyfikację.
https://zkolmaga.wordpress.com/2021/10/2...da-i-mity/
 
Odpowiedź
#5
682kHz tym sprzętem nie osiągniesz. Masz w komentarzach w pliku wyraźnie napisane wzór na częstotliwość:
Kod:
// f = 8MHz/(OCR2A + 1)

OCR2A może przyjąć wartości od 0 do 255. Do tego dochodzi prescaler, ale i z jego wykorzystaniem niewiele zdziałasz.

A co do dopisywania nowych wartości do programu:
Kod:
void checkIfPeriodAndScalaOK() {
/********************************************************************************
#define minPeriod1    0    // for register OCR2A defining max frequency 0 -> 8 MHz when scala1
#define maxPeriod1  127    // for register OCR2A defining minimum frequency 127 -> 62.50 kHz when scala1
#define minPeriod2   16    // EEPROM = 16 + 128, for register OCR2A defining minimum frequency 16 -> 58.82 kHz when scala2
#define maxPeriod2  127    // EEPROM = 127 + 128, for register OCR2A defining minimum frequency 127 -> 7.81 kHz when scala2
*********************************************************************************/
  if(scala == scala1 && (period > maxPeriod1 || period < minPeriod1)) period = maxPeriod1;
  if(scala == scala2 && (period < minPeriod2 || period > maxPeriod2)) period = minPeriod2;
  if(scala != scala1 && scala != scala2) { // if scala wrong then scala2 and period=24 -> 40kHz
    period = 24;      // for register OCR2A=24(+128) defining frequency 40 kHz with prescaler 8x
    scala  = scala2;  // prescaler 8x
  }
}
Ta funkcja wykonuje się przy odczycie danych z EEPROM. Jeżeli którakolwiek z danych nie będzie się zgadzać to będziesz mieć 40kHz.

Dobrze poczytaj opisy w programie - można z nich wyciągnąć wiele przydatnych informacji. (Częstotliwość można zapamiętać poprzez długie przytrzymanie w prawo lub w lewo).
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości