Forum: Mikrocontroller und Digitale Elektronik STK500 (ISP) und ATMEGA8515 Fuses und Timer/Counter


von André D. (dufman)


Angehängte Dateien:

Lesenswert?

Hallo allerseits,

ich habe bereits etwas Erfahrung beim Programmieren von Microcontrollern 
gesammelt (AT90S8515, ATMEGA8515 und ATMEGA8), aber manchmal, wenns 
nicht so läuft wie es soll, wird mir klar, dass mir irgendwo mit meinem 
Wissen Grenzen gesetzt sind.
Daher wende ich mich an Euch......   in der Hoffnnung auf Hilfe..

Ich habe gerade zwei aktuelle Probleme.

Das Schlimmere ist, dass ich nie weiß, was ich bei den Fuses der 
diversen µC's als SUT_CKSEL einstellen soll, damit das Teilchen nicht 
anschließend abgeschossen ist.
Ich habe einen ATMEGA8515 auf einer externen Platine aufgebaut und via 
ISP-Connection mit einem STK500 verbunden....  alles toll soweit..  kann 
das Teil Programmieren...  alles schön...

Nur glaube ich, dass das Teilchen auf nem internen Taktgeber läuft, wird 
auch so angedeutet, wenn ich die Fuses auslese...  (siehe Bild Fuses).
Aber ich habe auf der externen Platine einen 8 MHz Quarz eingelötet, mit 
dem der µC eigentlich laufen soll.
Das funktionierte auch irgendwann mal...   ist lange her und ich bin 
jetzt kürzlich erst wieder in die Programmierung und 
Schaltungsentwicklung eingestiegen...   nur jetzt habe ich nur noch 
Probleme...

Habe die Fuses dann mal geändert und neu programmiert...  zupp...   kein 
Zugriff mehr auf den Controller...  abgeschossen...
Ich weiß nicht mehr, welche Einstellungen von den vielen ich verwendet 
hatte..   egal...  möchte nur noch wissen, welche die Richtigen sind, 
ohne den Controller abzuschießen.... habe dazu hier im Forum auch schon 
was gelesen, aber ich bin mir nicht so sicher....


Das Zweite Problem:
Habe ein kleines Programm geschrieben, bei dem ich mit zwei Schaltern 
(eigentlich sollens später mal Taster werden) eine Programmauswahl 
treffen kann, um gewisse Ausgänge mit verschiedenen Programmen 
anzusteuern.
Das funktioniert alles prima...
Dann wollte ich mich mal wieder an die internen Timer/Counter 
heranwagen...  ja..  wie zu erwarten...   Probleme...

Ich wollte die internen Timer/Counter dazu benutzen, einen BEEP auf 
einen Piezokeramischen Schallwandler zu bringen.
Klappt auch teilweise...   aber ich hatte mir die Timer/Counter 
ausgesucht, weil die ja dafür gut geeignte sind, eine stabile 
Zeitgrundlage/Frequenzgrundlage zu bieten.
Nur ist es bei meinem Programm so, dass der BEEP manchmal so eine halbe 
Sekunde dauert (so wie es sein soll) aber manchmal dafür auch so um die 
drei Sekunden (was nicht sein soll) obwohl das Unterprogramm BEEP() nur 
von einer Stelle aus aufgerufen wird. Da es immer nur von dieser Stelle 
aus aufgerufen wird, und das Unterprogramm komplett ausgeführt werden 
muss, bevor es verlassen wird, frage ich mich, woher die 
unterschiedlichen Zeitdauern der BEEPs herkomen. Ich habe alles so oft 
nachgeschaut...  finde aber keinen Fehler...
Kann eigentlich nur an der Initialisierung der Timer/Counter Register 
liegen, glaube ich..  aber echt..   ich kann den ganzen englischen Sch 
nicht mehr sehen...   vielleicht ist ja auch was falsch in der 
Beschreibung...   oder ich habs falsch interpretiert.
Ich weiß nicht weiter...   Programmcode in C siehe Datei Programm.c



Vielen Dank im Voraus
André

von Bastian W. (jackfrost)


Lesenswert?

Wenn der Atmega in deiner Schaltung gesockelt ist, dann kannst du den 
über HVPP mit dem STK500 retten. Mit der HVPP bzw HVSP kann man auf 
verfuste Atmegas und Attinys zugteifen.

Gruß JackFrost

von chris (Gast)


Lesenswert?

André Derfert (dufman):
> Das Schlimmere ist, dass ich nie weiß, was ich bei den Fuses der
> diversen µC's als SUT_CKSEL einstellen soll, damit das Teilchen nicht
> anschließend abgeschossen ist.

Na ganz einfach, wenn du 8MhzQuarz anliegen hast nimmst du

          ExternCrystal***** müsste dort dann auch stehen...

wichtig ist halt nicht den EXTERNRC*** zu nehmen, sonst musst du nämlich 
externen Takt anlegen zum nutzen wie auch zum proggen.


> Zugriff mehr auf den Controller...  abgeschossen...

Sicher?? nicht nur die ISP-Frequenz zu hoch gewählt?? sollte 1/4 der 
Taktfrequenz sein...

Problem würde ich erst angehen wenn du das erste gelöst und du musst 
nicht jedes mal die Fuses einstellen. Das wird einmal beim Fabrikneuen 
gemacht auf extern Crystal umgeschaltet, Brownout auf 4V/2,7V/1,8V und 
gut ist.

von André D. (dufman)


Lesenswert?

@Bastian:
Ja, habe ich auch schon ausprobiert, wusste anfangs aber auch nicht, 
welche Clocksource ich da einstellen soll, damit ISP wieder läuft. Habe 
mittlerweile rausgefunden, dass internal oscillator mit 1 Mhz scheinbar 
immer funktioniert. Trotzdem danke für den Hinweis.




@chris:
Dir auch erst einmal vielen Dank für Deine Tipps.

chris schrieb:
> Na ganz einfach, wenn du 8MhzQuarz anliegen hast nimmst du
>
>           ExternCrystal***** müsste dort dann auch stehen...

Ja, also es steht nicht ganz so da, wie Du es geschrieben hast. Ich habe 
da zum Beispiel folgende Auswahlmöglichkeiten:
EXTLOFXTAL_1KCK_4MS, EXTLOFXTAL_1KCK_64MS, EXTLOFXTAL_32KCK_64MS.

Bei den Tooltips/Quickinfos wird bei diesen Auswahlmöglichkeiten 
folgendes angezeigt:
Ext. Low-Freq. Crystal; Start-up time: 1K CK + 4 ms etc.

Jetzt frage ich mich, ob mein 8-MHz-Quarz ein Low-Freq. Crystal ist, 
weil ..  also, 8 Mhz finde ich jetzt nicht sooo Low-Freq.
Dann bleibt immer noch die Frage, was man am besten bei "CK" und 
"Millisekunden" wählt.
Es besteht auch die Möglichkeit, Medium- oder High-Freq. Clocksources 
auszuwählen, wie zum Beispiel EXTMEDFXTALRES (Ext. Crystal/Resonator 
Medium Freq; Start-up time 1K CK + 64 ms) oder EXTHIFXTALRES (Ext. 
Crystal/Resonator High Freq; Start-up time 1K CK + 64 ms).
Aber wie Du schon an der Bezeichnug bzw. am Tooltip siehst, steht da 
Crytal/Resonator und nicht nur Crystal. Wenn ich wieder das verkehrte 
auswähle, ist der Zugriff wieder futsch...   und beim ATMEGA8515 ist es 
immer umständlich, wieder mit High Voltage Programmierung alles 
wiederherzustellen, da für HV-Programmierung ein anderer Sockel 
zuständig ist...   also wieder IC umsockeln, die Programmierkabel wieder 
stecken..  etc

chris schrieb:
> Sicher?? nicht nur die ISP-Frequenz zu hoch gewählt?? sollte 1/4 der
> Taktfrequenz sein...

Ja,ich weiß...   hatte auch schon verschiedene Einstellungen 
ausprobiert, aber es lag wirklich daran, dass ich die Clocksource mit 
den Fuses falsch eingestellt hatte.

Vielen Dank für eure Tipps...
Ich hoffe, chris, Du schreibst mir nochmal zurück, ob ich den Low-Freq 
Crystal nehmen soll, oder ob die Medium- bzw. High-Freq 
Crystal/Resonator die richtigen Einstellungen beinhalten.

Grüße
André

von André D. (dufman)


Lesenswert?

Nachdem kein Beitrag mehr zurückkam, hab ich es mal mit EXTHIFXTALRES 
ausprobiert....   hat funktioniert für meinen 8MHz Quarz...

von André D. (dufman)


Lesenswert?

Ich habe ehrlich gesagt keine Ahnung, wie man das Thema hier abschließen 
kann, echt keine Idee....

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.