Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Programová záhada
Jdi na stránku Předchozí  1, 2, 3  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další)
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Celeron



Založen: Apr 02, 2011
Příspěvky: 17720
Bydliště: Nový Bydžov

PříspěvekZaslal: ne duben 30 2023, 23:01    Předmět: Citovat

Every mám, tak zkusím. Možná že by stačilo i Teenssy 2.0, má 2560byte RAM. Mám ho nachystanej kvůli velkýmu počtu analogů do jednoho projektu.
Zkusil jsem vyházet všechny čtyřbyte globální proměnný a odkomentovat jejich použití v programu. Je z toho nefunkční troska ale stále se to kouše ve stejným místě. Volných je nyní 1580. Nějak nerozumím tomu, jak se ty proměnný obsazujou, proč se jich tolik uvolnilo když jsem zrušil pouze 6 čtyřbytovek.
Ale asi to bude správná cesta se zvětšováním RAM. Našel jsem na netu s tím mým 1,3"displejem displej přijímače na amatérský pásma, kde kromě kmitočtu jsou grafický čtvrtkruhový stupnice, jako to mívaly starý komunikační přijímače s analogovým laděním. Píše tam něco v tom smyslu, že to 328P nezvládá a proto používá ESP32. Proč ne Every nebo 2560 tam nepíše. Možná to nešlo ani s nima a je potřeba 32 bytů.

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17720
Bydliště: Nový Bydžov

PříspěvekZaslal: po květen 01 2023, 17:35    Předmět: Citovat

Hlásím, že to na Every dělá to samý. Takže velikost RAM nemá vliv. Tak už snad jen knihovny. Zkusím U8LIB.
_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17720
Bydliště: Nový Bydžov

PříspěvekZaslal: po květen 01 2023, 21:32    Předmět: Citovat

Hledal jsem na netu jiný ovládaní pro si5351
A ejhle našel jsem variantu pro 1,3" displej s řadičem SH1106.
No a v tom řádku kde se skáče na ty výpise ve kterých se mě to žvejká je:
kód:
statup_text();  //If you hang on startup, comment

Takže nejen problém u mě s původním displejem SSD1306 ale i u jiných s SH1106...

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!


Naposledy upravil Celeron dne út květen 02 2023, 10:41, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mahoney



Založen: Oct 26, 2019
Příspěvky: 381

PříspěvekZaslal: út květen 02 2023, 9:46    Předmět: Citovat

Asi je to chyba knihovny, a asi by to chtělo zkusit nulovat proměnné bufferu, jenže je to objektový a zatím jsem se tím moc daleko neprohrabal.

Problém může být i v alokaci místa pro proměnné, takovej "long long int" například může znamenat něco trochu jinýho na 32bit a něco jinýho na 8bit MCU a je to obecně známej problém (proto vznikly standardizovaný typy jako uint8_t a podobně, knihovna stdint), takže záleží i na kompilátoru jak se s tím popasuje (to by mělo být vidět v listingu překladu, pokud to nějakej generuje).

Viděl bych to tak, že jestli chceš mít málo starostí tak to hoď taky na to ESP a uvidíš, co to udělá…
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17720
Bydliště: Nový Bydžov

PříspěvekZaslal: út květen 02 2023, 10:45    Předmět: Citovat

To spíš oželím ten výpis počátečních keců. Dělám to pro sebe a tak snad vím, co to umí a co na kterej výstup leze. Laughing
Navíc to už mám nastrkaný do KP krabice a předělávat se mě držák na Pro Mini až tak moc nechce.
Díky za snahu pomoci.

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ondraN



Založen: Aug 16, 2022
Příspěvky: 399
Bydliště: Roztoky

PříspěvekZaslal: út květen 02 2023, 12:21    Předmět: Citovat

Zkoušel jsi tam ty delay() ? Jen by mě to zajímalo, jestli to má vliv.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Celeron



Založen: Apr 02, 2011
Příspěvky: 17720
Bydliště: Nový Bydžov

PříspěvekZaslal: út květen 02 2023, 16:05    Předmět: Citovat

Dnes jsem to začal strójit do škatule, takže rozebraný. Až poskládám do finálu, budu ještě laborovat. Dostal jsem tip na inicializaci na 128 x 32, odbýt počáteční výpisy v horních dvou řádkách a pak inicializovat na 128 x 64 na finální běh. Mělo by to alokovat menší RAMku, akorát si nejsem jistej, jestli ve spodní části displeje nebude při Clear rozsypanej čaj. Ale možná to stejně nepomůže, všechno směřuje spíš na chybu v knihovně.
_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17720
Bydliště: Nový Bydžov

PříspěvekZaslal: ne květen 21 2023, 10:34    Předmět: Citovat

Tak jsem dotáhnul řízení generátoru do finální podoby. Bohužel, ten startovací výpis není možný vůbec použít, stále se to na něm kouše.
A taky jsem narazil na další záhadnou věc. Chtěl jsem posílat na sériovou linku po zapnutí a změně kmitočtu generátoru hodnotu kmitočtu pro kompenzaci kmitočtový charakteristiky externího atenuátoru. A zase jsem narazil, stačí dát do jakýhoholiv místa void Setup inicializaci sériový linky Serial.begin(9600); a do tý doby chodící řízení generátoru vůbec nenaběhne.
Když zkusím použít Software.serial, tak je to stejný.
Fleška obsazená 26140 byte, RAMka 719 byte. Asi je opravdu problém s tou "hromadou" a stackem. Rolling Eyes

Zkusím to přepsat na jinou knihovnu pro OLED SH110X.

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17720
Bydliště: Nový Bydžov

PříspěvekZaslal: ne květen 21 2023, 19:16    Předmět: Citovat

Na U8GLIB jsem se vykašlal, nenašel jsem od ní nějakej kvalitní popis příkazů.
Vzal jsem Arduino Every, zkontroloval kompatibilitu pinů a zkusil jsem FW přeložit do Every. Pinově to je hodně podobný ale kolem přerušení je všecko jinak. Už jsem to jednou zkoušel a nevím proč mi Every vůbec nešlo, ani blbej Blink.
Nastavení přerušení od pinů 2 a 3 od Pro Mini:
kód:
 
PCICR |= (1 << PCIE2);
PCMSK2 |= (1 << PCINT18) | (1 << PCINT19);

nepoužitelný, nic z toho Every nezná. Ono je totiž přerušení u Every mnohem složitější, už jen stejný nastavení pro piny 2 a 3:
kód:

#define PA0_INTERRUPT PORTA.INTFLAGS & PIN0_bm
#define PA0_CLEAR_INTERRUPT_FLAG PORTA.INTFLAGS &= PIN0_bm
#define PF5_INTERRUPT PORTF.INTFLAGS & PIN5_bm
#define PF5_CLEAR_INTERRUPT_FLAG PORTF.INTFLAGS &= PIN5_bm

  PORTA.PIN0CTRL |= PORT_PULLUPEN_bm | PORT_ISC_BOTHEDGES_gc;
  PORTF.PIN5CTRL |= PORT_PULLUPEN_bm | PORT_ISC_BOTHEDGES_gc;

No a vlastní obsluha přerušení je docela monstrum, asi tak 10 x víc řádků než pro ProMini.

kód:

// přerušení od encodéru z knihovny Rotary.h

ISR(PORTA_PORT_vect) {
  char result = r.process();

  if (PA0_INTERRUPT)
    PA0_CLEAR_INTERRUPT_FLAG;

  if (result) 
    rotary_iresult = result;
  if (result == DIR_CW) set_frequency(-1);
  else if (result == DIR_CCW) set_frequency(1);
}

ISR(PORTF_PORT_vect) {
  char result = r.process();

  if (PF5_INTERRUPT)
    PF5_CLEAR_INTERRUPT_FLAG;

  if (result)
    rotary_iresult = result;

  if (result == DIR_CW) set_frequency(-1);
  else if (result == DIR_CCW) set_frequency(1);
}


Teda přiznám, že kdybych nenašel inspiraci na netu, tak to určitě nedám.
Výsledek je, že chodí vše, co se na ProMini hryzalo včetně software.serial. Vnitřní Uart použít nemůžu, je připojenej natvrdo na USB převodník Onboard Atmel mEDBG programátoru.
Uff, to byla pěkně pro sraná půlka dnešního odpoledne. Rolling Eyes

edit: Kurňa, tak tudy cesta asi taky nevede. Ani HW ani SW sériová linka nechodí tak, jak by měly. Asi zase nějaký kolize v tom monstrózním přerušení. Asi to bude chtít nějakou jednodušší obsluhu n-codéru a začít třeba od výpisu výstupních stavů n-codéru na sériový monitor. Rolling Eyes

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!


Naposledy upravil Celeron dne út květen 23 2023, 18:31, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17720
Bydliště: Nový Bydžov

PříspěvekZaslal: út květen 23 2023, 16:53    Předmět: Citovat

Jelikož nechodila ani jedna sériová linka, nejspíš kvůli monstrózní obsluze přerušení napsal jsem si svoje čtení n-codéru s jednoduchým načítáním přes
kód:
 attachInterrupt(digitalPinToInterrupt(2), updateEncoder, CHANGE);

Načítání encodéru mi maká bez kiksů na obě strany, SI5351 generátor na to reaguje správně, vysílání hodnoty kmitočtu na Serial print jde taky.
Chtěl jsem tam dodělat ještě nějaký drobnosti ale narazil jsem na nečekanej problém. Pokud je dýlka programu ve flash větší než 59% 29389 byte, tak se program sice přeloží bez chyb ale Avrdude při nahrávání zahlásí chybu Fuse2 RC=-2 a nebo se rovnou vypíše " Ser_open Can´t set com state for "\\.\COM22" a zhroutí se zcela komunikace.
Pokud program zkrátím pod výše vypsanou hodnotu, tak se přeloží a nahraje dobře.
Na netu o té chybě není ani čárka.
Vůbec netuším, kde je problém. Napadá mě chyba ve flash paměti nebo něco v Arduino IDE pro Every. Takže problém s velikostí RAM u 328P vyřešen ale zase je něco kolem velikosti flash u 4809.
Nenapadá vás někoho, co s tím dělat?
Díky!

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!


Naposledy upravil Celeron dne út květen 23 2023, 18:33, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Cust



Založen: Jan 17, 2007
Příspěvky: 6294
Bydliště: Husinec-Řež

PříspěvekZaslal: út květen 23 2023, 18:14    Předmět: Citovat

Jestli to není rozbité?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Mahoney



Založen: Oct 26, 2019
Příspěvky: 381

PříspěvekZaslal: út květen 23 2023, 18:25    Předmět: Citovat

{deleted}

Naposledy upravil Mahoney dne út květen 23 2023, 18:31, celkově upraveno 2 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17720
Bydliště: Nový Bydžov

PříspěvekZaslal: út květen 23 2023, 18:27    Předmět: Citovat

Opravdu duchaplná odpověď. Rolling Eyes
_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mahoney



Založen: Oct 26, 2019
Příspěvky: 381

PříspěvekZaslal: út květen 23 2023, 18:30    Předmět: Citovat

Ach tak… Promiň, nerad jsem se tě dotknul.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17720
Bydliště: Nový Bydžov

PříspěvekZaslal: út květen 23 2023, 18:39    Předmět: Citovat

Mahoney napsal(a):
Ach tak… Promiň, nerad jsem se tě dotknul.

To nebylo na Tebe, ale na Custa. Mezi tím jsi stihnul odpovědět.

Už jsem Ti to převedl do Code. Ale ten problém je opravdu někde v IDE nebo chyba flešky nebo možná Fuse pro 4809 v AVRdude.
Usmolil jsem kopírováním jen samejma Serial printama program delší než těch cca 29600 byte a zase stejnej problém, jak je to delší, tak buď Fuse2 RC=-2 nebo se skácí COM22 při nahrávání. Jiný Every na identifikaci jestli není bouchlá flash nemám. A jestli jde nějak jinak dostat data do flash 4809 než přes USB štekr jsem zatím nikde nenašel.

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další) Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3  Další
Strana 2 z 3

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.15 sekund