Ich fürchte dass ich mich mit meine ATTiny45 in eine Sackgasse geführt habe. Undzwar messe ich über den INT0 (ja ich weiss.... ICP usw.; zu spät, Platinen sind schon gefertigt) Impulslängen. Blöderweise ist der INT0 auch gleichzeitig der SCK für den ISP. Nun möchte ich die Lockbits setzen sodas das Programm nicht ausgelesen werden kann. Zum Setzen der Bits muss ja das ISP eingeschaltet sein. Schreibe ich nun die passenden Lockbits, kann ich aber die Fuse zum Deaktivieren der ISP Schnittstelle nicht ändern da sie ja durch die Lockbits geschützt sind. Ich brauche aber den SCK-Pin von der ISP da dieser, wie gesagt, mein INT0 ist. Andersherum kann ich nicht die ISP Schnittstelle deaktivieren da ich dann nichts mehr an den Lockbits drehen kann. DebugWire kann ich alternativ auch nicht benutzen da das Programm dann, trotz gesetzter Lockbits, trotzdem auslesbar bleibt. Hat jemand eine Idee wie ich meinen INT0 bekomme und trotzdem das Auslesen des Programms verhindern kann? Danke schonmal im Voraus. Gruß, Rush
Gast
#3691402
Hi >Andersherum kann ich nicht die ISP Schnittstelle deaktivieren da ich >dann nichts mehr an den Lockbits drehen kann. Warum musst du die Lockbits setzen und ISP deaktivieren? MfG spess
ISP kannst Du nur mit HV-Programming deaktivieren. Setze Debugwire deaktiviert und die Lockbits. Auf INT0 hat das alles keinen Einfluß.
Ich muss den ISP deaktiveren weil dessen SCK-Pin auch der INT0 ist und ich diesen im Programm verwende. @Peter Meinst also: 1. DebugWire deaktivieren dann 2. Lockbits passend setzen und zum Schluss via HV den SPI deaktiveren Richtig so?
Rush ... schrieb: > Ich muss den ISP deaktiveren weil dessen SCK-Pin auch der INT0 ist und > ich diesen im Programm verwende. Sagt wer? Rush ... schrieb: > zum Schluss via HV den SPI deaktiveren Wozu?
Gast
#3691427
Hi >Ich muss den ISP deaktiveren weil dessen SCK-Pin auch der INT0 ist und >ich diesen im Programm verwende. Na und? ISP ist nur aktiv, wenn das Resetpin Low ist. Und dann gibt es eh keinen INT0. MfG spess
@Peter Sagt das Datenblatt. Ich will das ISP deaktivieren da das Signal was an dem INT0 ankommt Einfluss nimmt. Ist meine Signalquelle an dem INT0/SCK angeschlossen, bekomme ich den Tiny nicht programmiert da am SCK reingefunkt wird. Ziehe ich die Signalquelle ab so lässt sich der uC problemlos programmieren.
Rush ... schrieb: > Ich muss den ISP deaktiveren weil dessen SCK-Pin auch der INT0 ist und > ich diesen im Programm verwende. > > @Peter > Meinst also: > 1. DebugWire deaktivieren > dann 2. Lockbits passend setzen und > zum Schluss via HV den SPI deaktiveren > > Richtig so? Eigentlich müsste es auch über ISP, als letzte Aktion, klappen ISP zu deaktivieren. Da gibt es zwar eine Fehlermeldung, aber danach kommst du nicht mehr über ISP rein.
Gast
#3691488
> Ich will das ISP deaktivieren da das Signal was an dem INT0 ankommt > Einfluss nimmt. Worauf? Und wer genau? > Ist meine Signalquelle an dem INT0/SCK angeschlossen, > bekomme ich den Tiny nicht programmiert da am SCK reingefunkt wird. Dann hast Du das Datenplatt und die diversen AppNotes, z.B. die 042, nicht beachtet. > Ziehe ich die Signalquelle ab so lässt sich der uC problemlos > programmieren. Sehr schön, Du kannst den µC also Programmieren. Und was genau hat das jetzt mit INT0 zur Laufzeit zu tun? Nimms uns nicht krumm, aber das was Du schreibst, lässt nicht gerade drauf schließen, dass Du die Funktionsweise des µC im Allgemeinen und des ISP im Speziellen hinreichend verstanden hast.
Gast
#3691489
>Eigentlich müsste es auch über ISP, als letzte Aktion, klappen ISP zu >deaktivieren. Nein, das geht nicht. Schau ins Datenblatt.
Gast
#3691494
Deaktiviere einfach den Resetpin, dann keiner mehr ISP benutzen.
holger schrieb: >>Eigentlich müsste es auch über ISP, als letzte Aktion, klappen ISP zu >>deaktivieren. > > Nein, das geht nicht. Schau ins Datenblatt. Dann war es sicher nur ein Zufall, dass das bei mir schon mindestens zweimal geklappt hat.
Also nochmal: am INT0 hängt ein Servoausgang eines RC-Empfängers dran. Und über INT0 messen ich die High-Periode des Empfängerkanals. INT0 und der ISP-SCK ist der Selbe Pin. Und doch ich verstehe den uC im Allgemeinen. Ich verstehe nur nicht warum ihr nicht versteht dass Signal an INT0 (das was ich in der Software auswerte) für den ISP ein Fremdsignal ist und der ISP somit "verwirrt" ist und mein Programm scheinbar nicht das macht was es soll. Peter du meintest ich soll das Debugwire ausschalten und die Lockbits setzen und gut ist. Genau das habe ich ja auch getan und gesehen, dass es eben nicht so funzt wie erwartet. Deswegen schreibe ich ja diesen Beitrag.
Gast
#3691514
>>>Eigentlich müsste es auch über ISP, als letzte Aktion, klappen ISP zu >>>deaktivieren. >> >> Nein, das geht nicht. Schau ins Datenblatt. > >Dann war es sicher nur ein Zufall, dass das bei mir schon mindestens >zweimal geklappt hat. Vieleicht hast du dir die Reset Fuse weggeblasen. So geht das natürlich auch. Laut Datenblatt kann man im ISP Mode die SPIEN Fuse nicht ändern.
holger schrieb: > > Laut Datenblatt kann man im ISP Mode die SPIEN Fuse > nicht ändern. Ist schon länger her, dass ich das (seinerzeit zuerst versehentlich) ausgeschaltet hatte, daher auch das "Eigentlich" in meinem Text.
Gast
#3691534
> Ich verstehe nur nicht warum ihr nicht versteht dass Signal an INT0 > (das was ich in der Software auswerte) für den ISP ein Fremdsignal > ist und der ISP somit "verwirrt" ist und mein Programm scheinbar nicht ^ > das macht was es soll. Doch, die erste Hälfte davon (bis zum zur Markierung bei 'ISP ist verwirrt') glauben wir Dir. Und das liegt wie schon geschrubt am Nichtbefolgen der AVR042. Macht hier aber nix, weil programmieren kannst Du ja (mit Empfänger abgesteckt). Das danach hat damit aber reingarnix zu tun. Es mag sein, dass Dein Programm nicht das tut, was es soll, das liegt aber nicht am ISP, weil der ist zur Laufzeit gar nicht aktiv.
Ja, so hatte ich mir das auch gedacht. Die AppNote habe ich tatsächlich nicht beachtet :( Ich werde morgen einfach mal eine andere dieser Platinen ausprobieren wobei ich weniger glaube dass es dann funktioniert. Bei 13 Bauteilen ist die Fehlerwahrscheinlichkeit doch ein wenig gering ;-) Danke euch für die Bemühungen und einen schönen Abend.
Gast
#3691562
> Die AppNote habe ich tatsächlich nicht beachtet :(
Ich hoffe ich hab Dich jetzt nicht versehentlich auf den falschen
Dampfer geleitet. Das von Dir gesuchte Problem liegt ∗nicht∗ im ISP
begraben - der ist NUR während des Programmierens aktiv. Mit Problemen
zur Laufzeit hat das nichts zu tun, insbesondere nicht wenn der
Programmieradapter gar nicht angesteckt ist.
Nene, das ist schon vollkommen ok von dir :-) Somit ist diese Fehlerquelle schonmal ausgeschlossen. Nur wirds jetzt noch seltsamer: Ich programmiere den uC auf einer Adapterplatine. Da ist sonst nichts anderes drauf außer dieser selbst. Es hängt also an den ISP-Leitungen also entweder NUR der Programm oder NUR die eigentliche Signalquelle für den INT0. Und den programmiere ich über ISP und löte ihn anschließend in die Schaltung. Es scheint als würde das Programm dann irgendwo hängenbleiben weswegen ich vermutete dass er sich im Programmiermodus befindet und auf Daten vom Programmer wartet. Den letzten Beiträgen zu Folge würde er sich nur im Programmiermodus befinden wenn der Rest-Pin auf GND liegen würde. Tut er aber nicht. Seltsamerweise funzt das identische Programm auf der gleichen Platine (nicht die selbe; habe 10 Stück) problemlos wenn ich es über DebugWire flashe...
Gast
#3691626
Ins Target einlöten ohne Debugschnittstelle ist ein eher hinderlicher Ansatz wenns ums Fehlersuchen geht. Zeig doch mal Schaltplan und Quellcode, vielleicht kann man da ja was erkennen. Wenns nicht anders geht dann bau zumindest einen Sockel in ein Target um Dir das Löten zu ersparen. Ansonsten hilft nur das übliche: Debuggen. Vorzugsweise über einen Debugadapter und im Target. Wenn das nicht geht dann über eine adäquat zurechtgebogene (unidirektionale) Schnittstelle wie tracen über UART. Wenn nicht mal das geht hilft nur noch LED oder ähnliches. Danach wirds dann eng mit den Optionen..
Rush ... schrieb: > Und den programmiere ich über ISP und löte ihn anschließend in die > Schaltung. Rush ... schrieb: > Seltsamerweise funzt das identische Programm auf der gleichen Platine > (nicht die selbe; habe 10 Stück) problemlos wenn ich es über DebugWire > flashe... Irgendwie verstehe ich das nicht. Also grundsätzlich programmierst du den µC extern, aber auf einer der 10 Platinen kannst du ihn mit dW programmieren? Wenn das so ist, dann hast du ja vorher dW eingeschaltet, denn das ist standardmäßig abgeschaltet. Was ist denn mit normalem ISP auf der anderen Platine, geht das denn auch? Und überhaupt, mit dW flashen? Da bist du im Debug Modus und das hat mit dem eigentlichem flashen doch gar nichts zu tun. ???
Ich habe ja eine Zielplatine wo ich die ISP-Leitungen direkt an den Controller gelötet habe, falls noch was an der Firmware verändert werden müsste etc. Die funktioniert ja ohne Probleme. Nur wenn ich eine andere Zielplatine (habe ja mehrere identische davon) nehme, und einen über ISP (auf dem Programmieradapter) geflashten Controller darauf löte, funktioniert er nicht.
Rush ... schrieb: > Ich habe ja eine Zielplatine wo ich die ISP-Leitungen direkt an den > Controller gelötet habe, falls noch was an der Firmware verändert werden > müsste etc. > > Die funktioniert ja ohne Probleme. > > Nur wenn ich eine andere Zielplatine (habe ja mehrere identische davon) > nehme, und einen über ISP (auf dem Programmieradapter) geflashten > Controller darauf löte, funktioniert er nicht. Vielleicht hilft dir das weiter:
1 | |
2 | |
3 | |
4 | |
Da scheint unter Umständen etwas mit deiner Reset Leitung nicht zu stimmen.
Ist denn dein DWEN on?
Schon mal gelesen?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
DebugWire ist ausgeschaltet. Der Rest-Pin liegt mit 10kOhm an VCC. Und VCC ist 5V was auch die einzige vorhandene Spannung ist. Kurzschluss von Reset zu GND habe ich auch ausschließen können.
Rush ... schrieb: > DebugWire ist ausgeschaltet. Der Rest-Pin liegt mit 10kOhm an VCC. > Und VCC ist 5V was auch die einzige vorhandene Spannung ist. > Kurzschluss von Reset zu GND habe ich auch ausschließen können. Dann weiß ich auch nicht weiter.
Ich auch nicht mehr... Aber trotzdem danke.
Gast
#3691822
Du hast immernoch die Option.. > Zeig doch mal Schaltplan und Quellcode, vielleicht kann man da ja was > erkennen. ..von oben.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.