Mal som onehdá jednu odbornú knižku, kde sa písalo, že C++ na AVR OK, ale len tam, kde to má z pohľadu riešenej úlohy zmysel, keďže kód sa pri
použití C++ fičúr nafukuje a primerane spomaľuje.
Tak akých 60 LED? Ak by si chcel riadiť ich jas cez softwarové PWM, na C++ by som sa vykašlal. Ak to cheš použiť ako výučbový soft, OK, ale pochybujem, že niekto takúto vyslovene “nekompatibilnú” úlohu s C++ cestou riešil. Lebo medzi nami, načo?
Inak, čo je na C++ tak úžasné, že sa práve to oplatí použiť pre úlohy na jednočipáku a´la ATmega?
Předpokládám, že tazatel chtěl jen dvoustavové ovádání 60x led napojené (expandované) přes kaskádu shift registrů (že by vteřinová ručička ?
To bude asi další školní úloha, jinak nevidím smyslu pro C++
Je to takhle:
Ve škole si máme navrhnout zadání nějakého projektu v C++,
já se už nějakou dobu dost věnuju AVR…a vzhledem k tomu, že se chci něco naučit a chci, aby to mělo nějakej smysl, tak jsem si řekl, že použiju DPS s AVR…
(tato DPS s 60LED na shiwt registech na SPI původně měla jiné využití, ale už dřív jsem měl postranní úmysl použít to jako hodiny…na což pak ale nedosšlo…)
…zobrazování času nebo i datumu binárně (je tam i 10 LEDek bokem) by byla hezké úloha s hezkým objektem… (Mám i debugger, takže tak…)
Jinak nemá C++ asi žádný smysl
(Pro ty, co kritizujou, že řeší školní úlohu: “Mohl jsem stáhnout libovolný projekt pro pc z internetu”)
Ok, rozumím. Nicméně, protože nejsem moc objekovej tak Ti asi moc neporadím. Obzvlášť u tak jednoduché úlohy navrhnout třídy aby to trochu dávalo smysl. Já nevím, třeba třídu obecných hodin + třídu pro zobrazování a pak to skloubit do jednoho objektu pro ledkove hodiny… (jen taková úvaha).
Pirat077: Ono je to v podstatě tak, že jít s C++ na malý jednočip (a je jedno, jestli je to AVR, PIC, x51 nebo jakýkoliv jiný) je prostě hovadina. On i totožný program napsaný v Cčku zabere v paměti víc, než v ASM (vyzkoušeno, ověřeno). Použití C++ nejenom, že program nafoukne ještě víc, ale i ho ještě víc zpomalí. To jsou asi hlavní důvody, proč se objekty v těchto malých jednočipech většinou nepoužívají a proto Ti jen těžko někdo poradí…
Mne išlo skôr o to, či sa dá ovládanie 60LED vôbec na hlavných prvkoch jazyka C++ postaviť.
Chápem, že máš k dispozícii 60LED, malý jednočip a chcel by si to využiť. To je chvályhodné. Vôbec nemusí ísť o to, či bude program veľký alebo nie. Aj tomuto rozumiem.
No skôr ma zatiaľ znepokojuje, že sa NIKTO ani len s nástrelom ako využiť C++ pre ovládanie 60LED (bez ohľadu na veľkosť zabranej pamate) v tejto diskusii neozval.
Preto som nabádal k Ctrl+C a Ctrl+V, ak vôbec niečo také na NETe nájdeš.
Istotne nikdy nepôjde o čistú kópiu. SW si budeš tak či tak musieť prispôsobiť na svoj HW. Preto by vždy šlo o edukačnú činnosť a nie o čisté plagiátorstvo.
Jediná rada, kterou jsem se dozvěděl, bylo kopírování projektu (ALE pro PC a ne pro AVR !) …když mi nikdo neporadí, dopadne to tak…stahovat je co, i studijních materiálů a tutoriálů pro pc je dost…
Ale pro AVR nikde nic není…
Celej ten výrobek už mám taknějak funkční…v podstatě jen potřebuju objekt = čas …a to, aby volal funkce, které jsem pro posuvné registry napsal…
v C++ neuím vůbec nic, takže nejsem schopen ani takovéto věci (pokud to má nějak vypadat a efektivně fungovat)
Myslím že šedesátikanálové PWM bys na internetu hledal dlouho.
Níže je námět na postupné vteřinové blikání šedesáti ledek přes 8 pos. registrů v kaskádě.
A vykašli se na objekty, normální člověk píše pro osmibity v C.
[code]#define DATA 1 #define CLOCK 2
uint64_t bits_to_send = 1; // 64-bitové číslo, určuje které Ledky budou svítit
while(1)
{
// pošli postupně bity čísla bits_to_send (LSb nejdřív)
for(uint8_t i=0; i<64; i++)
{
// nastav DATA
if(bit_is_set(bits_to_send,i)) setbit(PORTB,DATA);
else clrbit(PORTB,DATA);
// pošli clock
setbit(PORTB,CLOCK);
clrbit(PORTB,CLOCK);
}
_delay_ms(1000);
bits_to_send <<= 1; // další Led