Pages: [1] 2 3 4   Go Down
Author Topic: ATtiny 13 Core disponibile !!!  (Read 2722 times)
0 Members and 1 Guest are viewing this topic.
Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5480
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ragazzi, più volte sono inciampato sugli Attiny 13 costano poco, possono fare poco e sono ottimi per applicazioni ultra low cost senza troppo grattacapi il problema è il come programmarli senza passare per AVR studio o GCC, spero con la mia scoperta di aver risolto in parte il problema, ho trovato un core compatibile con l'IDE di arduino per programmarli, ne ho ordinati un paio e non appena mi arrivano faccio delle prove, nel frattempo se qualcuno li ha (Pelletta se non ricordo male) potrebbe fare delle prove smiley
spero di non aver scoperto l'acqua calda con questa cosa.. ecco il link utili:
http://sourceforge.net/projects/ard-core13/

http://www.instructables.com/id/Installing-Attiny13-core-files/
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Marche
Offline Offline
Edison Member
*
Karma: 32
Posts: 2263
azioni semplici per risultati complessi
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Io ho gli ATtiny13A pure in package smd, la brutta notizia è che seguendo una discussione nel forum internazionale durante le prove ho messo i fuse sbagliati e ora devo risuscitarli con l'avr dragon. Fortunatamente non li ho schiacciati sulla morsa ma li ho conservati  smiley
Ora sono un pò impegnato dietro a un progettino ma appena mi libero faccio un pò di test.
Logged

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5480
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Arriveranno giusti dopo la fine dei miei esami quindi proverò anche io, pensavo foste ancora senza un core adeguato  smiley-small
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21657
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma un Attiny25? E' meglio dell'Attiny13, sia per Flash che per Ram. In più basta il core Tiny per programmarlo.
Logged


Marche
Offline Offline
Edison Member
*
Karma: 32
Posts: 2263
azioni semplici per risultati complessi
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quello che stanno sviluppando gli amici oltreoceano aveva (ha?) dei problemi, ricordo ad esempio che la funzione delay era del tutto imprecisa (ad esempio se mettevo delay(1000) il codice si bloccava per oltre mezzo minuto). Quando seguivo la discussione uscivano board ogni giorno e ho potuto provare fino a quando non ho incasinato i fuse per vedere se riuscivo a impostare il giusto clock. Non so se lo hanno sistemato, non ho più provato.
Ratto se ti può tornare utile metto il link al topic: http://arduino.cc/forum/index.php/topic,89781.0.html
Logged

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5480
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Perfetto allora ne riparliamo all'arrivo dei micro  smiley-wink
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Marche
Offline Offline
Edison Member
*
Karma: 32
Posts: 2263
azioni semplici per risultati complessi
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ratto sono arrivati gli attiny13?
Io ho iniziato  smiley
Intanto ho ripristinato i fuse e sto testando un pò il micro.

Come si vede c'è l'attiny13a sulla breadboard montato su quella specie di adattatore mentre a sx c'è l'avr dragon che sta in attesa di ripristinare il micro in caso di fuse sbagliati  smiley-red
Dalle ultime prove che ho fatto funziona tutto, c'è solo un piccolo problema con la funzione delay: se imposto delay(10000) non ho 10 secondi ma 14.
Ho verificato questa cosa a 9.6 MHz, 1.2MHz e 128 KHz (in pratica lo fa sempre).
Questo è il file wiring.c del core, credo il problema possa essere risolto qua dentro ma lo ammetto senza problemi... non so dove mettere le mani  smiley
Sapete dove si può intervenire per poter correggere questa cosa?
Code:
/*
*** Core13 ***
Arduino core designed for Attiny13 and similar devices.
NO WARRANTEE OR GUARANTEES!
Written by John "smeezekitty"
You are free to use, redistribute and modify at will EXCEPT IF MARKED OTHERWISE IN A PARTICULAR SOURCE FILE!
Version 0.14
*/

#include "wiring_private.h"
#include <avr/interrupt.h>
volatile unsigned long ovrf=0;
ISR(TIM0_OVF_vect){
ovrf++; //Increment counter every 256 clock cycles
// PORTB = 0x18;
}
unsigned long millis(){
unsigned long x;
asm("cli");
/*Scale number of timer overflows to milliseconds*/
#if F_CPU == 128000
x = ovrf * 2;
    #elif F_CPU == 600000
x = ovrf / 2;
#elif F_CPU == 1000000
x = ovrf / 4;
#elif F_CPU == 1200000
x = ovrf / 5;
#elif F_CPU == 4000000
x = ovrf / 16;
#elif F_CPU == 4800000
x = ovrf / 19;
#elif F_CPU == 8000000
x = ovrf / 31;
#elif F_CPU == 9600000
x = ovrf / 37;
    #elif F_CPU == 10000000
x = ovrf / 39;
#elif F_CPU == 12000000
x = ovrf / 47;
#elif F_CPU == 16000000
x = ovrf / 63;
#else
#error This CPU frequency is not defined
#endif
asm("sei");
return x;
}
unsigned long micros(){
return millis() * 1000; //To keep it simple and small :) //I will correctly implement this one of these days.......
}
void delay(unsigned ms){
while(ms--){
_delay_ms(1); //Using the libc routine over and over is non-optimal but it works and is close enough
}
//Note, I may have to reimplement this because the avr-libc delay is too slow *todo*
}
void delayMicroseconds(unsigned us){
//*todo* measure actual speed at different clock speeds and try to adjust for closer delays
if(us == 0){return;}
#if F_CPU == 16000000 || F_CPU == 12000000
if(--us == 0){return;}
us <<= 2;
us -= 2; //Underflow possible?
#elif F_CPU == 8000000 || F_CPU == 9600000 || F_CPU == 10000000
if(--us == 0){return;}
if(--us == 0){return;}
us <<= 1;
us--; //underflow possible?
#elif F_CPU == 4000000 || F_CPU == 4800000
if(--us == 0){return;}
if(--us == 0){return;}
//For 4MHz, 4 cycles take a uS. This is good for minimal overhead
#elif F_CPU == 1000000 || F_CPU == 1200000//For slow clocks, us delay is marginal.
if(--us == 0){return;}
if(--us == 0){return;}
us >>= 2;
us--; //Underflow?
#elif F_CPU == 600000
if(--us == 0){return;}
if(--us == 0){return;}
us >>= 3;
#elif F_CPU == 128000
if(--us == 0){return;}
if(--us == 0){return;}
us >>= 5;
#else
#error Invalid F_CPU value
#endif
asm __volatile__("1: sbiw %0,1\n\t"
"brne 1b" : "=w" (us) : "0" (us));
}
void init(){
//Setup timer interrupt and PWM pins
TCCR0B |= _BV(CS00);
TCCR0A |= _BV(WGM00)|_BV(WGM01);
TIMSK0 |= 2;
TCNT0=0; //Causes malfunction?
sei();
//Set up ADC clock depending on F_CPU
#if F_CPU == 128000
ADCSRA |= _BV(ADEN);
#elif F_CPU == 1000000 || F_CPU == 1200000 || F_CPU == 600000
ADCSRA |= _BV(ADEN) | _BV(ADPS1);
#else
ADCSRA |= _BV(ADEN) | _BV(ADPS1) | _BV(ADPS0) | _BV(ADPS2);
#endif
}
   
Logged

Offline Offline
Edison Member
*
Karma: 24
Posts: 2032
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Credo che l'unico che possa aiutarti è leo,è lui l'esperto di timer e schedulazione  smiley-grin
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Taranto, Puglia
Offline Offline
God Member
*****
Karma: 1
Posts: 758
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Credo che l'unico che possa aiutarti è leo,è lui l'esperto di timer e schedulazione  smiley-grin
solo? è uno dei piu esperti programmatori italiani  smiley-wink smiley-wink
Logged


Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5480
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve, ritorno ora dall'orale, che penitenza, 4 ore fuori ad aspettare ed 1 e mezza dentro a sfamare i prof affamati di sapere  smiley-cool
No non mi sono ancora arrivati smiley-cry
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Offline Offline
Edison Member
*
Karma: 24
Posts: 2032
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve, ritorno ora dall'orale, che penitenza, 4 ore fuori ad aspettare ed 1 e mezza dentro a sfamare i prof affamati di sapere  smiley-cool
No non mi sono ancora arrivati smiley-cry
Auguri smiley-grin sai già qualcosa sul voto?sono rimasti contenti i prof del progetto?
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Italy
Offline Offline
Full Member
***
Karma: 6
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Leggendo il codice ( e i commentin dell'autore) forse il problema è proprio la funzione delay!
Code:
void delay(unsigned ms){
while(ms--){
_delay_ms(1); //Using the libc routine over and over is non-optimal but it works and is close enough
}
//Note, I may have to reimplement this because the avr-libc delay is too slow *todo*
}

Lui stesso dice che
Quote
//Using the libc routine over and over is non-optimal but it works and is close enough
  hai la possibiltá di vedere come è implementata la funzione in altri core?
N.
Logged

"The question is not whether intelligent machines can have emotions, but whether machines can be intelligent without any emotions"

Taranto, Puglia
Offline Offline
God Member
*****
Karma: 1
Posts: 758
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve, ritorno ora dall'orale, che penitenza, 4 ore fuori ad aspettare ed 1 e mezza dentro a sfamare i prof affamati di sapere  smiley-cool
No non mi sono ancora arrivati smiley-cry
giustooo gli orali  smiley-twist beh ora sei piu libero  smiley-wink
Logged


Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5480
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve, ritorno ora dall'orale, che penitenza, 4 ore fuori ad aspettare ed 1 e mezza dentro a sfamare i prof affamati di sapere  smiley-cool
No non mi sono ancora arrivati smiley-cry
Auguri smiley-grin sai già qualcosa sul voto?sono rimasti contenti i prof del progetto?
Del voto ho qualche sentore, le prove sono andate ben diversamente da quello ce speravo  smiley-cry
I prof boh, speravo di sbalordirli ma se portavo il brat forse era meglio....
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21657
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Credo che l'unico che possa aiutarti è leo,è lui l'esperto di timer e schedulazione  smiley-grin
Non esageriamo, ho solo studiato i datasheet.

Dalle ultime prove che ho fatto funziona tutto, c'è solo un piccolo problema con la funzione delay: se imposto delay(10000) non ho 10 secondi ma 14.
Ho verificato questa cosa a 9.6 MHz, 1.2MHz e 128 KHz (in pratica lo fa sempre).
Potrebbe essere normale, ossia gli oscillatori interni hanno imprecisioni anche del +-10/20% rispetto al valore nominale. Cioè se metti l'oscillatore a 1 MHz potresti avere anche un clock di 0,9 MHz. Ecco quindi spiegato perché il tuo delay è più "lungo".

Per riprova dovresti provare con un altro Attiny e vedere se hai lo stesso ritardo o se il delay(10000) viene eseguito con un altro tempo.

Ti porto la mia esperienza: Atmega644, Atmega328, Attiny84 e Attiny85, tutti con il Blink caricato e clock ad 1 MHz interno: dopo 4/5 lampeggi già i led sono fuori sincronizzazione.
Logged


Pages: [1] 2 3 4   Go Up
Jump to: