Hallo zusammen,,
ich hab nen kleines programm geschrieben weil ich nicht alle bauteile
hatte nen servotester analog mit nem 555 aufzubauen.
und da ich eh nur 2 zustände (ein und aus) brauche habe ich mir gedacht
das geht doch sicher fix mit nem chip.
mit _wait_ms() ein signal erzeugen was alle 22ms entweder nen 1ms oder
2ms puls ereugt...
attyny2313's hatte ich auch noch nen paar rumfliegen.
also schaltung gelötet, surcecode geschrieben, und dann hat avr-studio
das nicht übersetzt in ne hex
ob der surcecode richtig ist weis ich nicht aber da wir in der fh gerade
mit nem 89c5131 programieren vermute ich das die befehle sehr ähnlich
wenn nicht gleich sind...
jetzt bin ich mir unsicher woran es liegt, da es mehrere sachen sein
können
inkompatibilität mit vista ?
fehlerhafter surcecode ?
fehlerhafte/fehlende einstellungen ? hatte eigendlich nichts eingestellt
...
hm was könnte es noch sein
installiert sind:
-WIN-AVR
-AVR-Studio 4.14
-Vista 64bit
-MySmartUSB
ich habe die schaltung getestet mit dem MySmartUSB ISP funktioniert und
der tiny wird auch richtig erkannt.
fuse bits hatte ich noch nicht ausgelesen aber der ist im
auslieferungszustand (internal clock) ? kp...
joa vieleicht könnt ihr mir schnell weiterhelfen, das währe echt kuhl
viele grüße alexander
ach ich habe nen screenshot von avr-studio angehängt und der surcecode
Joachim Brecht wrote:
> ob der surcecode richtig ist weis ich nicht aber da wir in der fh gerade> mit nem 89c5131 programieren vermute ich das die befehle sehr ähnlich> wenn nicht gleich sind...
Tolle Logik. Und wenn ihr in der FH grad PC-Technik gehabt hättet, dann
hätte der Tiny2313 sicherlich auch einen 3D-Grafikprozessor drin. ;-)
Nö. Das sind beides Microcontroller, und als solche sind sie sich
irgendwie ähnlich, aber allein schon der verwendete Compiler erzwingt
eine andere Art mit Portpins umzugehen.
Fang mal mit dem hiesigen AVR GCC Tutorial an. Ohne mindestens minimale
Kenntnisse im Umgang mit AVRs in C/WinAVR ist dieser Versuch hier
sinnlos.
hab ich versucht.... wenn ich 3 tagen intensives studium des gcc
tutorials veranschlage wird das machbar sein.
ich brauche so schnell es geht ein funktionierendes programm da damit
der Bruschless-DC motor einer cnc angesteuert wird und ich die besser
gestern laufen haben muss...
das ich um sauber zu programieren noch einiges lernen muss ist mir klar
lol...
ich brauche zB ein beispielprogramm für den Tiny oder ähnliches.
durch vergleichen und analysieren eines surcecodes kann ich schneller
lernen als 1000000000 seiten text zu lesen...
also praktische hilfe ist gefragt !
ich möchte wissen welche schritte ich machen muss damit ich mein
geschriebenen surcecode in eine hex übersetzen kann !
wenn der surcecode falsch währe hätte avr-studio sicherlich gemeckert...
zudem habe ich schon programme geschrieben die auch funktionieren
allerdings auf dem alten PC XP 32bit, Bascom
die laufen auch wie zB die auswertung eines RC signals.... und steuerung
von funktionen....
das zeugs von der FH muss ich leider sagen funktioniert leider im
gegensatz zu dem tiny kack hier .....
da ich auf bascom kein bock mehr habe und auch besser c-programieren
kann will ich das jetzt mit c machen.... aber das ist MEGA frustrierend
wenn garnichts klappt....
Aber du hast dir wenigstens das Inhaltsverzeichnis des Tutorials hier
angeschaut? Das ist nichtmal eine Seite und bereits im oberen Drittel
findet man das hier:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Zugriff_auf_IO-Ports
Ein klein wenig tiefer findet man das hier:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Die_Timer.2FCounter_des_AVR
Das ist eigentlich alles was man benötigt. Wenn du wie du bereits
mehrfach erwähntest bereis C programmieren kannst und etwas Erfahrung
mit AVRs hast, zwingt dich ja keiner das Tutorial ganz zu lesen.
Beispielcode ist übrigens im Tutorial enthalten, das zu einem Programm
zusammenfrickeln musst du aber schon selber....
> Build:> make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x4217b3)> Build succeeded with 0 Warnings...
Da ist das make wohl dermassen abgek...t, dass es nicht einmal mehr in
der Lage war, eine Fehlermeldung auszugeben. Den (fehlerhaften)
Quellcode hat sich der Compiler an dieser Stelle noch nicht einmal
angeschaut.
Du musst also erst einmal versuchen, die Tools auf deinem Vista64 so zu
installieren, dass sie keine Exceptions mehr auslösen. Viel Spaß dabei
;-)
Zum Quellcode:
Die Ports werden auf dem AVR ganz anders angesprochen, s. Link von
Hmm...
_wait_ms heißt in der AVR-Libc _delay_ms. Dazu musst du
<util/delay.h> includen und die Optimierung des Compilers einschalten.
Bist du dir eigentlich sicher, dass dein BLDC-Servomotor angesteuert
wird wie ein Modellbauservo?
Wenn ja, kannst du ja mal auf meiner Hompage gucken, hier:
http://modellbau.bug-soft.net/index.php?cat=et&art=servotester .
Da ist ein einfachst-Servotester realisiert. Allerdings mit Timer und
nicht mit diesem delay-murks. Ich habe übrigens auch Vista 64 Bit und
WinAVR lief bei mir am Anfang auch nicht. Ich weiß nicht obs
mittlerweile schon ne neue Version gibt, aber so lange isses noch niucht
her, dass ich die runtergeladen habe. Es gibt jedoch einen
(inoffiziellen) Patch, der Abhilfe schafft:
http://www.madwizard.org/electronics/articles/winavrvista
Nachdem ich den installiert hatte, lief alles wie geschmiert.
erstmal vielen dank an die hilfreichen antworter,
ja ich habe mir schon gedacht das es an vista64 liegt....
wir hatten mit dem 89c5131 ein ähnliches problem das atmel keine vista64
bit treiber zur verfügung stellt...
nunja ich hatte das in dem fall durch nen alten ISA slot embedded pc mit
266mhz gelöst... ich werde wohl mein laptop wieder auf XP 32 bit
umrüsten damit die ganze kacke wieder läuft.... naja da muss ich als
erstes den hebel ansetzen.
ich glaube es ist besser (nicht einfacher) den laptop auf 32 bit zu
machen damit man beide systeme hat 32 und 64 bit (PC)....
ich hab bis jetzt alles zum laufen bekommen außer diesen atmel kack
immer... nunja vieleicht muss ich einfach nur warten bis irgendwann mal
nen update kommt lol
dabei hat microsoft den firmen lange vor markteinführung von vista schon
test systeme zur verfügung gestellt damit die firmen treiber entwickeln
können... schade das manche firmen das verpennt haben...
> Bist du dir eigentlich sicher, dass dein BLDC-Servomotor angesteuert> wird wie ein Modellbauservo?
ja der BLDC motor wird wie ein servo angesteuert, da sie alle die
gleichen signale von den empfängern bekommen.
T=22,5ms Tsignal=1-2ms ( 1ms=-100% 1,5ms=0% 2ms=+100% )
die frässpindel läuft auch soweit und bei 16V und ca 8A also rund 130W
rockt die mit 3mm zustellung und nem 6mm fräser durch alu... hab ich
heut mal getestet.
> _wait_ms heißt in der AVR-Libc _delay_ms. Dazu musst du> <util/delay.h> includen
ja das mit dem _delay_ms() hatte ich auch schon herausgefunden nur das
mit der zu includenden datei wusste ich nicht das werde ich dann
berücksichtigen.
> und die Optimierung des Compilers einschalten.
wie und wo ?
gruß alex
Joachim Brecht wrote:
> fehlerhafter surcecode ?
Ja, deshalb auch die Fehlermeldungen.
>
1
>#include<avr/io.h>
2
>
3
>intmain(void)
4
>{
5
>while(1)
6
>{
7
>if(P0_D5==0)
8
>
P0_D5 kannste voll knicken.
Hint: Die h-Files sind Textdateien, man kann darin lesen!
Und was nicht drinsteht, muß man selber definieren.
Ein Blick ins Datenblatt verrät, beim AVR heißen die Ports nicht
P0,1,2,3, sondern PORTA,B,C,D usw.
Und außerdem sind im io.h die Portpins (noch) nicht als Bitvariablen
deklariert, das muß man daher selber machen:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=67368
Und bei den AVR-Ports unterscheidet man PORTx, DDRx und PINx.
Peter
@ Peter Dannegger
jo kuhl das hilft mir ein bischen weiter, immerhin wusste ich bis dato
noch garnichts davon wie man einen avr über c ansteuert. in der fh
c-programieren ist das eine aber das in der praxis anzuwenden ist was
anderes...
also anstatt P0_D5 für einen eingang dann PIND5
oder
ausgang P0_D4 dann PORTD4
sehe ich das richtig ?
nur mal so aus neugier wo finde ich die *.h datein ?
das heist also ich kann den port d mit PORTD nur als byte ansprechen
dann müsste es doch gehen wenn ich dem PODTD für ausgang 4 den wert 01h
setze und zum ausschalten wieder 00h
und den PINB nehme dann und dann über 20h abfrage also bit 5
ich vermute mal das PINx und PORTx aufem gleichen port nicht gehen
@ Peter Stegemann
ja nur mal soviel man bekommt ne kiste mit nem board in die hand
gedrückt, dort ist ne anleitung bei wie man den chip in betrieb nimmt...
zudem gibt es fertige funktionen mitgeliefert für LCD RS232 ect.
woher soll das wissen kommen was du meinst lol... richtig lernen werde
ich es wohl erst wenn man praktisch damit arbeitet...
daher versuche ich mir im vorfeld schon ein bischen wissen anzueignen.
groß rummeckern ist einfach, aber mal was gegen diese zustände zu tun
wird auch nicht gemacht.... alle labern immer nur.... meinste uns
studenten kotzt das nicht mindestens genauso an wenn man mit
lehrmaterial von ano 1970 arbeiten muss, naja nen paar neuere geräte
haben sie schon angeschafft. ich kan eh nix ändern drann darum mache ich
die ausbildung fertig und such mir nen job.
an der fh läuft seit 10 jahren ein antrag über moderniesierungen... der
jetzt so langsam umgesetzt wird... ich habe zum tbeispiel zuhause nen
ozzi rumstehen was usb hat und auf nen usb-stik gleich die messwerte
sowie nen screenshot speichern kann... in der fh haben die nur welche
mit disketten lol oder drucker anschluss
zudem studiere ich energietechnik und ich glaube in meinem berufsfeld
werde ich ic-programieren eher weniger zu tun haben... ma schaun nech
magst du auch begründen warum der ansatz mager ausfallen wird ?
oder lässt du mich dumm sterben ?
Joachim Brecht wrote:
> @ Peter Stegemann> ja nur mal soviel man bekommt ne kiste mit nem board in die hand> gedrückt, dort ist ne anleitung bei wie man den chip in betrieb nimmt...>> zudem gibt es fertige funktionen mitgeliefert für LCD RS232 ect.>> woher soll das wissen kommen was du meinst lol... richtig lernen werde> ich es wohl erst wenn man praktisch damit arbeitet...
Das ist schon eine Menge mehr, als du im Job mal haben wirst. Und dein
Chef wird dann bestimmt nicht warten, bis dir jemand in einem Forum
erklaert hat, was du zu machen hast... "sieh zu wie du klar kommst." ist
hier die Devise.
> an der fh läuft seit 10 jahren ein antrag über moderniesierungen... der> jetzt so langsam umgesetzt wird... ich habe zum tbeispiel zuhause nen> ozzi rumstehen was usb hat und auf nen usb-stik gleich die messwerte> sowie nen screenshot speichern kann... in der fh haben die nur welche> mit disketten lol oder drucker anschluss
Besser man lernt es an der FH mit dem Schrott und hat im Job dann die
tollen Tools, als andersrum. Aber keine Angst, auch im Job wirst du mit
altem Schrott arbeiten muessen.
> magst du auch begründen warum der ansatz mager ausfallen wird?>> oder lässt du mich dumm sterben?
Ich bezweifle, dass das Timing so sehr sauber ausfallen wird. Ich kann
mich natuerlich taeuschen, aber ich wuerde das mit einem Timer machen.
Joachim Brecht wrote:
> also anstatt P0_D5 für einen eingang dann PIND5> oder> ausgang P0_D4 dann PORTD4>> sehe ich das richtig ?
Im Prinzip ja, mußt aber "PIND5" erstmal entsprechend definieren.
> nur mal so aus neugier wo finde ich die *.h datein ?
In Deiner WINAVR-Installation, z.B. bei mir ist das:
D:\AVR\winavr\avr\include
> das heist also ich kann den port d mit PORTD nur als byte ansprechen
Jain.
Du kannst Bitvariablen definieren (siehe obigen Link) und dann einzelne
Pins ansprechen.
Ich mache das so, weil es sehr übersichtlich ist.
Oftmals haben ja die einzelnen Pins verschiedene Funktionen.
Hier mal ein Beispiel mit einzelnen Pins:
http://www.mikrocontroller.net/attachment/30300/lcd_drv.zip> ich vermute mal das PINx und PORTx aufem gleichen port nicht gehen
Warum denn nicht?
Na klar kannst Du jeden Pin unabhängig benutzen.
Peter