PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neulings Problem mit dem Atmel



sege
08.01.2008, 16:57
Hallo liebe Community,

ich spiele seit ein paar Tagen mit Microcontrollern rum, habe aber ein großes Problem. Ich hoffe ihr könnt mir helfen.

Ich habe inzwischen schon drei mal die gleiche Schaltung aufgebaut auf dem Steckbrett und keine will funktionieren.
Es handelt sich um einen ATmega32 .
Ich bin momentan auf diesem Stand:
https://www.roboternetz.de/wissen/index.php/Bild:Avrtutorial_grundschaltung_mitisp.gif

Als Programmierkabel benutze ich ein "bsd" kabel.
https://roulette.das-labor.org/trac/browser/microcontroller/doc/Layouts/Programmierkabel-2006.png

Ich kann das ganze aber nicht dazu bringen sich Programmieren zu lassen.
Unter Windows sagen mir Bascom und PonyProg, dass der Controller die ID FFFFFF zurückliefert. Ich muss aber zugeben, dass ich nicht weiß, welchen Programmer ich bei diesen Programmen einstellen soll und deswegen schon viele probiert habe. Aber bei jeder Einstellung die gleiche Fehlermeldung.
Mein anderer PC (Linux) verweigert bei avrdude den Dienst mit der Fehlermeldung "AVR device not responding"

Habt ihr vielleicht einen Tip für mich, bevor ich ganz verzweifle ?

Danke schon mal !

sege

AlKI
08.01.2008, 19:15
das sollte eigentlich stimmen, das sieht nach einer abgespeckten Version von den stk200/300 - kompatiblen aus.

stell mal "stk200/300" ein. Dann musst du dir sicher sein, dass der Adapter richtig an den Microcontroller angeschlossen ist. dein MC muss auch Saft bekommen (an Vcc ca. +5V, an GND eben 0V) GND vom MC sollte auch mit dem GND vom PC-Adapter verbunden sein.

ID FFFFFF bedeutet glaub, dass der MC garnix empfängt und sendet.

Hast du das Datenblatt vom ATMega32?

sege
08.01.2008, 19:49
Meinst du das mit Datenblatt ?
https://www.roboternetz.de/wissen/index.php/Bild:Mega1632.gif

genau nach diesem Prinzip habe ich ja alles angeschlossen.
die 4 leitungen mit den Widerständen vom parallel Port her gehen an den Chip hin (Pins 6-9).
Stromversorgung aus dem LTP Port funktioniert auch (Ich habe eine LED zwischen +5V und GND).

Habe auch nochmal das Datenkabel geprüft. Alle Verbindungen sind richtig. Ich habe direkt von den Pins im LTP Port bis zu den füßchen am atmel gemessen.

Hat jemand noch eine Idee, wie ich überprüfen kann, ob mit dem Atmel etwas nicht stimmt ?

sege
08.01.2008, 20:11
etwas was mir gerade beim messen aufgefallen ist....
wenn am pc angeschlossen, liegen am reset pin 3,5 V an. wenn ich dann am PC was starte (avrdude, uisp oder so) sinkt der Wert auf 0,3 V und geht danach wieder hoch
allerdings, nur wenn ich auf programmer = bsd schalte...

an MOSI liegen auch 3,5 V gehen runter auf ~1V
an MISO 4,8 V auf ~1,5V
an SVK von 3,4V auf 1,2 V
an VCC und AVCC liegen 5,08V an.

EDIT:
die oben beobachteten Werte sind nur bei avrdude beobachtbar.
bei verwendung von UISP sind überall 4,8V messbar die dann nach unten gehen, wenn ein befehl kommt.

robocat
08.01.2008, 20:24
Stromversorgung aus dem LTP Port funktioniert auch
heisst das, du versuchst deine schaltung über den druckerport zu versorgen? das ist gar keine gute idee! ich hoffe dass ich mit der vermutung falsch liege.

gruesse

sege
08.01.2008, 20:31
sorry hab ich ein bisschen falsch ausgedrückt. die schaltung hat natürlich eine eigene stromversorgung.
aber als ich sie gerade mal nur am druckerport hängen hatte und nicht am strom, viel mir auf, dass die LED leuchtet.

dachte das könnte vllt jemanden helfen mein problem zu finden....

AlKI
08.01.2008, 20:39
Meinst du das mit Datenblatt ?

Ehh... nein, aber das genügt.

Da du FFFFFF bekommst, ist wohl was in der Verdrahtung oder in den fusebits nicht richtig (wenn du nichts anschließt bekommst du dasselbe!).
hattest du den schonmal woanderst drin? (ausversehen ISP disabled?) dass der putt ist, glaub ich net.

Überprüf die Verdrahtung GANZ genau (incl. Pinnummern am Druckeranschluss!)

Besserwessi
08.01.2008, 20:42
So schlecht ist die Idee gar nicht, immerhin kann dann keine andere Spannung falsch gepolt werden. An den meiste Druckerport kriegt man aber nur sehr wenig Leistung und dafür mehr Störungen. Ohne einen Elko und richtig plazierte Kondensatoren wird es also Schwierig. Außerdem kann man kaum mit 5 V sondern eher mit 4 V rechnen, und bei ganz alten PCs gibts kaum 3 V. Es gibt durchaus Schaltungen die einen HC244 Treiber für einen ISP Programmer aus dem LPT Port speisen. Auch für Optokoppler ist das eigentlich keine schlechte idee.

In der Grundschltung fehlt zumindest der zweite Entkopplekondensator. Die LED würde ich zum Programmieren eventuell wegnehmen, damit mehr Strom zur Verfügung steht.

sege
08.01.2008, 21:11
also ich hab die verdrahtung nochmal geprüft.... von den pins im parallelen anschluss bis zu den pins des atmels.

alles richtig und mit 330 Ohm.

ich bin jetzt echt am verzweifeln.
inzwischen macht uisp gar nichts mehr in richtung spannungsänderung an den pins... nur noch avrdude

und spannung am reset pin is jetzt 3,4 v geht aber bei ner programmierung oder zugriffsversuch auf 0,3v runter.

was meinst du mit einem zweiten entkoppelkondensator ?
die LED habe ich entfernt.

edit: wegen der fuses: ich bin noch neuling, und hab den atmel noch nicht zum laufen gebracht.... kam gestern frisch mit der post vom großen R...

AlKI
09.01.2008, 11:38
und spannung am reset pin is jetzt 3,4 v geht aber bei ner programmierung oder zugriffsversuch auf 0,3v runter


das mit dem "runter gehen" hat was damit zu tun, dass dein Multimeter nicht merkt, dass die Spannung sich dauernd ändert (die ISP-Signale sind recht schnell getaktet)

bekommst du immernoch die ID "FFFFFF" raus?

evtl sind auch die Widerstände zu groß (und Pullups im lpt-Port ziehen die MISO-Leitung auf "high"-Pegel, was das "FFFFFF" erklären würde)

"FFFFFF" bedeutet ja, dass 6 bytes (à 8 bits) mit jedem bit = 1, "high" empfangen wurden. Wenn es also Störungen durch Spannungsschwankungen gäbe, würdest du immer irgendwelche IDs einlesen (hatte ich auch mal).

mach mal in die MISO-Leitung nen 100 Ohm-Widerstand (oder 120 oder ähnlich, eben R < 300Ohm). Das ist die Sende-Leitung des MCs.

Hellmut
09.01.2008, 12:27
Manchmal ist ein Ende mit Schrecken besser als ein Schrecken ohne Ende!

Ich würde an deiner Stelle nochmal anfangen. Folge ddem Thread bei RCLine.de, dort wird Schritt für Schritt eine Schaltung rund um den mega8 aufgebaut. Du hast viele kleine Teilerfolge und baust auf diese Weise Wissen, Erfahrung und Verständnis auf. Es kostet nur sehr wenig Geld.

Ich empfehle diese Seite weil ich dort erlebt habe wie viele Elektronik-Skeptiker im Modellbau zu begeisterten Anwendern wurden. Ich habe persönlich keinen anderen Vorteil davon als die Befriedigung einen guten Rat zu geben.

python_rocks
09.01.2008, 13:44
Unter Windows sagen mir Bascom und PonyProg, dass der Controller die ID FFFFFF zurückliefert.
Hallo sege!

Das bedeute, dass kein µController gefunden werden konnte. Das kann auch an deinem Parallelport liegen. Je neuer der Computer desto weniger eignet sich der Parallelport für diese Aufgabe.

Da ich als Anfänger es auch nicht schaffte, den µC über den Parallelport anzusprechen (genauer gesagt, auf einem alten Computer gings, aber auf meinem neuen Computer nicht), habe ich mich kurzfristig dafür entschieden, einen billigen USB-Programmer zu kaufen. Das habe ich bis jetzt nicht bereut und arbeite immer noch damit.

Der mysmartusb http://www.conrad.at/goto.php?artikel=191510 (http://www.myavr.de/shop/article.php?artDataID=36) läuft unter Bascom wie geschmiert. Und die Fusebits (davon wirst du noch einiges hören) lassen sich mit dem mitgelieferten Programm *myAVR_Workpad* wunderbar setzen.

Das ist mein persönlicher Tipp für jeden Anfänger.

Und hier noch ein Tipp, ohne viele Worte: http://www.rowalt.de/mc/index.htm

mfg
Gerold
:-)

Bluesmash
09.01.2008, 13:57
Es könnte aber auch sein dass im Bios deines Pc's eine falsche Adresse für den LPT Port eingestellt ist...

gruss bluesmash

--Edit---
kann ja auch nicht sein, du schreibst ja dass sich die pegel der schnittstelle ändern wenn du programmieren wilst....

sege
09.01.2008, 14:24
Danke für die vielen Tipps !
Es funktioniert jetzt durch den Tipp von AlKi !!!
Es war also wirklich der 330 Ohm Wiederstand in der MISO Leitung Schuld.
jetzt mit 120 Ohm funktioniert es perfekt.

Danke schön trotzdem auch an alle anderen !

Ich werde jetzt mal weiterbauen bzw weiterspielen ;)

Viele Grüße,

sege

AlKI
09.01.2008, 15:09
wow, schön!
Der Fehler war wie oft schon nur ein kleiner, man musste ihn nur finden.....

Viel Spass beim weiteren proggen!

Martin.
09.01.2008, 16:19
Ich hätte auch noch ein Problem.

Ich hab die Grundschaltung vom Tut endlich aufgebaut und den ISP Dongle auch zusammengelötet. Anschliesen an den Computer hat auch geklappt. BASCOM hat den Atmel32 den ich verwende richtig erkannt und ich konnte ihn auch programmieren. Nur leuchtet die Leuchtdiode aus dem Tut nicht auf. Sie ist richtig herum drinnen. Kanns sein dass ich irgendein Startsignale geben muss damit der Controller das Programm ausführt?

Achja ich verwende folgendes programm:



$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000

Config Portc.0 = Output 'Ein Pin wird als Ausgang konfiguriert PC0 (also Pin0 von Port C)
Config Portc.3 = Output 'Ein Pin wird als Ausgang konfiguriert PC0 (also Pin0 von Port C)

Do
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet
Waitms 100
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet
Waitms 100
Portc.3 = 1 'Pin wird auf High, also 5V geschaltet
Waitms 100
Portc.3 = 0 'Pin wird auf Low, also 0V geschaltet
Waitms 100
Loop

End
ich hab noch ne 2. LED eingelötet, die leuchtet aber auch nicht.

AlKI
09.01.2008, 16:55
Ich vermute, dass die LED einfach zu lange aus ist (100ms an, 300ms aus)

versuch mal das:


$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000

Config Portc.0 = Output 'Ein Pin wird als Ausgang konfiguriert PC0 (also Pin0 von Port C)
Config Portc.3 = Output 'Ein Pin wird als Ausgang konfiguriert PC0 (also Pin3 von Port C)

Do
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet
Portc.3 = 1 'Pin wird auf high, also 5V geschaltet
Waitms 100
Portc.0 = 0 'Pin wird auf low, also 0V geschaltet
Portc.3 = 0 'Pin wird auf Low, also 0V geschaltet
Waitms 100
Loop

End


Sicher, dass es 1MHz Taktung sind? (fusebits)

Martin.
09.01.2008, 17:04
Habs gleich ausprobiert. Bei BASCOM heißts bei KLA987 1Mhz Taktung.
Ich hab die Zeit auf 1s erhöht und ich seh trotzdem nichts.

Ich hoffe ich mach des schon immer richtig: auf Button an CHip senden drücken und dann auf Auto program chip. Muss ich danach noch was machen, oder sollte er dann selbstständig starten? Kanns sein dass der Vorwiderstand zu groß ist. 1kOhm bei 5V und einer roten LED. Ich such grad im Datenblatt wieviel der Eingang vom AVR verträgt. Ichhoffe von euch hat noch jemand tipps

Christopher1
09.01.2008, 17:09
Was meinst du mit vertragen?
Beim ADC max 5V wenn die Referenzspannung 5V beträgt und du das auch so richtig programmiert hast es gehen natürlich mehr, dann benötigst du aber einen Spannungsteiler.

Martin.
09.01.2008, 17:16
Ne ich meinte den Strom an der LED. Ich hab keine Low Current LED verwendet sondern eine rote standart LED. Leuchtet die schon bei weiniger als 5mA? Immerhin braucht sie doch 2V. (5V-2V)/1000Ohm = 3mA.

Martin.
09.01.2008, 19:10
hat sich erledigt.

AlKI
09.01.2008, 19:41
hat sich erledigt.


Inwiefern? Zu großer Vorwiderstand?

außerdem musst du die Größe des Vorwiderstandes Folgendermaßen berechnen:

R = (Ugesamt - ULED ) / ILED

Wobei in dem Fall
Ugesamt = 5V
ULED = ca. 2V
(kann zwischen 1,2 und 3,5V liegen, jeh nach Art, typ. 2 bis 2,5V)
ILED = 20mA
(kann zwischen 5mA (bei low-current) und ner Menge (bei LeistungsLEDs) liegen, normalerweiße ca. 15 bis 25mA)

Martin.
10.01.2008, 11:45
Erstmal danke! Des war ein peinlicher Fehler :( Ich hab alles schön sauber verlötet, auch die beiden Masseanschlüsse vom Atmega 32 (hab ich miteinander verbunden) nur hab ich vergessen die an die Masse der Spannungsquelle zu legen.
Ich hab des nur durch zufall entdeckt. Ich hab den strom gemessen der an jedem Port floss (den ich eingeschaltet hab). Der war ungefähr 1,6mA. Da dachte ich dann erst dass ich einen Treiberbaustein hernehmen muss um den Strom zu verstärken, bis mir aufgefallen ist, dass die Masse nicht angeschlossen ist. Ich habs jetzt mal mit Krohodilklemmen überbrückt und es funktioniert wunderbar. die LEDs leuchten auch hell.

Martin.
11.01.2008, 19:47
ich hab leider noch in problem. Diesesmal weis ich gar nicht wo ich zum suchen anfangen soll:

Ich hab 8 rote und 1 grüne Led zur Statusanzeige verlötet. Dabei zeigt die grüne an ob die Spannungsquelle angeschlossen ist und die 8 LEDs sind über je einen 1kOhm Widerstand an die Ports C0 bis c7 angeschlossen. nun sollen sie blinken:



$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000

Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Config Portc.3 = Output
Config Portc.4 = Output
Config Portc.5 = Output
Config Portc.6 = Output
Config Portc.7 = Output


Do
Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1
Portc.4 = 1
Portc.5 = 1
Portc.6 = 1
Portc.7 = 1
Waitms 500
Portc.0 = 0
Portc.1 = 0
Portc.2 = 0
Portc.3 = 0
Portc.4 = 0
Portc.5 = 0
Portc.6 = 0
Portc.7 = 0
Waitms 500
Loop

End


Die LEDs bei PORTc. 0,1,6,7 blinken auch. Die anderen nicht. Ich hab mit einem Spannungsmessgerät mal die Spannung an den Ports gemessen. Die ist konstant fast 5V. Sie schankt nie. Hab ichs jetzt irgendwie geschafft die Ports kaputt zu machen? Und warum die LEDs nicht leuchten ist mir noch ein rätsel.Auf schlechte Lötstellen hab ichs auch überprüft. Die 5V liegen auch an den LEDs an.

Auch wenn s nicht danach ausschaut, aber ich versuch immer meine Probleme erst selber zu lösen. Aber hier blick ich nicht mehr durch. Wenn die Spannung am Port sich nicht mehr ändert geh ich mal davon aus, dass es am Controller liegt.

Vielen Dank für eure Ratschläge!

AlKI
11.01.2008, 20:08
Am code liegts jedenfalls nicht.

Sind keine kurzschlüsse drin?
Wird der MC warm?
sind die LEDs richtigrum gepolt? (mitm Multimeter direkt an den Pins nachmessen wenn KEIN saft auf der Schaltung ist)

Du kannst auch visuell mal gucken, ob der Reflektor in der LED (die Schale, das breite metallteil im Gehäuse) überall auf der Seite ist, wo GND ist (übern Vorwiderstand evtl.)

Da ist garantiert wieder son kleiner, verzwickter mistfehler drin.

Martin.
11.01.2008, 21:36
Hm. Die LEDs hab ich visuell und mit nem Multimeter überprüft. Die sind alle richtig herum drinnen. Kurzschluss konnte ich bis jetzt auch nicht feststellen. Beim Löten der schaltung hab ich aber zuerst einen Fehler gemacht. Ich hab die Ports am Atmega32 und meinen 8 LEDs über ein Flachbandkabel verbunden. Bei den Wannensteckern hab ich den einen Spiegelverkehrt verlötet. Aber ich glaub nicht, dass das was gemacht hat, den immherin sind da ja überall 1kOhm widerstände und Dioden.

Mich macht die Spannung an den Ports eben immer verrückt. da Messe ich immer 5 V und die LEDs leuchten nicht und die Spannung an den Ports varriert nicht wie sie eigentlich sollte. Ich löte morgen meine LED Schaltung nochmal auseinander und dann schau ich mal Port für Port an, ob da angeschlossene LEDs leuchten.

AlKI
12.01.2008, 10:18
tausch mal bei einer der LEDs die nicht tun, den Widerstand gegen einen mit 470 bis 270Ohm aus. und dann guck mal, ob die LED das tut, was sie sollte

(die LED will etwa 1,5 bis 2V, d.h. dass an dem 1k Widerstand 3 bis 3,5V abfallen sollten. bei 3,5V und 1kOhm fließen 3,5mA. das kann einigen LEDs grad so noch reichen, anderen grad so nicht mehr)

pmaler
12.01.2008, 10:41
Noch ein kleiner Hinweis, der mich 2 Tage kostete.

Mein Rechner hat im BIOS 4! verschíedene Möglichkeiten die LPT anzusprechen / einzustellen.

ECP, EPP, BiDirectional und "Normal"

Erst als ich "Normal" einstellte, benahm sich der Parallel-Progger "Normal"

Martin.
12.01.2008, 11:26
Danke für den Hinweis pmaler. Ich glaub aber nicht, dass es am Progger liegt, den bei Pin0 , 1, 6, 7 funktioniert es ja auch. nur nicht bei 2,3,4,5. Des mit dem Vorwiderstand probier ich gleich aus.

pmaler
12.01.2008, 14:05
So wars auch bei mir. Ich schrieb es nur, damit jemand auch auf die Idee kommt da mal nachzusehen.

Wie gesagt... Mich hatte es 2 Tage Sucherei gekostet. Der Progger ging mal, mal nicht usw. Der hässlichste Fehler, der auftreten kann und man an der Funktion des Rechners und eigenen Gehirns zweifelt.

Andy91
13.01.2008, 11:12
Tausch mal einfach die LEDs gegeneinander aus!! Es könnte ja sein, dass die LEDs selber nicht funktionieren......

Hubert.G
13.01.2008, 11:29
Also wenn ich mir das so ansehe dann würde ich sagen du hast den JTAG in den Fuses nicht disabled. Der blockiert dir natürlich genau diese 4 Ports.

Martin.
13.01.2008, 12:02
Stimmt Hubert! Das war die Lösung. Da wär ich nie drauf gekommen. Nur gut dass man solche Fehler nicht zweimal macht!