Ein einfacher Roboter

Hallo,

Ich bin unglücklicher Besitzer von Windows Vista ( :mad: ). Und die beiden Dateien sind vorhanden!
ich schätze mal, das es an den Rechten liegt. So wie ich gehört habe
ist Vista ziemlich sicher und nervig eingestellt (wollen sie wirklich ?
sind sie sich absolut sicher ???? :eek: ).

Ich hab da was in der ct gelesen (wegen Win7) und da stand was mit Vista
und Benutzerkontensteuerung und so. Da gibts nen Regler mit 4 Stufen von
total unsicher bis total sicher. Und die oberste (sicherste) Stufe ist wohl auch
der Standard von Vista. Also schau mal ob das was mit der Benutzerkontensteuerung
(UAC - User Account Control) zu tun hat. Kann ja sein das Windows das
Programm/der Treiber zu unsicher ist und er darum nicht geladen wird.

Gruß
Dino
 
Noch ne Idee zu Vista und Parallelport ...

Wie die bei der elektor das Labor auf Vista umgestellt haben gab es wohl
massive Probleme mit den Testgeräten die am Parallelport hingen. So wie
icch das noch im Kopf hab kennt Vista wohl keinen Parallelport mehr (hieß
es jedenfalls damals) weil die neuen Drucker ja nur noch USB haben und
Parallel ist veraltet und sowieso und da hat sich MS gedacht das man so
einen alten Kram nicht mehr im Betriebssystem braucht.

Evtl finde ich den Beitrag noch mal ... (wenn es interessiert)

Dann wär das natürlich der SuperGAU ! :p

Gruß
Dino
 
und noch nen Beitrag ...

ich hab in dem Halbleiterheft 2008 (elektor) einen STK200 kompatiblen
ISP-Progger mit ein paar Widerständen gefunden (so wie deiner).
Es gibt von www.kanda.com auch eine Prog-Software (Freeware)
die den unterstützt. Sieh mal hier ...
Free AVR ISP Software for STK200, STK300 and AVRISP
und da steht unter anderem ...
This software will not work in 64-bit Windows OS, even in XP 32-bit mode under 64-bit Windows7. You will need to upgrade to our USB programmer for 64-bit support.

Im PonyProg-Forum ..
Windows XP 64-bit
Hello, I tried to use PonyProg under Windows XP 64-bit but it fails to load a driver for LPT port (DLPORTIO.SYS)

It's not that I am surprised because of the driver mismatch (i got used to it having 64-bit Windows), the only question is if I can expect 64-bit PonyProg release some day?...
------------------------------------------------------
Look at the attached file, should be a 64bit version of DlportIO.
Try it and report here the results, please.

Attachments: DlportIOx64.zip (27.8KB)
-------------------------------------------------------
Anonymous User Wrote:
---------
> It not works with vista64 :-/
Works with vista 64 bit.

Und hier das Attachment damit es nicht irgendwann mal irgendwo
verschwindet ... :D
Anhang anzeigen DlportIOx64.zip
Also liegt es wohl an der 64-Bit-Version ...

Gruß
Dino
 
ahaa :D Ich hab mal mit BASCOM rumgespielt, und voilà es geht ;) Zumindest mit dem Tiny. Also er kann komischerweise den EEPROM auslesen, obwohl ich nichts angeschlossen hab, aber dafür ist alles "FF". Wenn ich ihn nun anschließe, stehen irgendwelche anderen Zahlen drin! :eek:

Naja, dann hab ich ja mal wieder was zum rumprobieren ;)

EDIT: JUHU, Programme übertragen geht jetzt auch, erstmal mit Tiny :D

Fynn
 
und noch ein par Infos ...

da ich ja schon dabei bin, das Forum zuzumüllen und dieser Thread langsam
zu einem ParProgger-Thread verkommt :D :rolleyes: mach ich noch ne weitere
Info hier dran. Ich werd das wohl mal alles (irgendwann mal) zusammenfassen.

Also wegen deinem Leitungslängen-Problem ...

Solutions to problems with STK200/300-programming dongles

I needed to get rid of the high-frequency-components generated by the edges. The trick: a small RC-filter of 0.1 us, made up with a resistor of 1 Kohm and 100 pF capacitor. That's all it takes: one small filter in the SCK-line. I built it into the STK200-dongle and ran some tests: problem solved. No longer dependant of connector/cable.
Built it into the second programming-dongle: works.
Hooked them up to another PC: works.
...
...
Q. Is it necessary to add the filter to MISO and MOSI as well?
A. No. The data on these lines are set-up before the SCK-edge occurs. So even if there is ringing on these lines (and there is !!), it has no effect on the transmission. But: it's a good idea to filter these lines as well.
Die RC-Glieder sind hier ... http://www.lancos.com/e2p/betterSTK200.gif
gut zu sehen (auf MOSI, MISO und SCK).

EDIT: Mein selbtgebauter ParProgger (mit 74245) läuft auch
noch mit 1,8m Flachbandkabel dran ohne Probleme :D

EDIT2: Eine Ergänzung aus AVRfreaks ...
Note: although some Forum-members claim that it is not supported in AVR-Studio-4 (the beautiful programming-environment from Atmel): sorry guys, that is not true! Kanda supplies a plug-in for AVR-Studio with the STK200 and it works fine! And comfortable.

Edit: From time to time I receive requests via PM, to share the Kanda-plug-in. I will not do that. It's licenced software. Contact Kanda to get your own licence, or use PonyProg to program your AVR's

Gruß
Dino
 
ich hab grad irgendwie das Gefühl, wenn dieser Thread einmal abgeschlossen ist, könntest du bei Fragen immer darauf verweisen ;) Ich glaub bisher wurden wirklich alle Anfängerfragen hier geklärt :D

So, nun lässt sich auch (endlich) der AtMega8 programmieren. :cool:

Fynn
 
Hallo,

na das sieht doch Klasse aus :)

So ein ParportProgger hat auch den Vorteil ... man kann ihn als Initial-Progger
für einen selbstgebauten USB-Progger verwenden. Damit sich der Hund nicht
in den Schwanz beißt :D

Gruß
Dino
 
so, Motortreiber geht auch :D Direkt auf Anhieb.. :cool:

Naja, als nächstes kommt dann das Display wegen den Debug-Infos, und den Sensoren. Hier mal mein Schaltplan:

Ich hab die Inputs für den L293D jetzt nicht eingezeichnet, ich weiß schon so wies richtig ist, außerdem wäre das dann "Kabelsalat". Erstmal gehts nur ums Display! Ich hoffe die Schaltungsweise der Schalter ( :D ) ist auch richtig.

EDIT: Schaltplan vergessen -.- Achso, dieser komische png-Fehler...:



Fynn
 
Hi,

mal nen paar Tips ...

- D0..3 vom LCD über 1k mit GND verbinden und nicht direkt. Ist sicherher für
den Fall das die Datenrichtung vom LCD mal nicht paßt.

- Mach mal an den GND-Anschlüssen im Schaltplan so wie bei den Kondensatoren am Quarz diee GND-Symbole dran. Das entwirrt den Kabelsalat.

- Identisches mit den VCC-Anschlüssen (dieses Symbol --> verwenden) Da gibt es in EAGLE auch nen Symbol für. Das entwirrt dann noch weiter.

- Den Datenbus vom LCD (D4..7) würde ich nicht außeinanderreißen. Nimm
entweder 0..3 oder 4..7 von einem Bus dafür. Da kann man auch parallel auf
die Pins vom ISP gehen (PB0..3) das stört nicht. Mach ich auch.

- Wegen dem ISP ... such in EAGLE mal bei den Bauteilen nach *CON10* oder
*CON06* dann findest du das Symbol was ich auch immer verwende. *VCC*
und *GND* fördert die Betriebsspannungs-Symbole hervor. Oder such mal
an der Basis nach der Bibliothek "rcl" da sind die C-EU, CP-EU und R-EU drin
und sowas alles.

- Für die Hintergrundbeleuchtung ... Muß es wirklich ein Widerstand aus der
E24-Reihe sein ? Reicht kein E12 ? Naja ... OK ... Geschmackssache :D

- Das Kontrastpoti fehlt am LCD noch.

Das wars erst mal soweit ...

Gruß
Dino
 
soo, Anhang ist wie immer unten:

Nicht böse sein, aber das mit dem ISP würde mich komplett verwirren, denn ich habe eine einfache 5pol. Steckerleiste, und deswegen habe ich deinen Vorschlag ganz frech ignoriert :D Ich hab jetzt genau meinen ISP reingezeichnet, aber das könnt ihr auch getrost ignorieren...

Das mit GND und VCC war ne gute Idee, hätte ich auch eigentlich selbst drauf kommen können :rolleyes:

Ich hab jetzt ISP und LCD-Datenleitungen auf den gleichen Pins, wie du es empfohlen hast, was ja durchaus gut ist --> Pins sparen ;)

Naja, das der Motortreiber nicht komplett ist, muss ich ja eigentlich nicht sagen. Ich hab erstmal nur die Logic-Spannung eingezeichnet, da ich das evtl. vergessen könnte, und nachher noch was verwechsle.

---

Ich hab jetzt nochmal ein paar generelle Fragen:

- Sind die Pins für PWM fest zugeordnet oder nicht? (also, z.B. OC1A, OC1B). Ich meine da mal was gelesen zu haben. Dann müsste ich evtl. meine LCD Pins doch noch woanders dran hängen..
- Und wenn ich einen Timer als Counter benutzen will, muss ich dann die T0 (...) Pins benutzen?

So das wars erstmal! Ich hoffe (wie immer) auf eure Antworten!

EDIT: Hab mal versucht eine LCD-Konfigurierung in BASCOM zu programmieren:

Code:
$regfile = "m8def.dat"
$crystal = 4000000
Baud = 9600

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
Config Lcdbus = 4

Wait 1

Cls
Locate 1 , 1
Lcd "TEST"

Das wäre doch so richtig, oder?

Ich frage euch lieber bevor irgendetwas kaputt geht!

Fynn
 

Anhänge

  • hauptplatine_roboter(2).png
    hauptplatine_roboter(2).png
    15,1 KB · Aufrufe: 4
Hi, ich auch mal wieder =)

zum Schaltplan da ist mir nur aufgefallen dass die GNDs kreuz und queer liegen ^^

versuch dir anzugewöhnen dass die gands nach unten gehen, weil sonst ist das einfach urgs *gg* (lt normen solltest es auch so machen und nicht 90° verdreht oder gar 180° ...

*einfach mal so als einwand*
 
Hallo,

soo, Anhang ist wie immer unten:

Nicht böse sein, aber das mit dem ISP würde mich komplett verwirren, denn ich habe eine einfache 5pol. Steckerleiste, und deswegen habe ich deinen Vorschlag ganz frech ignoriert :D Ich hab jetzt genau meinen ISP reingezeichnet, aber das könnt ihr auch getrost ignorieren...
versuch mal den hier ...
CON-M05.gif
5polig :D und da wo der ist, gibt es noch hunderte ;)


Das mit GND und VCC war ne gute Idee, hätte ich auch eigentlich selbst drauf kommen können :rolleyes:
zum Schaltplan da ist mir nur aufgefallen dass die GNDs kreuz und queer liegen ^^

versuch dir anzugewöhnen dass die gands nach unten gehen, weil sonst ist das einfach urgs *gg* (lt normen solltest es auch so machen und nicht 90° verdreht oder gar 180° ...

*einfach mal so als einwand*
Da hat bluelight irgendwie Recht ... Aber wen ich ehrlich bin, ist es bei mir
auch in allen möglichen Richtungen (Außer nach oben) :eek:


Ich hab jetzt ISP und LCD-Datenleitungen auf den gleichen Pins, wie du es empfohlen hast, was ja durchaus gut ist --> Pins sparen ;)
aber etwas anders als ich mir das gedacht habe ...
Bei Dir ...
D4 -- PB2
D5 -- PB3
D6 -- PB4
D7 -- PB5
RS -- PB0
E -- PB1

ich würde das so machen ...
D4 -- PB0
D5 -- PB1
D6 -- PB2
D7 -- PB3
RS -- PB4
E -- PB5

Sieh dir mal die Bits auf dem AVR-Port und die vom Display an ...
Wenn man ein Byte an das LCD sendet dann zerlegt man im 4Bit-Modus
das Byte in die 2 Nibbles ... ->
D0..3 / D4..7
also einmal in der Mitte getrennt.
dann muß man nur noch das entsprechende Nibble auf den Port legen und
fertig. Da du aber die PortBits 2..5 verwendest müßte man das Nibble noch
um 2Bit verschieben (0..3 -> 2..5) also zusätzliche Arbeit im Programm.
RS und E werden sowieso direkt mit Set/Clear direkt angesprochen. Da ist
es egal wo die angeschlossen sind.

Durch eine kleine Änderung bei den Anschlüssen kann man sich also
Programmierarbeit sparen :D verstanden ?

Ich hab jetzt nochmal ein paar generelle Fragen:

- Sind die Pins für PWM fest zugeordnet oder nicht? (also, z.B. OC1A, OC1B). Ich meine da mal was gelesen zu haben. Dann müsste ich evtl. meine LCD Pins doch noch woanders dran hängen..
- Und wenn ich einen Timer als Counter benutzen will, muss ich dann die T0 (...) Pins benutzen?
Da hast du wohl recht ... also nochmal ummodeln ... ;)
T0 ist der externe Eingang des Timers 0. Brauchst du nicht für PWM.
Identische Probleme ...
- I2C-Bus ? (PC4,5)
- UART ? (PD0,1)
- ADC ? (PC0...5)

Empfehlung ...
PD0,1 (RxD,TxD) => RS232 - würde ich freihalten (zum PC)

PD4,5,6,7 => LCD D4,5,6,7 damit ist das Nibble nicht mitten im Byte ;)

PB1(OC1A),PB2(OC1B),PB3(OC2) => PWM + ISP(PB3)
PB4,5 => LCD RS,E + ISP

PC4,5 (SDA,SCL) => I2C (zB EEPROM, RTC, ...) würde ich auch freihalten

jetzt ist noch PC0..3 (ADC0..3) , PD2,3 (INT0,1) und PB0 frei
je nachdem ob noch analoge Eingänge oder externe Interrupts benötigt
werden kann man da das entsprechende dransetzen.

Mit Trick7 könnte man in der Zeit, wenn man das LCD nicht anspricht die
Datenpins auf Eingang schalten und da drüber die Taster abfragen die man
über nen anderen Pin dann aktiviert (spart bei 4 Tasten 3 Pins :D ). Aber
für Programmieranfänger nicht zu empfehlen da => Gehirnkrebs bei Problemen.
Also ich meine das so ...
+-----|<------/ ----PD4
+-----|<------/ ----PD5
+-----|<------/ ----PD6
+-----|<------/ ----PD7
+-------------------PB0

PB0 ist normalerweise auf High => Tasten wegen den Dioden ausgeschaltet.
PD4..7 auf Eingang und interne PullUps einschalten, dann PB0 auf Low =>
damit sind die Tasten aktiviert. Drückt man eine Taste, wird er entsprechende
PD4..7 auf Low gezogen. Und schon sind einige Pins gespart :D Dadurch
muß man aber beim ansprechen des LCDs und der Tasten genau aufpassen
sonst gibts Datensalat.

Hier mal ein Beispielplan wie ich mir das so gedacht habe ...
Mega8-LCD-Key.gif

Gruß
Dino
 
wow, vielen Dank! Langer Beitrag :D

Also, ich habe versucht alles nach deinen Vorschlägen umzusetzen:

Den ISP hab ich gleich übernommen ;)

Das mit den Nibbles hab ich nicht so ganz verstanden, aber das ist glaub ich auch nicht soo wichtig.

Meine eigentlich hauptsächliche Frage momentan:

Kann man das Display mit 5V und falschen Belegungen zerstören? Könntet ihr mir vielleicht die häufigsten Fehler sagen, und dann ich nämlich auch ein bisschen rumexperimentieren ;)

Wäre echt nett!

Fynn
 

Anhänge

  • hauptplatine_roboter(3).png
    hauptplatine_roboter(3).png
    15,2 KB · Aufrufe: 7
Hi,

diesmal eine kurze Antwort ... :D
Das mit den Nibbles hab ich nicht so ganz verstanden, aber das ist glaub ich auch nicht soo wichtig.
Ein Nibble ist ein halbes Byte. Also entweder das untere Nibble (Bits 0..3) oder
das obere Nibble (Bits 4..7).
Im 4Bit-Modus muß man irgendwie das Datenbyte (8Bit) über die 4 Leitungen
bekommen. Also wird es in das untere und obere Nibble getrennt und nacheinander
übertragen. Und damit man es nicht noch verschieben muß wenn man es in
das 8Bit-Ausgangsregister des Ports (an dem das LCD mit 4Bit hängt) sollte
man die 4 Datenleitungen des LCDs entweder an Bit0..3 des Ports oder an
Bit4..7 des Ports hängen. Bei Bascom machht das die Bibliothek trotzdem
aber wenn man es selber ansprechen will, dann vereinfacht das die Arbeit.

Kann man das Display mit 5V und falschen Belegungen zerstören? Könntet ihr mir vielleicht die häufigsten Fehler sagen, und dann ich nämlich auch ein bisschen rumexperimentieren ;)
Kurz und gut : JA!
Falscher Anschluß kann fatal sein.
Knickohr oder Markus haben auch mal was mit "Backpowering" oder so
gesagt. Also das die Betriebsspannung am LCD fehlt und sich das LCD dann
über die Spannung auf den Datenleitungen rückwärts versorgt. Das soll auch
ziemlich tötlich sein.

Gruß
Dino
 
ok, also am Meisten auf die Spannungsverorgung achten!

Wäre denn dieser Code richtig, ums mal zu probieren?

Code:
$regfile = "m8def.dat"
$crystal = 4000000
Baud = 9600

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.5 , Rs = Portb.4
Config Lcdbus = 4

Wait 1

Cls
Locate 1 , 1
Lcd "TEST"

End

Fynn
 
ahh cool, es funktioniert!

Nochmals ein großes DANKESCHÖN an alle die mir bisher geholfen haben!

Nur wie kann ich jetzt bestimmt Zeichen, aus der Zeichensammlung anzeigen? z.B. der Pfeil nach links oder rechts?

Ich hoffe ihr könnt mir helfen!

Fynn
 
Nur wie kann ich jetzt bestimmt Zeichen, aus der Zeichensammlung anzeigen? z.B. der Pfeil nach links oder rechts?
das ist so eine Sache die vor allem von einem abhängt ... der Character-Tabelle
der LCD-Anzeige. Da steht drin, welches Muster für welches Byte auf dem LCD
erscheinen soll ...
zB ...
0x20 = Leerzeichen
0x7E = Pfeil nach rechts =>
0x7F = Pfeil nach links <=

HD44780U_ROM-Code_A00.gif

Da es die Controller aber mit verschiedenen ROM-Codes gibt, darf man nicht
davon ausgehen, wirklich auch einen Pfeil im Charactersatz zu finden. Wenn
das für China gebaut ist, dann findet man eben anderes auf der Anzeige.

Gruß
Dino
 
ach da hätte ich auch selbst drauf kommen können, nächstes Mal denke ich etwas mehr nach ;)

Ich bastel gerade an einer Menüführung...

Nur jetzt mal was für einen Bascommer:

Code:
Dim H_pkt(10) As String * 20
H_pkt(1) = "Hauptmenü"

Wenn man nun sagt:

Code:
Lcd H_pkt(1)

Dann wird das "ü" zu einen komischen Zeichen. Aber wenn man jetzt so schreibt:

Code:
H_pkt(1) = "Hauptmen" ; Chr(245)

Dann meckert er rum, von wegen "Invalid Datatype"... Ich muss es auf jeden Fall irgendwie hinbekommen, dass ich ein Umlaut in eine Variable bekomme, und dieser dann auch richtig auf dem LCD angezeigt wird! Ich weiß nur nicht wie... Scheinbar kann er "Chr(245)" nicht in einem String aufnehmen :(

Ich hoffe ihr wisst es!

Fynn
 
Hallo,

Dann meckert er rum, von wegen "Invalid Datatype"... Ich muss es auf jeden Fall irgendwie hinbekommen, dass ich ein Umlaut in eine Variable bekomme, und dieser dann auch richtig auf dem LCD angezeigt wird!
pack doch das Zeichen zuerst in eine 1 Zeichen lange String-Variable und pack
die dann hinten an deinen Text dran ...
oder 2te Möglichkeit ... schreib deinen Text zum LCD und übertrag den Chr-Wert
danach auf Binäre weise direkt zum LCD (also den Datenwert nicht als Text
senden sondern binär). Klar was ich meine ? Die Cursorposition wird vom LCD
automatisch weitergeschoben.

Wenn es nicht auf dem offiziellen Weg zum LCD kommt dann schieb das
Zeichen über die Hintertür direkt rein :D ;)

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)