Guten Tag,
ich habe ein sehr schönes simples Projekt gefunden, dass sich
hervorragend als kleines Geschenk umsetzen lässt. Ich würd es jedoch
gerne auf dem ATTiny85 laufen lassen. Es handelt sich um den sogenannten
Auduino. Kann mir jemand dabei helfen, den Code auf den ATTiny zu
portieren?
Es müssen wohl nur die Interrupts gesetzt werden, aber ich hab da nicht
so den Überblick. Der Code sieht wie folgt aus:
kopfkratz
Da muß mehr geändert werden: Init, ISR, Timer PWM usw. usf.
Und wenn man schon dabei ist sollte man die Lookuptables gleich ins
Flash legen ;-)
Hmm wo ist denn eigentlich "analogRead" definiert oder ist das ein
"Sketch" ?
Dann das gesamte Projekt in der Arduino IDE laden und als Sourcecode
exportieren, wenn's Tiny85 Arduinos geben sollte man den angeben :-P
kopfkratzer schrieb:> *kopfkratz*> Da muß mehr geändert werden: Init, ISR, Timer PWM usw. usf.> Und wenn man schon dabei ist sollte man die Lookuptables gleich ins> Flash legen ;-)> Hmm wo ist denn eigentlich "analogRead" definiert oder ist das ein> "Sketch" ?
analogRead ist die Arduino Schereibweise für 'ADC an einem Kanal
auslesen'.
Machbar ist das schon, die Arduino Sachen da rauszuoperieren. So viel
wird davon ja nicht verwendet.
Die Timer Sachen müsste man mit den beiden Datenblättern in der Hand vom
Mega8 zum Tiny45 transferieren - vorausgesetzt dass es dort jeweils
vergleichbare Timer-Funktionalität gibt.
Ist halt Aufwand.
Karl Heinz schrieb:> Die Timer Sachen müsste man mit den beiden Datenblättern in der Hand vom> Mega8 zum Tiny45 transferieren - vorausgesetzt dass es dort jeweils> vergleichbare Timer-Funktionalität gibt.
Schon wieder dieser Scheiß-Mega8. Ja ich weiss, der beliebte Klassiker.
Die Einstellungen für den 328 kann man fast 1:1 für den Tiny45
übernehmen.
1
TCCR2A=_BV(COM2B1)|_BV(WGM20);
2
TCCR2B=_BV(CS20);
3
TIMSK2=_BV(TOIE2);
4
5
TCCR1A=_BV(COM1B1)|_BV(WGM20);
6
TCCR1B=_BV(CS10);
7
TIMSK=_BV(TOIE1);
Dann muß noch das Arduino Portgeraffel umgesetzt werden.
mfg.
Thomas Eckmann schrieb:> Schon wieder dieser Scheiß-Mega8. Ja ich weiss, der beliebte Klassiker.
Ist mir auch immer ein Rätsel wieso der an jeder Ecke verwendet wird.
Aber wahrscheinlich gibts den noch wenn die anderen AVRs schon im Sarg
liegen und sei es als Chinanachbau :)
Shit! Timer 0 natürlich.
Thomas Eckmann schrieb:> Karl Heinz schrieb:>> Die Timer Sachen müsste man mit den beiden Datenblättern in der Hand vom>> Mega8 zum Tiny45 transferieren - vorausgesetzt dass es dort jeweils>> vergleichbare Timer-Funktionalität gibt.>> Schon wieder dieser Scheiß-Mega8. Ja ich weiss, der beliebte Klassiker.>> Die Einstellungen für den 328 kann man fast 1:1 für den Tiny45> übernehmen.>
Hi
>Die Einstellungen für den 328 kann man fast 1:1 für den Tiny45>übernehmen.
Timer1 ist aber beim ATMega328 ein 16-Bit- und beim ATTiny85 ein
8-Bit-Timer. Und der hat auch ein paar Eigenheiten.
MfG Spess
spess53 schrieb:> Hi>>>Die Einstellungen für den 328 kann man fast 1:1 für den Tiny45>>übernehmen.>> Timer1 ist aber beim ATMega328 ein 16-Bit- und beim ATTiny85 ein> 8-Bit-Timer. Und der hat auch ein paar Eigenheiten.>> MfG Spess
Zu spät. Hab ich schon korrigiert. Timer2 vom 328 ist bis auf den
Prescaler identisch mit Timer 0 vom 85. Aber CS20 bzw. CS00 sind beide
ohne Prescaler. Das passt.
mfg.
Hey DANKE!
Hat super funktioniert. Die Arduino-Befehle konnte ich drin lassen, da
ich die Arduino Umgebung zur Programmierung benutze. Was ich noch ändern
musste:
-(nur für den Arduino Code): Ich musste andere Tiny-Core Dateien
benutzen. Die sind hier zu finden: https://github.com/TCWORLD/ATTinyCore
Die Core Dateien von der Arduinoseite benutzen den Timer0 für die
millis() Funktion. Das gab dann Konflikte mit der Interruptroutine.
-Die PWM-Ausgabe scheint nicht mit der uint_16 Variable zu
funktionieren. Wenn ich den Wert kurz vor der Ausgabe in die Variable
value schreibe, geht es.
-Ich musste den Code noch für einen Multiplexer anpassen, damit ich auch
alle 5 Potis auslesen kann.
Funktioniert jetzt aber alles. Ist ein schönes kleines Geschenk, kann ja
der mal selber probieren. Macht Spaß damit zu experimentieren.