Hallo,
ich habe eine Schaltu8ng gebaut, die nur einen Buchstaben senden soll.
Das programm ist, denke ich auch schon gelaufen. Nun habe ich eine neue
Schaltung mit neuem Atmege 8 8mhz gebaut und da programm aufgespielt -
aber im hyperterminal kommt nichts an. habe so berechnet (im Programm):
=> Schaltung ist gekauft, sollte also funktionieren.
Pfeiffy schrieb:> aber im hyperterminal kommt nichts an. habe so berechnet (im Programm):> => Schaltung ist gekauft, sollte also funktionieren.
Dann teste mal, ob die Belegung der RS232 Buchse/Stecker zu deinem Kabel
passt.
Wenn das nicht richtig gekreuzt/nicht gekreuzt ist, dann sendet der AVR
auf der Leitung, auf der auch der PC sendet. Und dann geht natürlich
nichts.
den
Karl Heinz schrieb:> Pfeiffy schrieb:>>> aber im hyperterminal kommt nichts an. habe so berechnet (im Programm):>> => Schaltung ist gekauft, sollte also funktionieren.>> Dann teste mal, ob die Belegung der RS232 Buchse/Stecker zu deinem Kabel> passt.>> Wenn das nicht richtig gekreuzt/nicht gekreuzt ist, dann sendet der AVR> auf der Leitung, auf der auch der PC sendet. Und dann geht natürlich> nichts.
ich denke, ich hab das schon alles getestet, bin aber so langsam ein
bisschen verunsichert - kannst du mir sagen, an welchem Pin am 232 was
kommen muss.
Gruß
Pfeiffy
Zum testen ist eine normale LED mit einem 330 Ohm Vorwiderstand ein
gutes Hilfsmittel. Bei 9600 Baud sieht man die LED wunderbar flackern,
so dass du an unterschidelichen Messpunkten entlang des Kabels/Platine
verfolgen kannst, bis wohin und auf welcher Leitung dein AVR klimpert.
Zwei Sachen fallen mir auf:
1. 9600 Baud sind für 4 MHz relativ viel.
2. 4 MHz sind eine echte Seltenheit beim xx8.
Intern sind 8 MHz bzw. 1 MHz üblich.
Amateur schrieb:> Zwei Sachen fallen mir auf:> 1. 9600 Baud sind für 4 MHz relativ viel.
wie kommst du auf die Schnapsidee?
9600 sind doch überhaupt kein Problem.
> 2. 4 MHz sind eine echte Seltenheit beim xx8.> Intern sind 8 MHz bzw. 1 MHz üblich.
Mag sein.
Aber wenn Taktrate oder Baudrate nicht stimmen, dann tauchen am PC im
Hyperterminal wenigstens irgendwelche Zeichen auf. Es sind zwar die
falschen, aber es kommt irgendwas.
Kommt gar nichts, dann würde ich als erstes mal auf eine
Fehlkonfiguration am AVR tippen (lässt sich mit einer LED am TxD Pin vom
AVR prüfen), wenn da alles in Ordnung ist, dann könnte es mglw. der
MAX232 sein (auch das lässt sich mit der LED sofort prüfen) und wenn da
alles in Ordnung ist, dann wäre mein heißer Kandidat ein falsch
gekreuztes Kabel.
Pfeiffy schrieb:> Hallo,> ich habe eine Schaltu8ng gebaut, die nur einen Buchstaben senden soll.> Das programm ist, denke ich auch schon gelaufen. Nun habe ich eine neue> Schaltung mit neuem Atmege 8 8mhz gebaut und da programm aufgespielt -> aber im hyperterminal kommt nichts an. habe so berechnet (im Programm):> => Schaltung ist gekauft, sollte also funktionieren.> .equ F_CPU = 4000000 ; Systemtakt in Hzhust
Pfeiffy schrieb:> also zwischen Masse und tx bekomme ich pulsierend zwischen 4,8 und 5,3V,> am rs232 habe ich diese 4,8 bis 5,3 auf dem pin 3
Im Ernst:
An dieser Stelle ist eine LED gegen Masse verschaltet, als 'Messgerät'
so ziemlich jedem Voltmeter eindeutig überlegen.
Geh mit der LED auf den TxD Pin vom Mega.
Du musst dort EINDEUTIG ein Blinken/Flackern sehen können (klemm dazu
den PC ab).
Dieses Blinken verfolgst du durch die ganze Schaltung, bis du beim RS232
Stecker angelangt bist.
Danach weißt du zusätzlich, wie dein RS232 Anschluss auf der AVR Platine
verschaltet ist (das ist leider nicht eindeutig geregelt. Es gibt zwar
so etwas wie eine Norm, aber je nachdem, ob der Entwickler der Ansicht
ist, dass es sich hier um eine DFU oder eine DFE handelt, hat er den
Stecker/Buchse anders belegt.
Dann legst du einen Stein auf die PC-Tastatur, nimmst wieder deine LED
zur Hand und siehst am AVR-seitigen Kabelende nach, auf welchem Pin es
blinkt. Dieser Pin darf nicht derselbe sein, auf dem der AVR seine Daten
rausbläst.
Die beiden müssen auf den gegenteiligen Adern blinken.
Entweder der PC auf 2 und der AVR auf 3. Oder eben anders rum: der PC
auf 3 und der AVR auf 2.
Aber mach die Sache mit einer LED. Du wirst sehen, das geht schneller
und zuverlässiger als mit einem Voltmeter. Unzählige Sysadmins haben in
der Vergangenheit damit ihre Kabelprobleme in 20 Sekunden unter
Kontrolle gebracht. Das funktioniert so gut, dass es früher sogar eigene
Zwischenstecker gab, in denen nichts anderes als diese LED eingebaut
waren.
Abgesehen davon: wieso ca. 5V?
Auf einer RS232, die zum PC geht, solltest du eher +-12V messen. OK, in
der Praxis sind es eher +-10V, aber geschenkt.
ich hab jetzt auch nochmal über burnomat die Fuses ausgelesen. Steht auf
type: crystal, range 3-8mhz, slowly rising poweer, large output swing.
External RC oszilator steht auf 0.9-3
Calibrated intern oszilator steht auf 1mhz
ich weiss im Moment nichrt was ich machen soll.
Pfeiffy
Die Burn-o-mat-Ausgabe sollte mal jemand kommentieren, der die SW kennt.
Mir kommt sie widersprüchlich vor. Entweder ich nutze den internen
RC-Oszillator mit 8MHz oder_ einen externen RC-Oszillator _oder einen
externen Quarz.
Aber Du könntest in der Zwischenzeit mal den Pegel an den RS232
Leitungen TX des uC kontrollieren. Sollte im Ruhezustand (ohne das etwas
gesendet wird) etwa -10V bis -12V sein.
Auch könntest Du mal den Schaltplan Deiner neuen Platine posten. Nur zur
Sicherheit.
Bitflüsterer schrieb:> Die Burn-o-mat-Ausgabe sollte mal jemand kommentieren, der die SW kennt.> Mir kommt sie widersprüchlich vor.
Nicht nur dir.
Das kann doch nicht so schwer sein, mal auf die Platine zu schauen und
dort nachzusehen ob da ein Quarz drauf verbaut ist und wenn ja, welche
Zahlenangabe da drauf steht.
> Aber Du könntest in der Zwischenzeit mal den Pegel an den RS232> Leitungen TX des uC kontrollieren. Sollte im Ruhezustand (ohne das etwas> gesendet wird) etwa -10V bis -12V sein.
Der Verdacht ist mir auch schon gekommen, dass da ev. gar kein MAX232
verbaut ist und es sich um eine sog. TTL-UART handelt.
Karl Heinz, ich bewundere deine Geduld...
Karl Heinz schrieb:> Das kann doch nicht so schwer sein
Es ist nicht schwer. Man muss nur einfach mal SELBER das Gehirn (das
Ding zwischen den Ohren) verwenden und nicht gleich die Community
fragen, wenn sich mal ein Fürzlein verklemmt. Der dann stattfindende
Prozess nennt sich "Lernen".
Pfeiffy schrieb:> also es ist ein elecont-Board (Carrierboard mit Atmega8 16au), mit> 16mhz> Quartz und einem max232. Ausgang am tx ist ca 10V.>> Gruß> PfeiffyBitflüsterer schrieb:> Schön. Und was ist da nun für ein Quarz d'rauf?>>>Ausgang am tx ist ca 10V.>> Du meinst sicher -10V, oder?
16mhz (siehe oben)
Das problem beim Burnomat ist denke ich, dass ich verschiedene
Einstellungen machen kann, aber nicht sehe, welche aktiv ist
> 16mhz (siehe oben)
Schön. Ich weiss nur noch nicht ob Du das aus der Beschreibung abgelesen
hast oder selbst nachgeschaut.
Was ist mit den 10V? Plus oder Minus?
>Das problem beim Burnomat ist denke ich, dass ich verschiedene>Einstellungen machen kann, aber nicht sehe, welche aktiv ist
Poste doch mal einen Schnappschuss vom Bildschirm.
Bitflüsterer schrieb:> Falls sich das mit den 16MHz (das M schreibt man übrigens groß, sonst> heisst es Millihertz) bestätigt, dann muss Du die Zeile:>>
1
> .equ F_CPU = 4000000
2
>
>> natürlich entsprechend anpassen.
ok, bin gerade etwas krank, daher langsam.....
nun beim brennen kommt :Yikes! Invalid device signatur... kann da ein
Kabel raus ein?
Gruß
Pfeiffy
Bitflüsterer schrieb:>> 16mhz (siehe oben)>> Schön. Ich weiss nur noch nicht ob Du das aus der Beschreibung abgelesen> hast oder selbst nachgeschaut.>> Was ist mit den 10V? Plus oder Minus?>>>Das problem beim Burnomat ist denke ich, dass ich verschiedene>>Einstellungen machen kann, aber nicht sehe, welche aktiv ist> Poste doch mal einen Schnappschuss vom Bildschirm.
Ich kenne nun den Burn-O-Mat überhaupt nicht. Daher sind meine Hinweise
mit Vorsicht zu geniessen. Nachdem ich aber mal diese Seite hier
http://avr8-burn-o-mat.aaabbb.de/avr8_burn_o_mat_avrdude_gui_en.html
gelesen habe, meine ich, zumindest eine Ahnung zu haben, was das Problem
ist.
Ich sehe nämlich auch, dass es möglich ist, jeden der Tabs für die
verschiedenen Oszillator-Optionen auszuwählen, obwohl natürlich nur
einer davon relevant sein kann.
Ausgerechnet aber die Seite (siehe
http://avr8-burn-o-mat.aaabbb.de/avr8_burn_o_mat_screenshot_fuses.png)
die darüber Auskunft geben könnte, welche der Unterseiten relevant ist,
zeigst Du aber nicht. Dort sind nämlich die Fuses angegeben - so dass
man mit dem Datenblatt erkennen kann, welche Taktquelle gewählt ist.
Und das war genau meine Vorgehensweise.
1. Suche nach "Burn-O-Mat". Erster Treffer:
http://avr8-burn-o-mat.aaabbb.de/avr8_burn_o_mat_avrdude_gui_en.html
2. Ein wenig scrollen, was es überhaupt so gibt. (Auf der Suche nach
"Anleitung", "Manual" oder sinnverwandte Worte. Aber Screenshoots
gefunden.
3. Erster Screenshoot zeigt Button "Fuses". Aha!
4. Zweiter Screenshoot zeigt die tatsächlichen Werte der Fuses. Super.
5. Dazu noch das Datenblatt aufgemacht. Aha. Crystal-Osz. ist aktiviert.
etcpp.
Genauso machst Du es auch.
Zugegeben: Es ist ein wenig ungünstig, dass die anderen Tabs der
Taktquellen, die nicht aktiviert sind auch auswählbar sind oder nicht
besonders gekennzeichnet. Aber gut. Ein bisschen mitdenken muss man
schon mal. Ist nicht alles perfekt in der Welt der Programmierer. ;-)
Unabhängig davon.
Mach halt mal den in der Checkliste angegebenen Schnelltest, ob die
Taktfrequenz hinkommt. mittels delay_ms eine LED 1 Sekunde ein, 1
Sekunde aus.
Ob die Taktfrequenz 7.8Mhz oder 8.1Mhz ist, kann man damit nicht
feststellen. Aber diese Optionen stellen sich ja nicht. Es gilt 1Mhz von
8 Mhz bzw. von 16Mhz zu unterscheiden. Und das sieht man mit freiem Auge
alle mal, ob eine LED 1 Sekunde oder 8 Sekunden (oder 16 Sekunden)
leuchtet.
ok, bin ja lernfähig, trotz Krankheit:
das heißt nun (erstes Bild aus Burn-o-mat)
sut1:0
sut0:1
cksel3:1
cksel2:1
cksel1:1
cksel0:0
Das wäre dann der intere i MHZ Oszilator - korrekt!
Das zweite Bild zeigt due gleichen Fueses aus eine Ponyprog-Beschreibung
(nur als Referenz)
==> ich takte also mit 1MHZ intern!
ok, ich wollte die ganze Sache mal auflösen: ich hab die Schalung jetzt
mal am PC meiner Tochter getestet - und da funktioniert es einwandfrei!
Also ist mein Com platt! hab mir nun einen USB-Com geholt und damit
klappt es!! Nochmal vielen Dank an alle!!
Gruß
Pfeiffy
Dirk schrieb:> ok, ich wollte die ganze Sache mal auflösen: ich hab die Schalung jetzt> mal am PC meiner Tochter getestet - und da funktioniert es einwandfrei!> Also ist mein Com platt! hab mir nun einen USB-Com geholt und damit> klappt es!! Nochmal vielen Dank an alle!!>> Gruß> Pfeiffy
Dein Posting vom 8.7. hatte ich leider nicht gesehen.
Aus meiner Sicht wäre das Thema damit nicht erledigt.
Wenn nämlich Dein uC wirklich mit dem internen RC-Oszillator betrieben
wird, dann ist es (im wesentlichen) Zufall, dass der uC gerade am PC
Deiner Tochter und an dem USB-RS232-Converter funktioniert.
Der Punkt ist, dass der RC-Oszillator sehr temperaturabhängig ist. Ein
anderer Punkt ist, dass es durchaus möglich ist, dass der PC Deiner
Tochter bzw. der Converter ein wenig toleranter ist, als üblich. Möglich
ist auch eine Kombination aus beiden Faktoren.
D.h. Du hast jetzt eine besondere Situation in der es geht. Aber es
sollte an sich an allen PCs gehen und in (fast) jeder Situation.
------------------------------------------------------------------------
Wenn Du das Board mit dem darauf enthaltenen Quarz betreibst, dann
sollte es auch mit Deinem PC ohne Konverter funktionieren.
------------------------------------------------------------------------
Du musst nur, den Fuses umstellen so dass ein Quarz gewählt ist
("External Crystal") und die Frequenz bei dem define einstellen.
Offen bleibt, auch wie der Pegel an Deiner Schnittstelle aussieht - wenn
auch die Wahrscheinlichkeit, dass hier das Problem liegt, ein wenig
gesunken ist.
Ich weiß, es ist in Deiner Situation wahnsinnig verführerisch, zu
denken, man habe das Problem gefunden und gelöst. Wenn Du aber mal ganz
genau darüber nachdenkst, dann hast Du nur festgestellt, dass zwei
bestimmte Kombinationen funktionieren. Du hast aber nicht
festgestellt, welcher Parameter in solcher Weise von den Nominalwerten
abweicht, dass es in einer gewissen Kombination nicht geht.
Wenn Dich jemand fragt aus welchem Grund es in der einen Kombination
funktioniert und in der anderen nicht, kannst Du den Grund nicht nennen!
Ich rate Dir daher ernsthaft, sehr ernsthaft an dieser Stelle nicht
aufzuhören, sondern den Ratschlägen hier zu folgen.