Ked sa mi este podari rozbehat Servo8Bit.h, tak budem uplne spokojny
Attiny85 a Arduino
- ddano007
- Příspěvky: 2896
- Registrován: čtv 18.03.2010 0:00
- Bydliště: Zavar, SK
- Kontaktovat uživatele:
Re: Attiny85 a Arduino
To Drondys: ako som napisal par poznamok dopredu Attiny85 aj s doskou mam, zbytocne plakat nad rozliatym mliekom, co by bolo lepsie
Ked sa mi este podari rozbehat Servo8Bit.h, tak budem uplne spokojny
Ked sa mi este podari rozbehat Servo8Bit.h, tak budem uplne spokojny
X9D & T16Pro & TX16S & nejaké lietadlá, heli a koptéry www.rcmodelytt.sk
- ross4435897
- Příspěvky: 328
- Registrován: ned 24.10.2010 0:00
- Bydliště: Brno
Re: Attiny85 a Arduino
resil jsem totez asi pred rokem ... a nakonec jsem vysel z tohoto popisu: ATtiny 85 and servo library
Re: Attiny85 a Arduino
Pokud mas vice Tiny85 k dispozici (pro jistotu), tak to lze udelat tak, ze nejdrive zavedes hlavni program do Flash a pak nasledne prepnes FuseBits tak, aby se PB5 pouzival jako standardni In/Out PIN. Dulezite je si byt jist, ze v kodu nemas chybu a PIN obsluhujes spravne a mas ho i tak v uvodu kodu nakonfigurovany.
p.s. Je zajimave, ze mas PCB desku drive nez vlastni vyvoj firmware. Standardne se to dela opacne.
p.s. Je zajimave, ze mas PCB desku drive nez vlastni vyvoj firmware. Standardne se to dela opacne.
- ddano007
- Příspěvky: 2896
- Registrován: čtv 18.03.2010 0:00
- Bydliště: Zavar, SK
- Kontaktovat uživatele:
Re: Attiny85 a Arduino
Diky za tip, jak odblokovat ten PB5 este popatram, momentalne neviem rozbehat budenie serva
Ja by som tiez mozno robil plosak az potom, ale ked s SMDckami sa bez plosaku blbo robi
Ja by som tiez mozno robil plosak az potom, ale ked s SMDckami sa bez plosaku blbo robi
X9D & T16Pro & TX16S & nejaké lietadlá, heli a koptéry www.rcmodelytt.sk
Re: Attiny85 a Arduino
U 8mi vyvodoveho chipu neni SMD zadny problem. Delam to tak, ze vezmu klasickou DIL8 patici, vytahnu kratke CB dratky a na ty primo napajim SMD chip. Pak tento upraveny obvod lze pouzit primo v kontaktnim poli. Jinak jak se jiz nekdo zminoval, AtTiny2313 je na jednoduche aplikace pouzitelny, jeho nevyhodou je absence AD prevodniku.
- ddano007
- Příspěvky: 2896
- Registrován: čtv 18.03.2010 0:00
- Bydliště: Zavar, SK
- Kontaktovat uživatele:
Re: Attiny85 a Arduino
Diky za tip, ale ked ja kontaktne pole nepouzivam ani na vyvodove suciastky... pajka je pajka a vrabcie hniezdo je vrabcie hniezdo
Inak servo uz beha, Servo8Bit.h nechodilo, musel som pouzit SoftwareServo.h... uz len doriesit ten PB5
Inak servo uz beha, Servo8Bit.h nechodilo, musel som pouzit SoftwareServo.h... uz len doriesit ten PB5
X9D & T16Pro & TX16S & nejaké lietadlá, heli a koptéry www.rcmodelytt.sk
- ross4435897
- Příspěvky: 328
- Registrován: ned 24.10.2010 0:00
- Bydliště: Brno
Re: Attiny85 a Arduino
Jo to funguje celkem spolehlive ...
Re: Attiny85 a Arduino
Koukam konecne nekdo, kdo se nenechava odradit prvotnim neuspechem a nepredelava hnedka celej koncept podle "rad" lidi co pouzivaji radeji neco uplne jineho nez by neco resili.
Protoze slavne arduino nevlastnim .. mam jenom klasickej USB programator, tak ani zadne arduino kody neresim :d
S pinem 5 mam taky problem (mam na hrani atiiny13 coz je v podstate to same s mensi pameti a nakou tou drobnosti)- i pres zablokovani H fuses na FE, mi analog na pinu 5 bohuzel nefunguje ADC0, ostatni funguji.... Jenom jaksi nesel programovat vicero cip a musel jsem ho smaznout fusebitdoctorem .... Docela by se mi to ale hodilo, nebot bych rad udelal vystup pro simulator na zvukovku na vysilacce vrtulniku F45 ...ci jakekoliv jine ...a na to potrebuju 4x analog .. coz bez pinu 5 nepujde ...
Takze servo lze rozjet uplne "suse" (nenasel jsem zadny funkcni servotester v hexakodech na netu, tak sem si udelal vlastni kod v atmelstudiu pomoci spousty a spousty stranek plnych nepresnych az spatnych casti kodu...nektere funkcni
) opakovanim po cca 20ms delkou pulsu od cca 1 do 2 ms ....
#define F_CPU 9600000UL // Define software reference clock for delay duration Must be write before call delay.h
#include <avr/io.h> //Vlož knihovnu vstupů a výstupů (PORT, DDR, PIN)
#include <util/delay.h> //Knihovna čekacích funkcí (delay=čekej [ms])
#include <avr/interrupt.h>
#include <stdbool.h>
int preruseni = 0;
bool sekunda = false;
int _20ms = 0;
int maxpreruseni = 15;
int analogPB4 = 0;
int ReadADC_PB4() //read analog from PB4
{
ADMUX |= (0 << REFS0); // VCC as Reference
ADMUX |= (1 << MUX1) | (0 << MUX0); // ADC2 PB.4
ADCSRA |= (1 << ADEN); // Enable ADC
ADMUX |= (0 << REFS0); // VCC as Reference Tento radek je zbytecny
ADMUX = 2;// ADC2 PB.4 Tento radek je zbytecny
ADCSRA |= (1 << ADSC); // Start Converstion
while((ADCSRA & 0x40) !=0){}; //wait for conv complete
return ADC;
}
ISR(TIM0_OVF_vect) {
//overflow occurs at 1024or8or1/9600000*256=XXXms/XXXHz
_20ms++;
preruseni++;
if (preruseni >= 29512) // prescale timer 1s / 27ms = pri 1024 je to 37, pri 8 je to 3689, pri 1 je to 29512
{
preruseni = 0;
sekunda = true; // set flag sekunda
}
if (_20ms >= 592) // Zhruba 592x preruseni = 20ms
{
_20ms = 0;
PORTB = 0b000000;
}
analogPB4 = ReadADC_PB4();
maxpreruseni = (analogPB4/16) + 20; // tady potreba doladit jeste cisla 16 a 20 pro plny rozsah potenciometru
if (_20ms < maxpreruseni) {
PORTB = 0b000111; // All PB0, PB1, PB2 same output - for eperiments... need only 1 for servo..
} else {
PORTB = 0b000000;
}
sekunda = false; // reset flag
}
int main(void) {
cli();
DDRB = 0b000111; //set port B pins 0,1,2 as output
PORTB = 0;
TCCR0B |= (1<<CS00); //prescale timer to 1
TIMSK0 |= (1<<TOIE0); //enable timer overflow interrupt
sei();
while(1);
}
Pojistky Low 7A High FF ... zapojeni, hexa,... dodam na prani
Uz to funguje - chyba byla prave v te funkci cteni ADC kterou jsem spatne pochopil a tim padem spatne upravil pro PB5 (nahodou to totiz vychazi na PB3 pri pouziti ADMUX = PINB3; onech binarnich 1 1 coz je presne ten prepinac MUX 1 a 0 ktery potrebujeme
)
Bez http://pe0fko.nl/Fuse-restore/ tohoto, nebo jineho fusebit restorera, ale rozhodne zablokovat reset nedoporucuju. Jinak postup nahrat program a pote pojistky s tim ze blokovani resetu udelame na konec funguje spolehlive...
Ten fusebit doctor z odkazu mi fungoval na prvni zapojeni ... stavba bezproblemu (bohuzel delane na uni DPS ...)
Protoze slavne arduino nevlastnim .. mam jenom klasickej USB programator, tak ani zadne arduino kody neresim :d
S pinem 5 mam taky problem (mam na hrani atiiny13 coz je v podstate to same s mensi pameti a nakou tou drobnosti)- i pres zablokovani H fuses na FE, mi analog na pinu 5 bohuzel nefunguje ADC0, ostatni funguji.... Jenom jaksi nesel programovat vicero cip a musel jsem ho smaznout fusebitdoctorem .... Docela by se mi to ale hodilo, nebot bych rad udelal vystup pro simulator na zvukovku na vysilacce vrtulniku F45 ...ci jakekoliv jine ...a na to potrebuju 4x analog .. coz bez pinu 5 nepujde ...
Takze servo lze rozjet uplne "suse" (nenasel jsem zadny funkcni servotester v hexakodech na netu, tak sem si udelal vlastni kod v atmelstudiu pomoci spousty a spousty stranek plnych nepresnych az spatnych casti kodu...nektere funkcni
#define F_CPU 9600000UL // Define software reference clock for delay duration Must be write before call delay.h
#include <avr/io.h> //Vlož knihovnu vstupů a výstupů (PORT, DDR, PIN)
#include <util/delay.h> //Knihovna čekacích funkcí (delay=čekej [ms])
#include <avr/interrupt.h>
#include <stdbool.h>
int preruseni = 0;
bool sekunda = false;
int _20ms = 0;
int maxpreruseni = 15;
int analogPB4 = 0;
int ReadADC_PB4() //read analog from PB4
{
ADMUX |= (0 << REFS0); // VCC as Reference
ADMUX |= (1 << MUX1) | (0 << MUX0); // ADC2 PB.4
ADCSRA |= (1 << ADEN); // Enable ADC
ADMUX |= (0 << REFS0); // VCC as Reference Tento radek je zbytecny
ADMUX = 2;// ADC2 PB.4 Tento radek je zbytecny
ADCSRA |= (1 << ADSC); // Start Converstion
while((ADCSRA & 0x40) !=0){}; //wait for conv complete
return ADC;
}
ISR(TIM0_OVF_vect) {
//overflow occurs at 1024or8or1/9600000*256=XXXms/XXXHz
_20ms++;
preruseni++;
if (preruseni >= 29512) // prescale timer 1s / 27ms = pri 1024 je to 37, pri 8 je to 3689, pri 1 je to 29512
{
preruseni = 0;
sekunda = true; // set flag sekunda
}
if (_20ms >= 592) // Zhruba 592x preruseni = 20ms
{
_20ms = 0;
PORTB = 0b000000;
}
analogPB4 = ReadADC_PB4();
maxpreruseni = (analogPB4/16) + 20; // tady potreba doladit jeste cisla 16 a 20 pro plny rozsah potenciometru
if (_20ms < maxpreruseni) {
PORTB = 0b000111; // All PB0, PB1, PB2 same output - for eperiments... need only 1 for servo..
} else {
PORTB = 0b000000;
}
sekunda = false; // reset flag
}
int main(void) {
cli();
DDRB = 0b000111; //set port B pins 0,1,2 as output
PORTB = 0;
TCCR0B |= (1<<CS00); //prescale timer to 1
TIMSK0 |= (1<<TOIE0); //enable timer overflow interrupt
sei();
while(1);
}
Pojistky Low 7A High FF ... zapojeni, hexa,... dodam na prani
Uz to funguje - chyba byla prave v te funkci cteni ADC kterou jsem spatne pochopil a tim padem spatne upravil pro PB5 (nahodou to totiz vychazi na PB3 pri pouziti ADMUX = PINB3; onech binarnich 1 1 coz je presne ten prepinac MUX 1 a 0 ktery potrebujeme
Bez http://pe0fko.nl/Fuse-restore/ tohoto, nebo jineho fusebit restorera, ale rozhodne zablokovat reset nedoporucuju. Jinak postup nahrat program a pote pojistky s tim ze blokovani resetu udelame na konec funguje spolehlive...
Ten fusebit doctor z odkazu mi fungoval na prvni zapojeni ... stavba bezproblemu (bohuzel delane na uni DPS ...)
- ddano007
- Příspěvky: 2896
- Registrován: čtv 18.03.2010 0:00
- Bydliště: Zavar, SK
- Kontaktovat uživatele:
Re: Attiny85 a Arduino
To srabsrab: Diky moc za kod, ale SoftwareServo.h chodi celkom spolahlivo. Ked sa s tym budem zase hrat oprobujem, uvidime, ci to pojde skompilovat aj v Arduino IDE.
Inak ten PB5 rozchodit nebol zase taky problem, kedze mam Aduino Nano, tak SW pre ISP programator je priamo v IDE, no a HV fuse reset je tiez pohoda:
http://www.rickety.us/2010/03/arduino-a ... rogrammer/
To ross4435897: vdaka za ten fuse calc.
Inak to, co pacham je 5-kanalovy spinac osvetlenia a ovladac gyra. Dovod je, ze so 4-kanalovym prijimacom potrebujem ovladat Su27 ( delta), toz tri kanaly potrebujem na ovladanie modelu a jeden mi zostava na ostatne srandicky. Tak tym ovladam gyro ( 3 polohovy servo vystup 1-1.5 - 2 ms), pristavacie reflektory, pozicne svetla+blikacku a jas trysiek proporcionalne k polohe plynoveho knipla.
Este treba trochu doladit tie trysky, ale syn mi uz napisal nejaku kniznicu, tak uvidme.
Vyzera to nejako takto:
[youtube]http://www.youtube.com/watch?v=owEthUEGdO8[/youtube]
okolo 2:10 je trocha vidiet vsetko v akcii. Sorry za kvalitu, ale je to tocene vecer klucenkou na capici...
Inak ten PB5 rozchodit nebol zase taky problem, kedze mam Aduino Nano, tak SW pre ISP programator je priamo v IDE, no a HV fuse reset je tiez pohoda:
http://www.rickety.us/2010/03/arduino-a ... rogrammer/
To ross4435897: vdaka za ten fuse calc.
Inak to, co pacham je 5-kanalovy spinac osvetlenia a ovladac gyra. Dovod je, ze so 4-kanalovym prijimacom potrebujem ovladat Su27 ( delta), toz tri kanaly potrebujem na ovladanie modelu a jeden mi zostava na ostatne srandicky. Tak tym ovladam gyro ( 3 polohovy servo vystup 1-1.5 - 2 ms), pristavacie reflektory, pozicne svetla+blikacku a jas trysiek proporcionalne k polohe plynoveho knipla.
Este treba trochu doladit tie trysky, ale syn mi uz napisal nejaku kniznicu, tak uvidme.
Vyzera to nejako takto:
[youtube]http://www.youtube.com/watch?v=owEthUEGdO8[/youtube]
okolo 2:10 je trocha vidiet vsetko v akcii. Sorry za kvalitu, ale je to tocene vecer klucenkou na capici...
Naposledy upravil(a) ddano007 dne stř 05.02.2014 23:09, celkem upraveno 1 x.
X9D & T16Pro & TX16S & nejaké lietadlá, heli a koptéry www.rcmodelytt.sk
- ross4435897
- Příspěvky: 328
- Registrován: ned 24.10.2010 0:00
- Bydliště: Brno
Re: Attiny85 a Arduino
Vypada to fakt dobre! Celkem dobry projekt za par kacek ...
Jinak co je dobre vedet ... je ze se tu seslo pomerne dost inteligentnich odpovedi na i ponekud odlisne tema ... a forum ma stale svoji uroven, coz je parada.
Jinak co je dobre vedet ... je ze se tu seslo pomerne dost inteligentnich odpovedi na i ponekud odlisne tema ... a forum ma stale svoji uroven, coz je parada.
Re: Attiny85 a Arduino
Tak jeste udelat test s namontovanou zneti dratu primo s pripojenim k potenciometrum vysilacky a zda PPjoy rozpozna spravne signal (zda to neovlivni normalni provoz vysilacky a milion dalsich veci...) a uvidime 
jinak jeste pokud to nekoho zajima, funkce ktera vraci libovolnou hodnotu ADC ... lze vyuzit vsechny 4 ADCcka
int ReadADCx(int x)
{
int result = 0;
ADMUX |= (0 << REFS0); // VCC as Reference
switch(x) { // nejspis se da cely switch nahradit ADMUX = x;
case 0:
ADMUX |= (0 << MUX1) | (0 << MUX0); // ADC0 PB5
break;
case 1:
ADMUX |= (0 << MUX1) | (1 << MUX0); // ADC1 PB2
break;
case 2:
ADMUX |= (1 << MUX1) | (0 << MUX0); // ADC2 PB4
break;
case 3:
ADMUX |= (1 << MUX1) | (1 << MUX0); // ADC3 PB3
break;
}
ADCSRA |= (1 << ADEN); // Enable ADC
ADCSRA |= (1 << ADSC); // Start Conversion
while((ADCSRA & 0x40) !=0){}; //wait for conv complete
result = ADC;
// Without only 1 of 4 ADCx usable!
ADMUX = 0; // asi to nejni nutne nutno vyzkouset
ADCSRA &= ~(1 << ADEN); // Disable ADC
ADCSRA &= ~(1 << ADSC); // Stop Conversion
//
return result;
}
jinak jeste pokud to nekoho zajima, funkce ktera vraci libovolnou hodnotu ADC ... lze vyuzit vsechny 4 ADCcka
int ReadADCx(int x)
{
int result = 0;
ADMUX |= (0 << REFS0); // VCC as Reference
switch(x) { // nejspis se da cely switch nahradit ADMUX = x;
case 0:
ADMUX |= (0 << MUX1) | (0 << MUX0); // ADC0 PB5
break;
case 1:
ADMUX |= (0 << MUX1) | (1 << MUX0); // ADC1 PB2
break;
case 2:
ADMUX |= (1 << MUX1) | (0 << MUX0); // ADC2 PB4
break;
case 3:
ADMUX |= (1 << MUX1) | (1 << MUX0); // ADC3 PB3
break;
}
ADCSRA |= (1 << ADEN); // Enable ADC
ADCSRA |= (1 << ADSC); // Start Conversion
while((ADCSRA & 0x40) !=0){}; //wait for conv complete
result = ADC;
// Without only 1 of 4 ADCx usable!
ADMUX = 0; // asi to nejni nutne nutno vyzkouset
ADCSRA &= ~(1 << ADEN); // Disable ADC
ADCSRA &= ~(1 << ADSC); // Stop Conversion
//
return result;
}
- ddano007
- Příspěvky: 2896
- Registrován: čtv 18.03.2010 0:00
- Bydliště: Zavar, SK
- Kontaktovat uživatele:
Re: Attiny85 a Arduino
Takze viac-menej hotovo, drobny jitter pri dekodovani PPM ( PulseIn asi ma iste rezervy), ale inak pouzitelne. Keby... keby nebolo drobnej teplotnej zavislosti. Toz, neriesili ste niekto teplotnu zavislost jednocipakov? Ked to vonku zapnem ( ked je okolo nuly), tak musim dotrimovavat mixy oproti nastaveniu v kuchyni
Ono to uhyba - per brucho - nejakych 1 - 2%, ale vzhladom na to, ze LSB kanal ( proporcionalne ovladanie jasu trysiek) vyuziva 4% rozsahu, tak to trochu vadi...
Co som pozeral do datasheetu, tak Attniny85 ma jeden kanal ( ADC4) s teplotnym cidlom. Dajte nejaku radu, ak s tym softwarovo pohnut ( krystal tam prirabat nebudem).
Diky.
P.S. Ono som uz aj uvazoval spachat to cele s Arduino Mini Pro
http://www.ebay.com/itm/New-Pro-Mini-at ... 1e76aae237
stoji to par korun, staci dobastlit tranzistory, neporovnatelne vyssi komfort oproti Attiny85, ale ked som jukol do schemy, tak to tusim ma len keramicky rezonator a nie krystal
P.S.2: Nejako takto to vyzera vo finale ( treba preskocit aspon 1.5 minuty, fotaku dlhsie trvalo, kym sa naucil zaostrovat
):
[youtube]http://www.youtube.com/watch?v=mPIa2tmQyP4[/youtube]
Ono to uhyba - per brucho - nejakych 1 - 2%, ale vzhladom na to, ze LSB kanal ( proporcionalne ovladanie jasu trysiek) vyuziva 4% rozsahu, tak to trochu vadi...
Co som pozeral do datasheetu, tak Attniny85 ma jeden kanal ( ADC4) s teplotnym cidlom. Dajte nejaku radu, ak s tym softwarovo pohnut ( krystal tam prirabat nebudem).
Diky.
P.S. Ono som uz aj uvazoval spachat to cele s Arduino Mini Pro
http://www.ebay.com/itm/New-Pro-Mini-at ... 1e76aae237
stoji to par korun, staci dobastlit tranzistory, neporovnatelne vyssi komfort oproti Attiny85, ale ked som jukol do schemy, tak to tusim ma len keramicky rezonator a nie krystal
P.S.2: Nejako takto to vyzera vo finale ( treba preskocit aspon 1.5 minuty, fotaku dlhsie trvalo, kym sa naucil zaostrovat
[youtube]http://www.youtube.com/watch?v=mPIa2tmQyP4[/youtube]
X9D & T16Pro & TX16S & nejaké lietadlá, heli a koptéry www.rcmodelytt.sk