Go Down

Topic: AtTiny45 (Read 4122 times) previous topic - next topic

nitram0598


Schachmann

Hai,

zumindest der Widerstand ist falsch eingesteckt. So blinkt die LED nicht. Ich habe Dir nochmal ein Bild von meinem (funktionierenden) Aufbau angehängt, da kannst Du selbst nochmal vergleichen.

Gruß,
Ralf

nitram0598

und deine schritte/code?

Schachmann

#18
Oct 08, 2013, 12:05 am Last Edit: Oct 08, 2013, 11:48 am by Schachmann Reason: 1

und deine schritte/code?


Ich weiß jetzt nicht genau, was Du meinst. Das Programm zum Blinken habe ich Dir ja oben angehängt (main.hex). Der Sourcecode davon ist normal in C geschrieben, den kann ich Dir morgen posten, wenn Du magst. Ansonsten ist das mit Notepad++ als Editor eingetippt und dann mit einem Makefile übersetzt und geflasht. Die Kommandozeile zum flashen hab ich Dir ja oben auch schon gepostet.

Falls Du einen anderen Code meinst, bitte nochmal genauer nachfragen.

Hast Du noch das Problem, dass die Signatur Deines Tiny mit 0000 gelesen wird? Hättest Du noch einen fabrikneuen Tiny, an dem noch nichts programmiert wurde? Oder evtl. einen anderen, neuen Atmel Controller? Wenn nämlich Deine Verkabelung so wie bei mir ist, sollte es mit der Kommandozeile von oben gehen. Wenn nicht, wäre es eine Option mal einen anderen Controller zu probieren. Oder aber, wie oben schon geschrieben, mal den Bootloader neu auf Deinen Arduino zu laden. Da hätte ich aber Angst, dass Du plötzlich ohne Arduino da stehst, wenn was nicht klappt.

Gruß,
Ralf

[Edit:] So, hier ist, wie versprochen, noch der C-Sourcecode:

Code: [Select]
#define F_CPU 8000000

#include <avr/io.h>
#include <util/delay.h>

int main(void) {
DDRB |= (1 << PB4);

for(;;) {
PORTB ^= (1 << PB4);
_delay_ms(500);
PORTB &= ~(1 << PB4);
_delay_ms(500);
}

return(0);
}

sven222

Zum Bootloader laden braucht man ja einen zweiten Arduino, oder ein Programmiergerät, aber die Gefahr den zweiten zu zerstören ist da. Ich habe mir sicherheitshalber auch erst zwei ATMegas gekauft, mit Bootloader, bevor ich einen davon versucht habe selbst bei einem den Booloader zu laden. Wegen Deinem Code, sollte dort anstatt:

Code: [Select]
#define F_CPU 8000000

nicht

Code: [Select]
#define F_CPU 1000000

stehen? Klar, download wird trotzdem funktionieren, aber etwas langsam blinken, oder? Ich verstehe nicht Arduino Code nicht wirklich, deshalb die Frage. 
Und noch eine Frage an den Ursprungsposter, hast Du mal versucht die Signatur mit dem hier benannten Kommandozeilen Befehl auszulesen? Hast du eventuell einen anderen ATTiny da. Ist der ATTiny neu?

Grüße,

Sven

Schachmann

@Sven222: Mit F_CPU wird angegeben mit welcher Taktfrequenz der Controller läuft. Wenn Du einen Tiny45 neu kaufst ist er auf den internen Oszillator eingestellt. Das CKDIV8-Fusebit (Divide Clock by 8 internally) ist so eingestellt, dass die Taktfrequenz durch 8 geteilt wird. Dann müsste F_CPU in der Tat auf 1000000 stehen. Jetzt kommt meine Überlegung: Wenn der TO mein main.hex lädt und LED einmal pro Sekunde aus- und wieder angeht, weiß ich sicher, dass schon mal an den Fusebits des Tiny geschraubt worden ist. Wenn aber die LED viel zu langsam blinkt, besteht die Möglichkeit, dass die Fuse-Bits noch im Auslieferungszustand sind.

Bei meinem Testprojekt mit dem Tiny13 hatte ich übrigens die Teilung der Taktfrequenz in den Fusebits ausgeschaltet, so dass der Tiny schön flott läuft und dann stimmt auch die Angabe von F_CPU 8000000.

Gruß,
Ralf

sven222

Danke, dann lag ich also nicht falsch, und verstehe jetzt auch Deinen Gedanken dahinter. Bei meinen Tiny Projekten war das Chipchen schon mit 1MHz nicht wirklch ausgelastet. Brauchte dafür dann aber auch etwas weniger Strom

Grüße,

Sven

Go Up