Archiv verlassen und diese Seite im Standarddesign anzeigen : ATmega32/Servoprogramm
easyprivate
14.11.2008, 20:19
Moin.... Komme einfach nicht weiter hier... Habe euch mal ein Desktopfoto gemacht,hoffe ihr wisst so was ich meine...
http://img236.imageshack.us/img236/2682/bascomproblem1qq3.jpg (http://imageshack.us)
Folgendes Problem....:
1.Ich weiß nicht ob das Programm so funktionieren kann....
2.Kriege die Daten nicht auf den Chip übertragen und weiß nicht warum...
Das Programm "findet die Datei nicht".... Habe meiner Meinung nach den richtigen Chip (ATmega32) ausgewählt und die Quarzzahl (16000)richtig "benannt"... COM-Schnittstelle stimmt auch sowie die Bautrate...
Man,man,man.... Kann vielleicht jemand helfen? :-({|=
radbruch
14.11.2008, 20:25
Könnte es daran liegen das 16MHz eine Zahl mit 6 Nullen ist?
$crystal = 16000000
Außerdem ist es besser den Quellcode eines Programmes und die Fehlermeldungen beim Kompilieren in Code-Tags zu posten...
easyprivate
14.11.2008, 21:08
Da ich Neuling bin habe ich einfach die Zahl auf dem bauteil genommen... Und da steht nur 16000 ohne irgend eine HertzEinheit.... Aber auch daran liegt es nicht.... *grübel*
hexabotix
14.11.2008, 21:14
Respekt für die harte handbuchlose Tour!
Dein Programm möchte wohl in etwa so aussehen:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 32
$framesize = 32
$swstack = 32
Config Servos = 1 , Servo1 = PORTA.7 , Reload = 10
Config PORTA = Output
Enable Interrupts
Do
Servo(1) = 100
Wait 1
Servo(1) = 150
Wait 1
Servo(1) = 200
Wait 1
Loop
End
Ohne Gewähr!
Nur vor dem Servo(1)=100 kommt ein DO
Und unten kommt kein do loop sondern nur ein Loop.
Gento
radbruch
14.11.2008, 21:25
Tja, das wäre auch zu einfach gewesen :(
Da ich nicht so wirklich der Bascom-Profi bin kann ich auch nur etwas mehr als raten:
- Waitms 1000 'ohne =
- Das erste do ist zuviel
Werden nach diesen Änderungen noch Fehler beim Kompilieren gemeldet?
Gruß
mic
easyprivate
14.11.2008, 23:31
Ahhhhh,wir kommen der Sache näher ;-)
Also mit dem Code hier lässt sich das Programm kompilieren und simulieren....
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 32
$framesize = 32
$swstack = 32
Config Servos = 1 , Servo1 = PORTA.7 , Reload = 10
Config PORTA = Output
Enable Interrupts
Do
Servo(1) = 100
Waitms 1000
Servo(1) = 150
Waitms 1000
Servo(1) = 200
Waitms 1000
Loop
End
Wenn ich jetzt auf Program-->Send to Chip klicke kommt folgende Fehlermeldung....:
Could not Identify Chip with ID:FFFFFFF
Meine aber das trotzdem etwas gesendet wurde weil im "Sample electronics AVR programmer"Fenster steht...: Programmed:2
??????????
Wie kann ich denn sehen ob ein Programm/welches Programm sich auf dem Chip befindet?
Der Begriff "Could not Identify Chip " bringt unter Suchen alleine hier im Forum , über 100 Themen des Problems zutage.
Sollen wird das zum hundertfünfzehntenmal erklären , oder magst du lieber selber vorerst suchen & nachlesen ?
lg
Gento
easyprivate
15.11.2008, 13:32
Da gebe ich völlig recht.... Hab jetzt 3Stunden gewurschtelt aber komme nicht weiter...
- Habe alle Baudraten probiert (jedesmal geändert im progcode,imBascomAVR und in der Schnittstelle am PC selber)
- Dann habe ich noch gelesen das man einen Bootloader braucht... Habe das RN-Control,da ist das doch vorprogrammiert oder nicht?
- Liegts vielleicht an der Hardware? Habe das Board über das mitgelieferte RS232 Kabel am PC angeschlossen (COM1)
easyprivate
15.11.2008, 13:57
Glaube ich habe den Fehler selbst gefunden.... zeimlich blöder Fehler.... Habe das RS232Kabel direkt an den PC angeschlossen (COM1-Schnittstelle),mir fehlt aber der passende Dongle.............!!!!!!!!!!!!!!!!!!!!!!!!!!
Könnte es daran liegen? :-k
Die Meldung :Wenn ich jetzt auf Program-->Send to Chip klicke kommt folgende Fehlermeldung....:
Could not Identify Chip with ID:FFFFFFF
Deutet darauf hin das Du nicht den Bootlader benutzt.
Dem Bootloader ist egal welcher Chip was bekommt, oder am Kabel hängt.
Nebenbei ist ein Dongel ein Softwarecopierschutz und nicht nur ein Stecker.
Bascom>Options>Programmer>was ist dort als Programmer angegeben ?
lg Gento
easyprivate
16.11.2008, 01:03
Das ganze sieht so aus....
http://img374.imageshack.us/img374/4670/unbenanntgj8.jpg (http://imageshack.us)
http://img374.imageshack.us/img374/unbenanntgj8.jpg/1/w508.png (http://g.imageshack.us/img374/unbenanntgj8.jpg/1/)
Achso,ich dachte man braucht den Dongle für die Kommunikation ansich....[/img]
LPT 378 = Druckerparrallelport mit 25 Pin.
Du brauchst eine isp Programmer wie z.b. hier:http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&rd=1&item=140273652449&ssPageName=STRK:MEWA:IT&ih=004
Falls Dein Rechner noch einen solchen Anschluss hat.
Gento
easyprivate
27.11.2008, 00:05
So liebe Forengemeinde...
Habe mir den Dongle besorgt! Habe jetzt auch mehrmals alles so gemacht wie es in der Anleitung "Bascom-Erstes Programm in den AVR übertragen" steht. Immer noch ohne Erfolg....
Wenn ich den Programmer öffne (nach dem kompilieren) und auf das grüne "Chipsymbol" klicke passiert garnichts.......!!! Keine Fehlermeldung,kein "OK",kein nichts... Störquellen durch Stromversorgungskabel etc sind ausgeschlossen....
Hat noch jemand eine Idee? ](*,)
Schon mal STK200/STK300 als Programmer eingestellt ?
Gento
stefan_Z
27.11.2008, 13:58
- Die MHz sind erstmal egal.. das Programm läuft halt dann nicht so wie gedacht (zumindest die WAIT-Teile), aber es geht.
- Waitms 1000 geht glaubich nicht, da muss man Wait 1 nehmen
- DO LOOP muss UM die Schleife, nicht dahinter!
easyprivate
27.11.2008, 16:49
klar, stk200/stk300 ist eingestellt,alles andere was man einstellen soll auch....
aber das programm läuft doch auch im simulator,hat es denn was damit zu tun das er das programm nicht überträgt???????
Ein Fehler, der bei mir am Anfang oft Stress gemacht hat:
Im BIOS des PC lässt sich für den Druckerport ein Modus einstellen; bei mir war der Anfangs auf ECP; nach dem Umstellen auf Standard gings dann. Evtl liegts daran.
(Programmer und AVR sind schon mit Strom versorgt?)
easyprivate
30.11.2008, 22:45
Bin euch allen sehr für eure Hilfe dankbar,nur leider war bisher alles ohne Erfolg.......
Würde mir evtl ein ISP-USB Dongle helfen?
easyprivate
07.12.2008, 00:05
...bzw fällt dann auch automatisch die Fehlerquelle "could not identify....." weg?
Es würde etwas helfen, wenn du noch 'mal postest:
- Welches Board hast du genau?
- Welchen Programmer/Dongle hast du gekauft?
- Was steht im Hardware-Manager bei der parallelen Schnittstelle (wenn du die denn benutzt, speziell bei der Hardware-Adresse)?
Gruß Dirk
easyprivate
07.12.2008, 16:12
Hallo Dirk!
Also benutze das RN-Control mit nem Atmega32... Habe diesen Dongle hier gekauft:http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&rd=1&item=140273652449&ssPageName=STRK:MEWA:IT&ih=004
Zudem benutze ich den Druckerport LPT1 Ort: PCI-BUS einstellungen sehen so aus... http://img241.imageshack.us/my.php?image=unbenanntwb4.jpg
1) Im Bios vom Rechner die Druckerportdresse ermitteln und merken. z.B 3BC
2) Auf Output Only setzen.Das reicht
3)Systemsteuerung>System>Hardware>Geräte-Manager>LPT1>Eigenschaften>Ressoursen überprüfen ob 3BC drin steht.
4)Die Einstellungen im Bascom siehe Bild.
http://www.Gento.de/Programmer.gif
5) Eingestellt sein muß die Portadresse aus dem Bios.
6)Ich habe auch gleichen Programmer aus Ebay und der sollte gehen.
Gento
Gento hat schon das Wesentliche geschrieben.
Wenn das auch nicht klappt, würde ich noch das Flachkabel vom Programmer zum ISP-Stecker prüfen. Belegung standard? Stecker richtigrum aufgequetscht?
Gruß Dirk
easyprivate
08.12.2008, 16:17
soooo... habe es ausprobiert,seperat auch nochmal mit "378" als einstellung und "3BC", auch ein anderes Flachbandkabel habe ich genommen,habe auch mal eins probiert und es falsch herum aufgequetscht.... Alles ohne Erfolg....
USB-Dongle zu Weihnachten schenken lassen?
Hallo easyprivate,
... habe es ausprobiert,seperat auch nochmal mit "378" als einstellung und "3BC"
Es macht keinen Sinn, verschiedene Adressen (378, 3BC) nur auszuprobieren. Meine ist z.B. ganz anders: 0A48.
Du must also im Gerätemanager auf "Anschlüsse (COM und LPT)" klicken, dann auf den Eintrag darunter, der "(LPT1)" enthält mit der rechten Maustaste klicken. Im Kontextmenü "Eigenschaften" wählen. Dann erscheint ein Fenster "Eigenschaften von ... (LPT1)".
Da wählst du dann den Reiter "Ressourcen".
Da steht dann die Hardware-Adresse, bei mir steht da: E/A-Bereich 0A48..0A4F.
Den 1. Wert (hier 0A48) übernimmst du in die BASCOM-AVR Options (Reiter "Programmmer") unter "LPT-adress".
Gruß Dirk
easyprivate
08.12.2008, 20:26
das meine ich ja ;-) habe als erstes im bios nachgesehen was da eingestellt war (es war 378)dann habe ich im gerätemanager nachgesehen (dort war es auch 378) dann habe ich 378 in bascom eingestellt,hat nicht geklappt (mehrmals versucht zu übertragen)....
dann habe ich im Bios+Gerätemanager+bascom das ganze auf 3BC gestellt... das meinte ich damit... naja jedenfalls hat alles nicht geklappt... somit habe ich alles ausprobiert was man ausprobieren kann.... ](*,)
Ist ein 0815 Drucker an dem Port unter Windows eingestellt ?
Da war doch mal das es sein muss.
Gento
Panzer4000
09.12.2008, 14:21
Hallo
bevor du weitere Handstände machst und dir noch alle Dongle kaufst stelle doch mal fest, ob dein Atmega 32 dich überhaupt will!
Es sieht so aus, dass der sich nicht flash lässt.
Hast du schon mal ein anderes Programm geflasht ?
Wenn dein Atmega 32 nicht kann, Fuse verstellt dann ist eben sense.
Les doch mal die Fuse aus.
Programmieren,zum Chip senden oder F4
da wirst du erkennen ob dein µC da ist oder ob der überhaupt ansprechbar ist.
mfg
easyprivate
09.12.2008, 14:36
habe den chip von robotikhardware,da ist der schon vorprogrammiert...ist ja auch ein programm drauf (von denen her)...
und woran erkenne ich dann das fuse richtig sind?
easyprivate
13.12.2008, 12:56
ES HAT GEKLAPPT!!!!!!
An dieser Stelle danke ich meinen Eltern,meiner Familie und den fleißigen Helfern des Forums... Ohne euch wäre all das nicht möglich gewesen... Danke! \:D/
Warum es funktioniert...:
-USB/ISP Programmer gekauft
-Treiber installiert
-in Bascom den Programmer eingestellt (USBISPProgrammer)
-klappt
Gruß,Easy
easyprivate
17.12.2008, 13:13
Da das brennen nun funktioniert hänge ich am nächsten Problem,aber da könnt ihr mir sicherlich weiterhelfen ;-)
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 32
$framesize = 32
$swstack = 32
(Problem Anfang)
Config Servos = 18 , Servo1 = PORTA.0 , Servo2 = PORTA.1 , Servo 3 usw usw usw , Reload =10
Config PORTA = Output
Config PORTB = Output
Config PORTC = Output (Problem Ende)
Enable Interrupts
Do
Servo(1) = 100
waitms 1
Servo(1) = 150
waitms 1
Servo(1) = 200
waitms 1
Print "***** UN NOCH ENS *****"
Loop
End
Also mein Problem liegt darin das ich 18 Servos ansteuern möchte... Bin mir aber nicht sicher wie ich das realisiere....
Habe es oben im Code mal probiert,lässt sich so aber nicht kompilieren...
Weiß jemand wies richtig aussehen soll? (roter Bereich)
easyprivate
23.12.2008, 01:41
Niemand ne Idee?
Guten morgen easyprivate,
Du setzt Deinen Servo 1 auf Porta.0, den zweiten auf Porta.1
Soweit so gut (Deine usw weg damit).
Dann aber kommt
Config Porta = Outpu
Config Portb = Output
Config Portc = Output
Das verstehe ich nicht.
Fang doch erst einmal mit nur einem Servo an und steigere Dich dann.
Config Servos = 1 , Servo1 = Porta.0 , Reload = 10
Config Pina.0 = Output
Schliesse diesen ersten Servo an Porta.0 an und Du wirst sehen, dass dann OK ist.
Dann kommt der zweite Servo z.B. an Porta,1
Config Servos = 2 , Servo1 = Porta.0 , Servo2 = Porta.1 , Reload = 10
Config Pina.0 = Output
Config Pina.1 = Output
Auf diese Art steigerst Du Dich und lernst gleichzeitig die Absteuerung der Servos und verstehst dazu noch alles.
Peter
easyprivate
23.12.2008, 15:08
Dein Tipp ist sicher nett gemeint allerdings bin ich soweit schon... Hänge quasi an der Stelle wo ich den neunten Servo ansteuern will...
Also mein Problem liegt darin das ich 18 Servos ansteuern möchte...
Mit Bascoms eingebautem Servo-Befehl gehen nur 14 Servos.
Gruß Dirk
easyprivate
24.12.2008, 05:04
Eingebautem Servobefehl? Wusste ich garnicht... Gibt es darüber etwas zu lesen?
Eingebautem Servobefehl? Wusste ich garnicht... Gibt es darüber etwas zu lesen?
Witzig! :-s
Nachzulesen in der Bascom-Hilfe unter CONFIG SERVOS.
Gruß Dirk [-(
easyprivate
25.12.2008, 00:04
Ach das meinst du,das ganze verwende ich ja.... Mein Problem leigt an der Stelle wo man den ersten Port "abgearbeitet" hat (PortA.0 - PortA.7)...
Man schreibt ja Config PortA = Output... Schön und gut,wenn ich jetzt aber für weitere Servos zb den PortB noch dazu nehmen möchte muss ich
Config PortA = Output
Config PortB = Output schrieben oder nicht? Jedenfalls kommt da der Fehler...
Hoffe ich habe mich einigermaßen verständlich ausgedrückt,weiss nämlich nciht wie ichs besser erklären soll ;-)
Hallo easyprivate,
was kommt den da für ein Fehler?
Du könntest probieren, vom PortB nur die Pins als Ausgang zu definieren, die du wirkllich für die Servos brauchst, und nicht den ganzen Port. Form Z.B.:
Config Pinb.0 = Output
Du solltest dir auch noch 'mal die Doku zum RN-Control ansehen: Nicht alle Pins von allen Ports sind ganz frei verwendbar, sondern teilweise schon für bestimmte Funktionen (I2C-Bus, IRQ-Leitung usw.) vorgesehen. Wenn du z.B. Pinb.0 für ein Servo verwenden willst, müßtest du evtl. das Motortreiber-IC entfernen ...
Gruß Dirk
easyprivate
25.12.2008, 21:59
ok werde ich versuchen... ja das ist mir auch aufgefallen und hat mich ans grübeln gebracht ;-) danke für deine hilfe
easyprivate
26.12.2008, 02:32
Hallo Dirk,
hast mich echt ans grübeln gebracht.... Mache mir gerade eine Liste für welchen Servo ich welchen Port nehme... Wenn man den MotorIC zieht und den ganzen PortA dazu nimmt (komplett frei verfügbar) dann komme ich auf eine verfügbare Anzahl von 14 Pins.... Die Pins für die I2C,RS232 und ISP rühre ich ja nicht an. Die sind ja auch ganz toll beschrieben wofür sie sind... Was ist denn aber mit den Pins:
PORTB.3 - OC0
PORTB.4 - SS
PORTC.2 - TCK
PORTC.3 - TMS
PORTC.4 - TDO
PORTC.5 - TDI
Darf ich die zur Servoansteuerung verwenden oder nicht???
Hoffe du weißt Rat ;-)
Frohes Fest euch allen!!!!!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.