Moin moin, ich hab leider gerade beim testen eines neuen versuch Aufbaus, zum testen des ISP einen kleinen Fehler gemacht. Ich habe zum testen die V-USB Generic hid Firmware hoch geladen, und damit die Fuses neu gesetzt. und zwar auf: {code] FUSE_L = 0xdf FUSE_H = 0xde [/code] Nach ein bisschen Recherchieren ist mir aufgefallen das ich damit auf externen Kristall umgestellt habe, also hab ich den atmega auf mein anderes board gesteckt (das mit der v-usb Schaltung) und konnte es wieder ansprechen und programmieren. Nach diesem Glücks Erlebnis dachte ich, gut dann setz ich einfach die fuses wieder zurück. kurz google bemüht, nichts gefunden, also in die makefile von v-usb geguckt und versucht den fuses teil zu verstehen. Laut comment in der Makefile, ist der letzte teil von FUSE_L (f) für die MHZ des Kristalls zuständig, den hab ich jetzt (dummerweise) mal auf 0 gesetzt (also 0xd0). Jetzt komme ich (vermutlich logischerweise) mit keinem der beiden boards an den atmega ran. Besteht die Möglichkeit das noch irgendwie rückgängig zu machen? Ich hoffe jemand kann mir helfen, und ich muss nicht los ziehen mir einen neuen atmega holen... Gruß, Kubax
Dort ist auch der Link zum Fuserechner. Schau mal nach was die jetzige Einstellung bedeutet, wie die Werkseinstellung wäre und lies im Artikel, ob bei der jetzigen Einstellung Rettuung wie möglich ist.
Ich studiere grad fleißig, danke für den Tipp, ich teste grad eine Anleitung die ich gefunden hatte, aber mit dem weiteren Hintergrund wissen von hier, komm hab ich große Hoffnung ihn wieder ans laufen zu kriegen.. ist mein letzter atmega den ich zur Verfügung hab.. ansonsten hab ich jetz nur noch den attiny2313 den ich hoffe für diesen Zweck nutzen zu können... Danke schon mal, ich melde mich wenn es funktioniert hat. :)
Behandele den Attiny2313 gut, eventuell kannst du den mit entsprechendem Programm benutzen, um den Rettungstakt am Atmega168 anzulegen.
Genau das war was ich versucht hatte. leider ohne erfolg. Scheint so, als ob ich mich doch nach einem neuen umsehen müsste.. :/
So wie es assieht will der Mega einen externen Takt. Notfalls mit nem einfachen NE555 in Datenblattbeschaltung erzeugen. Normalerweise muss das gehen, ist am Takteingang eventuell eine Beschaltung die den Eingang runterzieht, so das der Mega nix bekommt von der einspeisung? Das gleiche ist mir mal vor längerer Zeit mit nem Mega8 passiert, natürlich Wochenende und keinen zweiten Chip mehr da. Habe mir dann mit der besagten NE55 Schaltung beholfen. :-) Seit diesem Vorfall habe ich Ponyprog auf den Müllhaufen der Geschichte geworfen (da gehörte es schon damals lange hin) und mir nen "richtigen" Programmer (MKII) gekauft. Das AVR Dragon ist eine gute investition wenn du nen guten Progger suchst, der kann auch HV-Proggen, somit ist das mit den Fuses wenn man die mal zerschossen hat kein Problem mehr. Soooo teuer ist der auch nicht mehr. Grüße Rolle
Danke für den Tipp, leider hab ich auch keinen NE555 hier.. Mein Elektronik "Park" ist eh generell recht klein, da er sich auf 2 Reichelt Bestellungen um insgesamt ca. 100€ beschränkt. Wie oben beschrieben hab ich es auch schon mit dem ATTINY2313 versucht, aber leider ohne Erfolg. Das verwendete Programm ist dieses.
1 | #define F_CPU 1000000UL /* 1 MHz CPU clock */ |
2 | |
3 | #include <avr/io.h> |
4 | |
5 | int main (void) |
6 | {
|
7 | DDRC = _BV (PC0); /* PC0 is digital output */ |
8 | |
9 | while (1) /* loop forever */ |
10 | {
|
11 | /* set PC0 on PORTC (digital high) */
|
12 | PORTC &= ~_BV(PC0); |
13 | |
14 | }
|
15 | |
16 | return (0); |
17 | }
|
Dann hab ich den ATTINY CLKOUT mit dem ATMEGA XAL1 verbunden, bekam aber leider auch keine Verbindung. Ich schätze das es in diesem Fall daran liegt, das ich den ATMEGA mit FUSE_H = 0xD0 versucht hab zu retten, war wohl nicht die intelligenteste Idee die ich hatte.. Mittlerweile hab ich mit für AVR-Dude den Burn-O-Mat runter geladen, und kenn jetzt zumindest die Standard fuse Einstellungen. Als programmer hab ich übrigens einen STK500v2 kompatiblen von Reichelt. Den Diamex-AVR usb. Ich hab auch mal probiert meinen 16Mhz Kristall zwischen XAL1 und XAL2 zu setzten, leider auch ohne sehenswerten Erfolg. Ich hätte noch den 20 MHZ Kristall probieren können, aber hab mir da dann auch wenig Chancen ausgerechnet...
Sorry für den Doppelpost. Besteht evtl. die Möglichkeit mit Hilfe des Arduinos Uno den ich hier rumfliegen hab, Lösung zu erarbeiten?
Warum tooglest du nicht den PC0 und verwendest den als Takt? PORTC ^= _BV(PC0);
Need more Input please ^^ Ich bin mir auch garnicht mal so sicher, ob der ATTINY überhaupt nen PC0 hat, hab schon probiert auf PD2 umzuschreiben, weil das beim ATTINY der CKOUT ist.. scheint aber auch nicht zu helfen...
Dein Rettungsprogramm im Beitrag "Re: [ATMEGA168] ISP - Fuses falsch gesetzt" gibt ein Dauer-LOW auf PORTC.0 aus. Das ist nicht was du willst. Toggeln geht z.B. so (Bitmanipulation) oder wie ...(Gast) geschrieben hat:
1 | #define F_CPU 1000000UL /* 1 MHz CPU clock */ |
2 | #include <avr/io.h> |
3 | |
4 | int main (void) |
5 | {
|
6 | DDRC |= (1<<PC0); |
7 | while(1) |
8 | {
|
9 | PORTC ^= (1<<PC0); |
10 | }
|
11 | return 0; |
12 | }
|
1 MHz und Softwaretoggeln ergibt keinen besonders hohen Takt. Wenn du so den Atmega versorgst, stelle den ISP Programmer auf die niedrigst mögliche ISP-Geschwindigkeit.
Ok, das probiere ich gleich mal aus. Das mit dem ISP Programmer Takt hab ich auch noch nicht so wirklich raus.. Nach ein wenig googeln glaube ich das es im avr-dude über den befehlt -B x geht. leider weiß ich nicht wie der wert dann einzustellen ist. vllt. noch einen kleinen Hint in diese Richtung? :) Sorry für diese geballt Unwissenheit :/
-B ist schon gut. Es fehlt noch eine Zahl dahinter. Welche Zahl? da gibt Lady Ada Tipps: http://www.ladyada.net/make/usbtinyisp/avrdude.html "You can use the -B option to specify the ISP speed. By default the value is 10 which means 100KHz clock, this is good for target clock speeds > 500KHz. If you want the high speed clockrate (400KHz) for target frequencies > 4MHz you can use "-B 1" to speed up programming To calculate the SPI frequency from the delay value, use this formula: SPI clock frequency in KHz = 1000/(1.5+B) where B is the delay value In general, the clock frequency should be at least 4 times larger than the target clock frequency. Try "-B 32" if you're having clocking issues, that should handle even 128khz clocks." Ich würde -B 32 probieren.
BTW. Den Satz "In general, the clock frequency should be at least 4 times larger than the target clock frequency." verstehe ich nicht bzw. halte ihn für falsch. Sinn macht der Satz für mich, wenn man larger durch smaller ersetzt: ISP clock frequency < 1/4 * target clock frequency
Wenn man sich bei dem ganzen Hexzahlen-Fuse-Gefummel gar nicht mehr sicher ist, kann man auch http://www.engbedded.com/fusecalc/ benutzen. mfg mf
Oh man... das ist jetzt nicht wahr... Nach einem weiteren Schub von experimentier- Wahnsinn funktioniert nun wieder alles ordnungsgemäß... Mein Problem war offensichtlich, das ich auf dem ATTINY die CKOUT fuse nicht gesetzt hatte. Nachdem ich das getan hatte, hat mein Aufbau ohne Probleme geklappt, und ich konnte die fuses am atmega wieder zurücksetzten... Danke an alle die mit geholfen haben.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.