Hallo,
ich habe eine Schaltung aufgebaut und anfänglich mit der internen Freq
von 1 MHz probiert. Auf RS232 war zwar mit dem Oszi was zu sehen aber
per minicom kam nicht. Habe gelesen dass die interne Freq recht stark
schwanken kann, Temperatur & Co., damit RS232 Problem entstehen. Nun
habe ich einen externen Quarz mit 1,8432MHz verbaut + Kondensatoren.
Krumme Variante für Baud Konfiguration. Anfänglich hatte ich fuse l e1
und h d9 laufen. Für die externen 1,8432MHz dachte ich an l 66 und h d9.
Leider lässt sich diese Konfiguration per avrdude nicht setzen.
m_golbs schrieb:> Habe gelesen dass die interne Freq recht stark> schwanken kann, Temperatur & Co., damit RS232 Problem entstehen.
Hast du es auch mal mit Kalibrieren versucht?
Mit diesen paar Zeilen Code kannst du z.B. den optimalen Wert für das
OSCCAL-Register experimentell ermitteln:
1
### Programm zur Bestimmung von OSCCAL ohne Frequenzgenerator/-zaehler ###
2
3
#include<stdlib.h>
4
#include<avr/io.h>
5
6
#include"uart.h"
7
8
intmain(void){
9
uartSetup(9600);
10
charvalueToSend[5];
11
for(uint8_ti=0x00;i<0x7f;i++){
12
OSCCAL=i;
13
sendString("OSCCAL is now: ");
14
itoa(OSCCAL,
15
valueToSend,
16
10);
17
sendString(valueToSend);
18
sendString("\r\n");
19
20
}
21
for(;;){
22
}
23
return0;// never reached
24
}
Das wäre ggf. eine Möglichkeit für dich auf einen Quarz zu verzichten.
Zu dem Fuse-Problem: Man kann sich einen AVR auch ziemlich leicht
verfusen sodass man einen HV-Programmer braucht. Solange das aber nicht
der Fall ist kannst du eigentlich immer die Fuse-Bits setzen. Geht das
bei dir nicht stimmt entweder beim Aufbau etwas nicht oder am Programmer
klemmt es.
m_golbs schrieb:> Für die externen 1,8432MHz dachte ich an l 66 und h d9.
Das ist Quatsch, das ist keine Konfiguration für einen Quarz, sondern
für einen externen RC-Oszillator.
> Leider lässt sich diese Konfiguration per avrdude nicht setzen.
Vermutlich ließ sie sich setzen, jetzt kannst du bloß nix mehr dran
ändern. Verfused.
Drei Möglichkeiten zur Wiederbelebung:
1) Tatsächlich eine geeignete RC-Kombination anschalten
2) Externen Takt anlegen
3) HV-Programming
Und wenn du das nächste mal an irgendwas "denkst", vergiß es einfach
gleich wieder und benutze statt dessen:
http://www.engbedded.com/fusecalc/
M. K. schrieb:> Hast du es auch mal mit Kalibrieren versucht?
Und das willst du vor jedem Senden eines Strings durchziehen, oder nur
wenn sich die Temperatur des µC nennenswert geändert hat?
my2ct schrieb:> M. K. schrieb:>> Hast du es auch mal mit Kalibrieren versucht?>> Und das willst du vor jedem Senden eines Strings durchziehen, oder nur> wenn sich die Temperatur des µC nennenswert geändert hat?
So etwas macht man ein mal bei den typischen Betriebswerten und nicht
vor jedem Senden eines Strings oder wenn sich die Temperatur nennenswert
geändert hat, ist doch logisch. Kalibrierst du z.B. vor jeder Messung
mit einem DMM erstmal das DMM? Das Oberstübchen darf schon mit benutzt
werden, auch am Happy Kadaver Day. ;)
Das ist Quatsch, das ist keine Konfiguration für einen Quarz, sondern
2
für einen externen RC-Oszillator.
Dann habe ich mit fuse l 66 und h d9 den typischen Fehler gemacht. Da
wäre wohl -U lfuse:w:0xde:m -U hfuse:w:0xd9:m besser? Sind 1,8432MHz
schon high freq oder medium?
"...Wenn nicht, stimmt was mit dem Programmer oder der Verbindung
nicht..." Komisch, denn ich kann fuse lesen und hex schreiben???
1
Vermutlich ließ sie sich setzen, jetzt kannst du bloß nix mehr dran
2
ändern. Verfused.
Wenn fuse zu lesen dann sollte doch noch nicht verfused sein? Mit
avrduse und -F habe ich es dann doch geschafft, verfused.
1
Drei Möglichkeiten zur Wiederbelebung:
2
1) Tatsächlich eine geeignete RC-Kombination anschalten
3
2) Externen Takt anlegen
4
3) HV-Programming
Werde diesen MC dann mit dem STK500 und 3) beleben, jetzt erst mal den
zweiten MC nutzen.
1
### Programm zur Bestimmung von OSCCAL ohne Frequenzgenerator/-zaehler ###
Prima, danke! Für das debugging bei Raumtemperatur passt das sicher
prima. Im Betrieb müssen später etwa -20°C ... 50°C möglich sein. Wo
glaubt ihr ist Delta T für interne 1MHz und RS232 ungefähr angesiedelt,
dass RS232 noch läuft?
Gruß und Dank Markus
M. K. schrieb:> So etwas macht man ein mal bei den typischen Betriebswerten
Die Betriebswerte ändern sich typisch über einen gewissen Bereich. Da
gibt es keinen einzelnen "typischen Betriebswert".
m_golbs schrieb:> -20°C ... 50°C
Über den geforderten Temperaturbereich von 70K dürfte sich die
Oszillatorfrequenz um typisch 8% ändern, also etwa +/-4% um die
Bereichsmitte, falls die Fig.1 der AVR053 (Calibration of the internal
RC oscillator) so in etwa auch für den ATmega8 passt.
Da kann es schon etwas eng werden mit "so etwas macht man ein mal".
Besser sollte man also mal nachmessen, was sich da so tut.
Wolfgang schrieb:> Besser sollte man also mal nachmessen, was sich da so tut.
Wenn man die Möglichkeit hat, es zu messen, dann sollte man es auch
immer messen, ob es passt.
Wolfgang schrieb:> Die Betriebswerte ändern sich typisch über einen gewissen Bereich. Da> gibt es keinen einzelnen "typischen Betriebswert".
Ist dir die Bedeutung von "typisch" bekannt? Es gibt IMMER typische
Betriebswerte aber es sollte doch klar sein, dass die nicht in Stein
gemeiselt sind.
m_golbs schrieb:> Wo> glaubt ihr ist Delta T für interne 1MHz und RS232 ungefähr angesiedelt,> dass RS232 noch läuft?
öhm...das musst du doch wissen, du musst doch wissen welches Delta T du
später hast. Wie es Wolfgang schon sagte, am besten Messen.
Soll das nen Serienprodukt werden? Dann ist es wohl am einfachsten,
einen Quarz zu verwenden.
m_golbs schrieb:> Dann habe ich mit fuse l 66 und h d9 den typischen Fehler gemacht. Da> wäre wohl -U lfuse:w:0xde:m -U hfuse:w:0xd9:m besser? Sind 1,8432MHz> schon high freq oder medium?
Ist jetzt nicht böse gemeint: Hast du das Datenblatt gelesen des Atmegas
gelesen? Dann müsstest du nicht fragen ob 1.8432 MHz High Freq oder
Medium ist. Und dann wäre wohl auch der Fuse-Fehler nicht passiert. Um
zumindest die richtigen Werte für die Fuses einzutragen, sofern man es
nicht selber bestimmen will, empfiehlt es sich, den Fuse Bit Calculator
zu verwenden (wenn man halt nicht mit dem Studio oder ähnlichem
Unterwegs ist): www.engbedded.com/fusecalc/
" Sind 1,8432MHz schon high freq oder medium?"
Diese Frage zeigt klar, daß Du meinen Beitrag oben nicht verstanden und
gewinnbringend verarbeiten konntest. Diese Sachen stehen im Dabla in
einer Tabelle zu den Taktquellen.
MfG