C++ pro AVR

Ahoj,

nemáte prosím někdo vzorový program v C++ pro AVR??

rád bych se zdokonalil. Navíc by se mi to teď hodilo do jednoho projektu (stačil by mi objekt hodiny + blikání 60xLED na posuvných registrech)

Teorii moc nemám rád, radši bych viděl dva kvalitní praktické příklady…
Stačil by mi definovaný nějaký objekt + příklady práce s ním…

díky!
Nemůžu nikde nic najít, mám atmegu32

C++?

kvôli blikaniu LED?

načo :slight_smile:

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? :slight_smile:

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 ? :slight_smile:
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 :smiley:
(Pro ty, co kritizujou, že řeší školní úlohu: “Mohl jsem stáhnout libovolný projekt pro pc z internetu”)

A aby bylo jasno,
moje DPS vypadá takhle:

img20.rajce.idnes.cz/d2003/11/11 … .jpg?ver=0

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).

Pro ty, co kritizujou, že řeší školní úlohu: “Mohl jsem stáhnout libovolný projekt pro pc z internetu”

Dobrý nápad :slight_smile:

Rozhodne lepší ako riadiť 60 x LED prostredníctvom C++ fičúr.
To je skrátka ako strieľať vrabce kanónom.

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í…

A není to v tom, že by Ti nikdo poradit nechtěl.

V tom případě asi kopírování zdar :wink:
ctrl Cizí =>ctrl Vlastní

Len ci najdes nieco na kopyrovanie :smiley:
Prajem vela stastia pri hladani.

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.

Držím palce, daj vedieť.

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

}
[/code]

Edit:
Oprava kódu.

propracovanou knihovnu v C pro ovládání 74HC595 mám :wink:
šlo jen o zbytek…