Forum: Mikrocontroller und Digitale Elektronik AVROspII: ATTiny2313 zu langsam?


von Ludwig (Gast)


Lesenswert?

Ein ATTiny2313-Programm setzt den Takt auf 4 MHz/64. Mein Problem ist 
nun, dass die AVROspII-Software (AVR910 Hardware)den ATTiny nicht mehr 
erreichen kann, weil dieser vermutlich zu langsam ist.

Einen USBASP/USBISP habe ich mit bereits bestellt. Der kommt aber erst 
zum Wochenende.

Was kann ich bis dahin tun?

von (prx) A. K. (prx)


Lesenswert?

ISP findet bei aktivem Reset statt und da ist nicht wichtig, was das 
Controller-Programm selbst als Prescaler definiert. Die Div8 Fuse 
hingegen ist relevant. Ist die aktiv, darf der ISP-Takt dank 
4MHz/8=500kHz Takt nicht über 125kHz liegen.

Wo kommen die 4MHz her und mit welcher ISP-Frequenz arbeitet der 
Programmer? Bei RC-Oszillator geht nur ein entsprechend langsam 
einstellbarer ISP-Programmer, oder ein HVP-Programmer.

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ludwig schrieb:
> Ein ATTiny2313-Programm setzt den Takt auf 4 MHz/64

Das interessiert den Programmer normalerweise nicht, denn er hält den MC 
ja im Reset, so das die Software keine Chance hat, den Prescaler zu 
aktivieren. Wenns trotzdem nicht geht, könntest du versehentlich eine 
andere Taktquelle gewählt haben (per Fuse).

von Paul B. (paul_baumann)


Lesenswert?

Ludwig schrieb:
> Einen USBASP/USBISP habe ich mit bereits bestellt. Der kommt aber erst
> zum Wochenende.
>
> Was kann ich bis dahin tun?

Auf ihn warten?
nicht hauen
;-)

MfG Paul

von Ludwig (Gast)


Lesenswert?

Ihr habt natürlich recht, das Programm des ATiny startet bei aktivem 
Reset erst gar nicht. Da muss ich wohl einen Fehler gemacht und eine 
falsche Fuse gesetzt/gelöscht haben.

Danke für den Hinweis.

von S. Landolt (Gast)


Lesenswert?

Matthias S. schrieb:
> Ludwig schrieb:
>> Ein ATTiny2313-Programm setzt den Takt auf 4 MHz/64
>
> Das interessiert den Programmer normalerweise nicht...

D.h., Sie können ein Programm laden, in welchem gleich zu Programmanfang 
der 'System Clock Prescaler' auf /256 gesetzt wird, und kommen 
anschließend mit Ihrem Programmer problemlos noch an den uC dran? - Mit 
welchem ISP-Takt läuft das dann?

von Uwe (de0508)


Lesenswert?

Hallo,

ich weise mal auf diesen Thread hin:
Beitrag "Problem: Attiny45 mit 16MHz PLL Takt"
in dem wir Problem CPU-Takt mit gesetztem Prescaler durch das Programm 
betrachtet haben.

Es ist halt beim ATtiny45/tn85 nicht so, dass bei einem Reset der 
CPU-Takt ein gesetzter Prescaler zurückgesetzt wird und der Vorteiler 
über das zugehörige Fusebit verwendet wird.

Darauf bin ich auch per Zufall gestoßen.

A. K. schrieb:
> ISP findet bei aktivem Reset statt und da ist nicht wichtig, was das
> Controller-Programm selbst als Prescaler definiert. Die Div8 Fuse
> hingegen ist relevant. Ist die aktiv, darf der ISP-Takt dank
> 4MHz/8=500kHz Takt nicht über 125kHz liegen.
>
> Wo kommen die 4MHz her und mit welcher ISP-Frequenz arbeitet der
> Programmer? Bei RC-Oszillator geht nur ein entsprechend langsam
> einstellbarer ISP-Programmer, oder ein HVP-Programmer.

Matthias S. schrieb:
> Ludwig schrieb:
>> Ein ATTiny2313-Programm setzt den Takt auf 4 MHz/64
>
> Das interessiert den Programmer normalerweise nicht, denn er hält den MC
> ja im Reset, so das die Software keine Chance hat, den Prescaler zu
> aktivieren. Wenns trotzdem nicht geht, könntest du versehentlich eine
> andere Taktquelle gewählt haben (per Fuse).

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

Ganz recht, Uwe S., den hatte ich gesucht, aber nicht mehr gefunden. 
Danke.

von Ludwig (Gast)


Lesenswert?

Auf einem Galep4 habe ich nur das Programm gelöscht und keine Fuse 
verändert und siehe, der ATiny2313 wird vom AVROspII wieder erkannt.

Hier die Fuses: Ext: 0xFF, High: 0xDF, Low: 0x62

Mit anderen ATTiny2313 zeigt sich das gleiche Verhalten: wird das 
Programm geflasht, hat AVROspII keinen Zugriff mehr, löschen des 
Programms mit dem Galep4 und es geht wieder.

Bin ratlos.

von S. Landolt (Gast)


Lesenswert?

> Bin ratlos.
Warum? Steht doch z.T. hier, vor allem aber auch in dem von Uwe S. 
zitierten Link.

von S. Landolt (Gast)


Lesenswert?

Ich kenne den AVROspII nicht, aber vielleicht hilft es, wenn gleich zu 
Programmbeginn, also noch vor dem Setzen des Vorteilers, eine 
Warteschleife von 1..2 Sekunden eingefügt wird.

von Ludwig (Gast)


Lesenswert?

S. Landolt schrieb:
> Ich kenne den AVROspII nicht, aber vielleicht hilft es, wenn
> gleich zu
> Programmbeginn, also noch vor dem Setzen des Vorteilers, eine
> Warteschleife von 1..2 Sekunden eingefügt wird.

Kann nicht sein, da das Programm nicht startet, die Kommunikation mit 
dem Chip erfolgt während Reset Low ist.

>> Bin ratlos.
> Warum? Steht doch z.T. hier, vor allem aber auch in dem von Uwe S.
> zitierten Link.

Wie erklärt der Link mein Problem?

von S. Landolt (Gast)


Lesenswert?

> Kann nicht sein...
Haben Sie es ausprobiert? Evtl. gibt das Programmiergerät, so wie es im 
Datenblatt steht, einen positiven Impuls auf /RESET.

> Wie erklärt der Link mein Problem?
Es gibt Programmiergeräte, die sich wie Ihres verhalten, also nur noch 
mit sehr langsamem ISP-Takt an den uC kommen. Andere schaffen es 
angeblich, vielleicht meldet sich mal ein Besitzer, um welche es sich 
handelt.

von S. Landolt (Gast)


Lesenswert?

Noch eine letzte Idee: unmittelbar nach Programmstart den Vorteiler auf 
/1 setzen, dann die 2 Sekunden warten, dann /64.

von Uwe (Gast)


Lesenswert?

Hi,
Sollte es nicht gehen wenn man beim einschalten der Betriebssp. den 
Reset schon gesetzt hat? Der µC springt doch meistens gleich an bevor 
auf Prog.
umgeschaltet wird, da wird das Register ja schon gesetzt und Reset 
verändert es nicht mehr. Es sei denn ich irre mich gerade gewaltig.

Viel Erfolg, Uwe

von Ludwig (Gast)


Lesenswert?

Nehme ich diese Zeilen aus meinem Programm, die den Teiler (64) setzen 
heraus, dann funktioniert der Zugriff einwandfrei:

[/C]
    CLKPR = (1 << CLKPCE);
    CLKPR = (1 << CLKPS2) | (1 << CLKPS1);
[C]

Ausschnitt aus dem Programmercode des verwendeten Programmers:
1
        ... 
2
clr_LED       ; LED on
3
catch_ports   ; catch ports
4
clr_SCK       ; clear SCK
5
pas_RESET     ; set RESET passive
6
ldi temp1,50  ; delay 50mS;
7
rcall delay
8
act_RESET     ; set RESET active
9
ldi emp1,50   ; delay 50mS;
10
rcall delay  
11
        ...

Der komplette Code ist hier:

http://www.klaus-leidinger.de/mp/Mikrocontroller/AVR-Prog/avr910_2313_v38b.hex

von M. K. (sylaina)


Lesenswert?

Ludwig schrieb:
> Nehme ich diese Zeilen aus meinem Programm, die den Teiler (64) setzen
> heraus, dann funktioniert der Zugriff einwandfrei:

Das klingt dann doch sehr danach, dass der ISP-Takt nicht passt bzw zu 
schnell ist.

von Ludwig (Gast)


Lesenswert?

Michael K. schrieb:
> Ludwig schrieb:
>> Nehme ich diese Zeilen aus meinem Programm, die den Teiler (64) setzen
>> heraus, dann funktioniert der Zugriff einwandfrei:
>
> Das klingt dann doch sehr danach, dass der ISP-Takt nicht passt bzw zu
> schnell ist.

Nach einem Reset werden alle Register des ATTiny2313 zurückgesetzt. D. 
h. der Teiler auch.

von Ludwig (Gast)


Lesenswert?

Auch wenn ich den den Resetpin - vor dem Einschalten des Programmers - 
auf Low lege, das gleiche Ergebnis: kein Zugriff auf den Chip.

Es reicht, dass diese Zeilen im Code stehen:
1
    CLKPR = (1 << CLKPCE);
2
    CLKPR = (1 << CLKPS2) | (1 << CLKPS1);

von Peter D. (peda)


Lesenswert?

Ist auch meine Erfahrung, die Prescalerbits überstehen einen Sprung in 
den ISP-Mode unverändert.
Ich konnte dann nur noch im HV-Mode (STK500) vernünftig programmieren.

Die Programmer gehen ja auch erstmal in tristate und werden nur bei 
einer Programmieraktion aktiv.
D.h. nach jedem Power-On wird auf alle Fälle erstmal die Applikation 
gestartet.

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

Ludwig schrieb:
> Was kann ich bis dahin tun?

Du könntest die Zeit zum Lesen nutzen, oder dich aktiv in der 
Flüchtlingskriese engagieren. Oder einfach den Tiny der nicht erreichbar 
ist irgendwo unterklemmen wo ein Tisch oder ähnliches wackelt und einen 
neuen nehmen.

von Ludwig (Gast)


Lesenswert?

Thomas H. schrieb:
> Ludwig schrieb:
>> Was kann ich bis dahin tun?
>
> Du könntest die Zeit zum Lesen nutzen, oder dich aktiv in der
> Flüchtlingskriese engagieren. Oder einfach den Tiny der nicht erreichbar
> ist irgendwo unterklemmen wo ein Tisch oder ähnliches wackelt und einen
> neuen nehmen.

Bitte nur sachliche Antworten. Ein Mindestmaß an fachlicher Kompetenz 
ist schon erforderlich. Einfach nur dumm sein reicht hier nicht, Thomas. 
Du musst also draußen bleiben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.