PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu erster Programmierung mit Bascom Programmer



Basteltisch
06.09.2009, 20:44
Hallo zusammen,
zunächsteinmal möchte ich mich dafür entschuldigen, dass ich trotz der vielen existierenden Threads zu diesem Thema einen neuen aufmache, aber leider konnte ich an den anderen Threads keine Lösung finden.

Ich kann auch verstehen wenn ihr sauer seid dass nach 4 Jahren in diesem Forum immernoch Anfänger dieses Problem haben, jedoch:

Mein AVR ISP Programmer gibt nichts zurück.

Ich habe einen ATMEGA32 dort angeschlossen, als Programmer benutze ich den hier:
http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=161
also den Bascom eigenen.

Installiert ist die software in der Version 1.11.8.7 auf einem WindowsXP System mit allen nötigen Treibern.

In Bascom ausgewählt ist der USB ISP Programmer.
Als chip ist der ATMEGA32 eingestellt.

Ich habe mich zunächst an folgendem orientiert:
http://www.rn-wissen.de/images/c/cf/Avrtutorial_grundschaltung_mitisp.gif

(ich gehe mal davon aus das die seite mit den ungeraden Zahlen die auf dem Wannenstecker ist die diese Einbuchtung hat , stimmt das so?)

Wenn ich nun das Programm übertrage kommt kein Fehler mehr ( :) ), der Chip wird korrekt erkannt und das Tutorial:

http://www.rn-wissen.de/index.php/Bascom_-_Erstes_Programm_in_den_AVR_Controller_%C3%BCbertr agen

bin ich auch durch gegangen.
Das einzige Problem ist nun: Ich finde einfach keinen COMport auf dem der USB Programmierer arbeitet und dem Terminal Programm Daten zurück gibt. Das konnte ich auch nirgendwo einstellen.
Weiss jemand Rat?

Es grüßt,
Basteltisch

edit: oh entschuldigung, der code:


$prog &HFF , &HE1 , &H99 , &H00 ' generated. Take care that the chip supports all fuse bytes. $regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000
$baud = 9600
Do
Print "**** RN-CONTROL sagt Hello World *****"
Wait 1
Loop

guenter1604
06.09.2009, 21:09
Hallo Bastelfisch,

um Daten mit dem Computer auszutauschen brauchst du eine extra Verbindung zw. ATMega und PC!
Der Programmieradaper ist nur zum programmieren da. Für deine Zwecke muß an den Pins 14 und 15 ein WandlerIC wie der MAX232 angeschlossen werden, welcher wiederum mit der seriellen Schnittstelle deines PCs verbunden wird.

Gruß Günter

MelMan
07.09.2009, 11:36
Brauchst dich glaub ich nicht dafür entschuldigen dass du ein Anfänger bist und Probleme hast. Anfänger wird es immer geben und ich denke jeder von uns hat mal klein angefangen oder O:) .

Schau mal hier http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht unter dem Punkt Daten und Texte zum PC übertragen, da ist das eig. sehr gut erklärt.

Basteltisch
07.09.2009, 18:49
Hallo,
ok ich sehe das war auch nur für das RN Control. Nun hab ich den Quellcode aus der Grundschaltung genommen und es hat fleissig geblinkt :)

aber nun will es nichtmehr programmiert werden :(

es kommt wieder der Fehler den ich vorher auch immer hatte, Could not Identify Chip FFFFFFF

Der selbe Fehler kommt wenn man garnichts ansteckt, also muss ein Fehler in der Elektronik vorliegen. ABER: ich habe nichts verändert. ich habe auch den Chip einmal ausgetauscht, jedoch funktioniert es noch immer nicht. Gibt es einen Standart Analyseweg den man gehen kann um dieses Problem zu lösen?
Ich hab den Programmierer auch nochmal neu auf dem Steckbrett verkabelt, erfolglos.

Die Schaltung hat bereits funktioniert und wurde nicht verändert.
Was kann man da falsch machen? Funktioniert der USB Programmer nur für eine einzige Programmierung?
Es grüßt,
Basteltisch

guenter1604
07.09.2009, 19:14
Nein aber es könnte sein, daß du Fusebits gesetzt hast. Dort kann man dem Käfer z.B sagen, daß der Lebenswichtige Oszillator nicht intern sonder extern ist. Dann müstest du auch außen einen Quarz anschliessen, damit er wieder ansprechbar ist.

Basteltisch
07.09.2009, 21:22
Hallo,
also einen Quarz habe ich sogar hier. Aber ich vermute gerade das es schlicht an einem nicht funktionierenden Kontakt lag, da ich als ich den schon Programmierten Chip wieder eingesetzt habe, ich ihn erstmal etwas mit druck nach unten drücken musste damit die LED blinkte. aus dieser Position drückte er sich allerdings auch von selbst wieder hoch. Dann habe ich ein bisschen an den Kontakten rumgebogen und wollte gerade testen ob er wieder erkannt wird, da ist mir mein Wannensteckerklebeklumpen auseinander gefallen. Nun muss ich erstmal einen neuen Wannenstecker zurechtbiegen. Da hatte ich sogar noch einen den ich direkt eingebaut habe. Jedoch habe ich nun gemerkt: Sobald ich das Kabel einstecke wird der Reset ausgelöst (siehe Schaltung oben), das war vorher nicht so. Was kann denn da schief laufen das plötzlich der Reset ausgelöst wird?

und:
Muss ich am Wannenstecker GND und VCC verbinden oder sind die nur zur Spannungsversorgung durch den Programmer da?

Es grüßt,
Basteltisch

Basteltisch
09.09.2009, 23:06
Hallo,
so nun hab ich ein paar Sachen herausgefunden:
Wenn der AVR ständig resettet dann muss der Programmer mit Strom versorgt werden damit er damit aufhöhrt.
Einige Steckbretter sind von der Form her nicht kompatibel zum ab Werk Pinabstand einer AVRs. Da muss man dann ein bisschen rumbiegen was Probleme mit der Konnektivität lösen kann.

Aber eine Frage hab ich noch, oder eher in Phänomen.

Habe folgendes Programm:


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

Config Portc.0 = Output

Config Pina.7 = Input

Do
If Pina.7 = 1 Then 'wenn keine Spannung anliegt
Portc.0 = 1 'keine Spannung an LED Port geben
Else
Portc.0 = 0 'spannung an lED
End If

Loop

End


Programm wurde erfolgreich an den AVR gebracht. Nun ist das Problem folgendes:

Wenn ich an Pin 7.1 ein Kabel anschliesse (aufm Steckbrett anschliesse) und das Ende des Kabels einfach in die Luft hänge und mit dem Finger dagegen Tippe, dann wird auf Portc.0 die manschmal Spannung durchgelassen, ab und zu mal nicht, und das hällt sich in einem Dauerzustand. Das heisst es blinkt ohne Kontrolle, ausgelöst durch mein drauftippen, aber nicht regelmässig, also nicht immer dann wenn ich draufdrücke.

1 Frage: Wieso bin ich GND?
2 Frage: Wie kann ich das PRoblem beheben? In der Ursprünglichen Schaltung sollte an diese Stelle ein Schalter. wenn ich so einen Anschliesse wird beim drücken des Schalters die LED ein wenig heller, aber es ändert nichts daran das sie an ist.

Habe das mit 2 Unterschiedlichen AVRs ausprobiert (einen hab ich mal ausversehen unter 7,2V Spannung gelegt, aber beide machen das selbe)

Es grüßt,
Basteltisch

Sauerbruch
10.09.2009, 00:43
1 Frage: Wieso bin ich GND?

Du bist zwar nicht GND, aber die Eingänge des AVR sind extrem hochohmig. Und das führt dazu, dass jedes kleine Stück Kabel (und erst recht, wenn man es mit der Hand berührt) eine kräftige 50Hz-Störstrahlung einfängt. Und das führt zu ziemlich unkontrollierten Zuständen an den Eingangspins.

Des Lösels Rätsung heißt PullUp-Widerstand. Du musst ihn noch nichtmal hardwaremäßig anlöten, weil jeder I/O-Pin des Controllers einen eingebauten PullUp-Widerstand besitzt. Den muss man allerdings aktivieren, indem man das dazugehörige PORT-Register auf 1 setzt. In Deinem Beispiel sähe das etwa so aus:

Config PINA.7 = Input
PORTA.7 = 1

Do
...
...
Loop

Dann müsste es gehen!

Basteltisch
10.09.2009, 18:54
Hallo,
oh danke das funktioniert.

Aber wieso?
Wenn ich den Internen Widerstand aktiviere, dann gibt es eine geringere Spannung auf dem Port.
Und genau dieser Zustand, also ob wenig Spannung auf dem Port ist fragt man ja mit
If Pina.7 = 1 Then
ab.

Wenn es nun keinen Widerstand gäbe der die Leitung komplett unterbricht, wo würde man denn dann zwischen Pina.7 = 1 und = 0 unterschieden?

Es grüßt,
Basteltisch

Sauerbruch
10.09.2009, 19:47
Also: Wenn nur (!) der PullUp-Widerstand angeschlossen ist, liegt am Pin nicht nur eine geringe Spannung an, sondern genau 5 Volt (bzw. die Betriebsspannung). Demzufolge hast Du vollkommen Recht, dass in diesem (unbeschalteten) Zustand PINB.7 immer 1 ist.
Wenn Du diesen Pin jetzt aber von außen auf GND legst (über einen Taster, oder aber auch über den Ausgang eines anderen Logik-ICs, der gerade LOW ist), "überstimmt" diese Erdung den PullUp-Widerstand sozusagen, und der Pin geht auf LOW. PINB.7 ist dann 0. Und weil der PullUp-Widerstand sehr hochohmig ist, fließen durch diese "Erdung" nur ein paar Mikroampere.

Ein I/O-Pin ohne jede Beschaltung flattert vollkommen unkontrolliert zwischen High und Low hin- und her. Man muss also dafür Sorge tragen, dass er nur die kontrollierten Zustände HIGH oder LOW annimmt. Und wenn Du einen Taster nach GND hast, muss irgendetwas den Pin auf High ziehen, wenn der Taster geöffnet ist.

Deshalb gehen auf allen Experimentierboards die Taster auch immer nach Masse - und nicht nach +5V :-)