Tredory
21.02.2009, 18:02
Hi, ich bin nun auch endlich mal dazu gekommen mir ein Microcontrollerboard zu Kaufen (Pollin Atmel Evaluations Board V 2.0.1).
Hab bis jetzt erfolgreich ein paar Blinklichter durch ändern des Beispielprogramms das man bei pollin bekommt hinbekommen.
Nun hab ich ein Paar Probleme Eins nach dem anderen:
1.
Ich hab gerade mal ein Servo angehängt, und versuche nun einfach mal sinnlos ein wenig hin und herzufahren ;) hab dazu mal ein kleines Programm erstellt:
$regfile = "m32def.dat" 'definieren des verwendeten Chips
$crystal = 16000000 'definieren des verwendeten externen Quarz (16MHz)
Ddrd = &B11100000 'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
Portd = &B00000000 'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
Config Portb = Output
Declare Sub Beep(byval Verz As Integer , Byval Anz As Integer)
Dim I As Integer
Enable Interrupts
Call Beep(1 , 200)
Waitms 150
Call Beep(1 , 30)
Waitms 150
Call Beep(1 , 30)
Waitms 150
Call Beep(1 , 30)
Waitms 150
Call Beep(1 , 200)
Waitms 1000
Do 'Anfang der Schleife
Goto Servolauf
Waitms 100
Loop 'zum Anfang der Schleife
Sub Beep(byval Verz As Integer , Byval Anz As Integer)
For I = 0 To Anz
Portd.7 = 1
Waitms Verz
Portd.7 = 0
Waitms Verz
Next I
End Sub
Servolauf:
Portd.5 = 1
For I = 50 To 150
Servo(1) = I
Waitms 2
Next I
Portd.5 = 0
Portd.6 = 1
For I = 150 To 50 Step -1
Servo(1) = I
Waitms 2
Next I
Portd.6 = 0
Servo(1) = 50
Return
Was mir dabei jetzt auffällt, erstens ich habe jetzt ein wenig rumprobiert um einigermaßen die anschläge des Servos zu erwischen, aber wie bekommt man da denn die genauen werte, 50 und 150 habe ich jetzt aus dem RN Artikel Servos übernommen, aber damit fährt er nicht genau auf die endpositionen. Links versucht er weiter zu fahren wie er kann, und rechts fährter nicht weit genug ?
Zweitens ich hab das Programm jetzt im controller, was ich nicht verstehe ist er piept bei jedem programmdurchlauf wieder, das sollte er eigendlich nur ein mal am anfang machen, normal sollte doch dann nurnoch das wiederhohlt werden was in der Do Loop schleife steht oder nicht ?
Das piepen steht vor der do loop schleife, warum wird das trotzdem bei jedem durchgang wieder ausgeführt ??
2.
Kennt sich jemand mit dem Pollin Board aus ? ich habe das gefühl das mit den tastern irgendwas faul ist, in der regel funktionieren die wohl aber ab und zu erkennt er einfach mal einen anderen taster oder reagiert garnicht auf den Tastendruck. Hab irgendwo im inet mal was gelesen, das das wohl irgendwie mit dem wiederstand und dem Kondensator an den tasten zusammenhängt, finde die seite allerdings nicht mehr. Schaltplan ist in der PDF zum Board
http://www.pollin.de/shop/downloads/D810022B.PDF
Fehler beim zusammenbauen kann ich mir nicht vorstellen, habe bereits mehrfach durchgemessen, und kann da nichts finden.
Hoffe auf ein paar Antworten ;)
Hab bis jetzt erfolgreich ein paar Blinklichter durch ändern des Beispielprogramms das man bei pollin bekommt hinbekommen.
Nun hab ich ein Paar Probleme Eins nach dem anderen:
1.
Ich hab gerade mal ein Servo angehängt, und versuche nun einfach mal sinnlos ein wenig hin und herzufahren ;) hab dazu mal ein kleines Programm erstellt:
$regfile = "m32def.dat" 'definieren des verwendeten Chips
$crystal = 16000000 'definieren des verwendeten externen Quarz (16MHz)
Ddrd = &B11100000 'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
Portd = &B00000000 'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
Config Portb = Output
Declare Sub Beep(byval Verz As Integer , Byval Anz As Integer)
Dim I As Integer
Enable Interrupts
Call Beep(1 , 200)
Waitms 150
Call Beep(1 , 30)
Waitms 150
Call Beep(1 , 30)
Waitms 150
Call Beep(1 , 30)
Waitms 150
Call Beep(1 , 200)
Waitms 1000
Do 'Anfang der Schleife
Goto Servolauf
Waitms 100
Loop 'zum Anfang der Schleife
Sub Beep(byval Verz As Integer , Byval Anz As Integer)
For I = 0 To Anz
Portd.7 = 1
Waitms Verz
Portd.7 = 0
Waitms Verz
Next I
End Sub
Servolauf:
Portd.5 = 1
For I = 50 To 150
Servo(1) = I
Waitms 2
Next I
Portd.5 = 0
Portd.6 = 1
For I = 150 To 50 Step -1
Servo(1) = I
Waitms 2
Next I
Portd.6 = 0
Servo(1) = 50
Return
Was mir dabei jetzt auffällt, erstens ich habe jetzt ein wenig rumprobiert um einigermaßen die anschläge des Servos zu erwischen, aber wie bekommt man da denn die genauen werte, 50 und 150 habe ich jetzt aus dem RN Artikel Servos übernommen, aber damit fährt er nicht genau auf die endpositionen. Links versucht er weiter zu fahren wie er kann, und rechts fährter nicht weit genug ?
Zweitens ich hab das Programm jetzt im controller, was ich nicht verstehe ist er piept bei jedem programmdurchlauf wieder, das sollte er eigendlich nur ein mal am anfang machen, normal sollte doch dann nurnoch das wiederhohlt werden was in der Do Loop schleife steht oder nicht ?
Das piepen steht vor der do loop schleife, warum wird das trotzdem bei jedem durchgang wieder ausgeführt ??
2.
Kennt sich jemand mit dem Pollin Board aus ? ich habe das gefühl das mit den tastern irgendwas faul ist, in der regel funktionieren die wohl aber ab und zu erkennt er einfach mal einen anderen taster oder reagiert garnicht auf den Tastendruck. Hab irgendwo im inet mal was gelesen, das das wohl irgendwie mit dem wiederstand und dem Kondensator an den tasten zusammenhängt, finde die seite allerdings nicht mehr. Schaltplan ist in der PDF zum Board
http://www.pollin.de/shop/downloads/D810022B.PDF
Fehler beim zusammenbauen kann ich mir nicht vorstellen, habe bereits mehrfach durchgemessen, und kann da nichts finden.
Hoffe auf ein paar Antworten ;)