PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro aus Dummheit lahmgelegt, wie weiter?



Wolle62
28.05.2018, 19:21
Hallo Gemeinde,
ich habe einen voll funktionsfähigen Asuro geschenkt bekommen.
Das Selbsttest Programm war schon drin.

Da ich mit dem IR Programmer keinen Kontakt mit dem Kleinen herstellen konnte, dachte ich mir,
du hast ja den "MiniPro TL866a Programmer", dann programmierst Du den Atmega8 eben damit.
Das war dumm von mir. Ich las erst hinterher von dem hauseigenen Bootloader.

Ich versuchte das Selbsttest File wieder über den "TL866a" zurück zu flashen. Das ging auch,
aber die Fuse Bits habe ich außer acht gelassen. Jetzt dauert der Selbsttest 10 Minuten. Der Takt stimmt wohl nicht mehr.
Hat die jemand noch ?

An die IR Schnittstelle ist dann sowieso nicht mehr ranzukommen.

Ich werde nun erstmal einen Zwischensockel bauen, um die ISP Schnittstelle nachzurüsten. Da gibt es hier ja wundervolle Anleitungen, Danke!
Der "MiniPro TL866a" hat ja auch eine Schnittstelle für ISP. Zur Not habe ich auch noch einen Parallelport > ISP Adapter den ich mal irgendwann gebaut hatte.
Danach werde ich eure Hilfe brauchen. Bestimmt bekommt man den Kleinen auch ohne den Bootloader zum laufen.
Neue Atmega8 Chips habe ich noch 2. Aber ich war immer nur mit Laienkenntnissen mit Bascom unterwegs.
Das Pollin Evaluationsboard habe ich auch da.

Das Ganze soll nur aus Neugier, Bildung und Hobby sein. Vielleicht lasse ich den Asuro "vergrößert" als "Rasenmährobotersimulator" durch den Garten fahren. (Ohne Mähwerk)
nur um die Nachbarn zu schocken... :D

oberallgeier
29.05.2018, 09:04
.. Fuse Bits habe ich außer acht gelassen .. An die IR Schnittstelle ist dann sowieso nicht mehr ranzukommen .. auch ohne den Bootloader zum laufen ..Grad vor zwei Wochen gabs ähnliche Problemchen, dieses Posting und das folgende (https://www.roboternetz.de/community/threads/72012-Asuro-Programmieren-WinAvr?p=644650&viewfull=1#post644650) (mindestens ab "BTW, kleiner Tipp ..") könnten Dir vielleicht helfen - einmal wie man schnell und mit wenig Aufwand beim asuro zum "üblichen" Flashen beim und zu den Fragen des Bootloaders.

Die fuses sollten folgendermaßen gesetzt werden damit der bootloader
aktiv und die serielle programmierung des megas weiterhin möglich ist:
- high fuse 0xDA
- low fuse 0xBF
- lockbits 0xFF

So - vielleicht hilft Dir das.

Viel Erfolg und Glück

Ceos
29.05.2018, 09:13
http://www.asurowiki.de/pmwiki/pmwiki.php/Main/Bootloader

mit Quellen für die BL Firmware, Tipps welche Tools man nutzen kann und auch die Fuses

PASS NUR AUF DASS DU DIE FUSE FÜR ISP, RESET ODER EXT_CRYSTAL NICHT FALSCH EINSTELLST! Sonst hilft nämlich nur HV_PP Programmierung und das sind dann ungefähr so viele Verbdinungen zwischen Programmer und Chip wie er Beinchen hat :D

Aber man kann ihn glücklicherweise retten.

Kauf dir evtl. 2 oder 3 extra ATMegas als Backup :)
Und evtl. einen 8MHz Quarz/Oszillator mit integrierten Kondensatoren oder bastel dir etwas damit du eine Taktquelle hast falls du doch mal ausversehen auf extern geschaltet hast

021aet04
29.05.2018, 09:46
Der TL866 ist ein HV-Programmiergerät, solltest du Reset bzw ISP deaktivieren ist das also kein Problem. Das mit den Fuses habe ich auch gehabt (habe auch den TL866 und ISP nachgerüstet). Wenn ich einen uC beschreiben will, lese ich zuerst den Controller aus. Anschließend öffne ich die Hex Datei und programmiere die Hex und Fuses (eventuell Eprom).

PS: Der Atmega ist soweit ich weiß gesockelt. Einfach herausnehmen und in den Programmer stecken (achte auf die Positionierung, es gibt aber Bilder wie du die Bauteile stecken musst)

MfG Hannes

oberallgeier
29.05.2018, 11:09
.. evtl. einen 8MHz Quarz/Oszillator mit integrierten Kondensatoren oder bastel dir etwas damit du eine Taktquelle ..Das geht auch ohne Quarz etc. Hatte ich mal hier-klick (https://www.roboternetz.de/community/threads/45827-Fuse-irrt%C3%BCmlich-auf-extern-Takt-Hier-die-einfachste-L%C3%B6sung%21) vorgestellt. Und das geht sooo einfach von einer UART-Quelle und einer Textdatei "UUUUUU..." Einstellung 8n1 – also 8 DataBit, no parity und 1 Stopbit, alles mit z.B. 28,8 kBaud, evtl etwas mehr, !notfalls! mit Widerstand von der RS-232 direkt (Anmerkung: meist ist eine Verbindung GND-GND sinnvoll, evtl auch mit Widerstand):

......https://dl.dropboxusercontent.com/s/yzoq1d4qymbkb0h/fuserttr_mono.jpg?dl=0
(https://www.roboternetz.de/community/threads/45827-Fuse-irrt%C3%BCmlich-auf-extern-Takt-Hier-die-einfachste-L%C3%B6sung%21?p=439933&viewfull=1#post439933)

Wolle62
29.05.2018, 12:29
Wow, Danke, mit so vielen Antworten hatte ich nicht gerechnet!

Ich meinte diese Anleitung, damit ich nicht mehr die IR Schnittstelle nehmen muss:
https://www.roboternetz.de/community/threads/31778-Asuro-ISP

Bei meinen Anfänger-Kenntnissen im Programmieren muss ich ein paar Mal mehr als Ihr flashen...
Ich mache das aber mit Lochraster.

Ceos
29.05.2018, 12:46
ich hab den standard bootloader und die stnadard lib gaaaanz schnell hinter mir gelassen udn bare metal auf dem asuro programmiert XD wesentlich flexibler aber man muss auch die motorsteuerung und alles selber programmieren

oberallgeier
29.05.2018, 13:20
.. bare metal auf dem asuro programmiert XD wesentlich flexibler .. man muss auch die motorsteuerung und alles selber programmierenStimmt. Dafür kann man lockerer mit der schicken Hinderniserkennung von waste (https://www.roboternetz.de/community/threads/9973-Asuro-Umbau-der-IR-Schnittstelle-zur-Hinderniserkennung) experimentieren - und das hatte mir (https://www.roboternetz.de/community/threads/33984-Abstandsmessung-%C3%A4hnlich-wie-IR-Schnittstelle-des-asuro) ziemlich Spass gemacht (kann man hier drüber lesen (https://www.roboternetz.de/community/threads/9973-Asuro-Umbau-der-IR-Schnittstelle-zur-Hinderniserkennung?p=315294&viewfull=1#post315294))

......https://dl.dropboxusercontent.com/s/udvlajsncm41bbq/asuro-torp.jpg?dl=0

......
wobei diese anfängliche Konstruktion a la Torpedorohr in späteren Robotern immer wieder auftrat.
Nur PS und nur so nebenbei: bitte diese Unterlegscheibe - siehe blau - nicht vergessen. Das gibt präzisere Odometriewerte

Wolle62
29.05.2018, 18:15
So Adapter gebaut und getestet > alles läuft (Bilder wären vorhanden, falls Interesse...) und :

Dank der Fuse Bits geht der Selbsttest wieder ganz normal.

Ich habe nun mal über die ISP Schnittstelle den Atmega ausgelesen und das Ergebnis mit dem Selbstest Hexfile von Arexx verglichen > stimmt überein!
Auch die Fuse Bits stimmen jetzt beim lesen.

Danke!!!!!!! Nun werde ich meine ersten Erkundungen machen und mich hier im Forum umsehen...

Oha, beim suchen nach Unterlegscheiben sah ich, warum der Asuro so rattert: Beide Motorritzel sind geplatzt, altersbedingt beim Kunststoff.

markusj
29.05.2018, 20:46
Ich habe vor längerer Zeit einen Bootloader programmiert der zum Original-Bootloader kompatibel ist (zumindest habe ich keine gegenteilige Erfahrung damit gemacht). Das Hex-File findest du im Archiv zur Tiny ASURO Library (https://sourceforge.net/projects/libtinyasuro/), in der Doku ist auch beschrieben wie die Fusebits zu setzen sind.

Viele Grüße,
Markus

Wolle62
02.06.2018, 13:46
So die Technik läuft. Programmieren geht zuverlässig und der Asuro macht auch alle Test einwandfrei.

Bevor ich mich nun mit meinen rudimentären Kenntnissen auf Bascom einstelle, die ehrliche Frage an die Profis:

Ist es sinnvoll, sich autodidaktisch an "C" heranzuwagen? Ich bin nicht mehr der Jüngste !
Macht da ein Buch Sinn? Oder ist das ohne richtige Ausbildung ganz sinnlos?

Ich frage das deshalb, weil ich nun die fertigen Bibliotheken für den Asuro fand, auch die modifizierten aus dem Forum hier. Das ist schon Klasse und vereinfacht die Programmierung für den, der halt "C" beherrscht erheblich. Ich will Euch später nicht laufend mit dummen Fragen nerven. Dafür ist das Forum ja nicht da.

Also ehrliche Antwort!

oberallgeier
02.06.2018, 15:05
.. Ist es sinnvoll, sich autodidaktisch an "C" heranzuwagen? Ich bin nicht mehr der Jüngste ! .. Also ehrliche Antwort!Hi Wolle, meine Antwort ist ja. So was ist natürlich immer sehr persönlich, eher Ansichtssache und liefert hier gelegentlich doch Diskussionen.

Mein Anfang zur Sprache C war bei Null. Vorkenntnisse waren Assembler (Z80, später ATtiny13) und Fortran (8016, Z80, Offset AutoCAD-Anwendung mit LISP). Mein Einstieg erfolgte mit einem Anfängerbausatz "Lernpaket Mikrocontroller (http://www.b-kainka.de/lpmikros.htm)". Der war dann auch Anlass meines ersten Beitrags (https://www.roboternetz.de/community/threads/30232-gel%C3%B6st-ATtiny13-Anf%C3%A4ngerprobleme-mit-Lernpaket) in diesem Forum und mein Zugang zum Programmieren in C durch sehr kleine, erste Beispiele in dem Bausatz.

Neun Monate später fing dann mein erstes einigermassen "richtiges" eigenes Projektchen (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01) an mit einem schon beachtlichen Umfang an C-Programmen. Drei Monate später war das halbwegs fertig - Dottie (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=357178&viewfull=1#post357178) - und lief auch, siehe hier (https://www.youtube.com/watch?hl=de&gl=DE&v=s4DU7mS0p2w). Und in diesen Tagen sitze ich (nach ziemlich vielen investierten Stunden) noch immer an meinem archie, ein etwas umfangreicheres Projekt - mal ein kleines Funktionsbeispiel (https://www.youtube.com/watch?v=LrG-PrdZXO0) - und hier noch ein grottenschlechtes Video (https://www.youtube.com/watch?v=zaw8vZNWs6M).

Was hatte ich gemacht: die üblichen Einstiege. Ne LED blinken lassen, nen Motor fahren lassen usw usf. Internetbasierte Lehrbriefe zu C - und für manche Detailfragen noch "Programmieren in C", die (ver)alte(te) Schwarte von Kernighan - Ritchie. Der eigentliche Fortschritt waren dann Beispielprogrämmelchen aus dem Forum bzw. aus dem allgemeinen Internet, siehe z.B. auch mikrocontroller.net (https://www.mikrocontroller.net/forum/mikrocontroller-elektronik). Dort gibts auch Codeschnippsel oder kleine Programme (https://www.mikrocontroller.net/forum/codesammlung) - wie auch hier im Forum - die man abschreibt, benutzt, selbst modifiziert und so seine Kenntnisse + Fähigkeiten erweitern und abrunden kann.

Besser mit C machte es mein Freund (21) in seinem Elektrotechnik-Studium. Er hatte eine Vorlesung "Programmieren in C" - der hat den Einstieg wesentlich systematischer, vollständiger und gründlicher geschafft. Dein Alter ist zu ehren aber eher kein wirklicher Beweg- oder Ablehnungsgrund; ich bin möglicherweise etwas älter *gg*.

HaWe
02.06.2018, 15:57
So die Technik läuft. Programmieren geht zuverlässig und der Asuro macht auch alle Test einwandfrei.

Bevor ich mich nun mit meinen rudimentären Kenntnissen auf Bascom einstelle, die ehrliche Frage an die Profis:

Ist es sinnvoll, sich autodidaktisch an "C" heranzuwagen? Ich bin nicht mehr der Jüngste !
Macht da ein Buch Sinn? Oder ist das ohne richtige Ausbildung ganz sinnlos?

Ich frage das deshalb, weil ich nun die fertigen Bibliotheken für den Asuro fand, auch die modifizierten aus dem Forum hier. Das ist schon Klasse und vereinfacht die Programmierung für den, der halt "C" beherrscht erheblich. Ich will Euch später nicht laufend mit dummen Fragen nerven. Dafür ist das Forum ja nicht da.

Also ehrliche Antwort!

Kurze Antwort: JA!

Lange Antwort:
Auf jeden Fall möglich und auch sinnvoll, denn es ist nicht nur äußerst logisch sondern auch ungeheuer mächtig und irrsinig schnell (wie asm Code).
C ist einfach, es hat nur ca. 20 reservierte Keywords und behandelt quasi alles und jedes an Hardware nach dem Motto "alles ist eine Datei". Für Anfänger irritierend: alle Dateien werden per Pointer adressiert.
Auch sonst ist direkter Zugriff auf Speicheradressen zum lesen und schreiben per Pointer üblich und verwirrt viele Anfänger - aber es ist auch nicht absolut unverzichtbar.
Die Übergabe von Parametern an Funktionen als Werte oder als Pointer ist ebenfalls üblich, und das sieht auch für Anfänger oft verwirrend aus, dennoch kann man es auch hier für Anfänger einfach halten.
Aber um einen µC oder SoC anzusteuern, braucht es nicht nur die wenigen Standard-Befehle sondern vor allem viele gute Libraries, die einen anwenderfreundlichen, simplen Zugriff auf die IO Pins und die Roboter-Sensoren erlauben, ohne dies wird es gnadenlos kompliziert.

Mein Tipp:
Ich habe meine ersten Schritte in richtigem C eigentlich mit Arduinos gelernt (streng genommen ist es C++, aber C kann man wie eine Untermenge behandeln). Zu Arduinos gibt es endlos viele Tutorials, die den Gebrauch von C(++) für diese µCs erklären, und genau durch diesen praktischen Gebrauch lernt man C(++) quasi nebenher, by doing. Und die Libs sind so einfach gehalten, dass du nicht schon am Anfang an der komplizierten Hardware-Low-Level-Programmierung scheiterst. Alles andere kommt dann automatisch mit der Zeit.
Nach und nach bin ich dann etwas versierter geworden, und mit diesem Wissen kann ich mittlerweile sogar auch Rasperry Pis mit C(++) programmieren, auch mit passenden Libs, wenn auch nicht so extrem vereinfacht wie für Arduino. Ähnlich wird es auch für andere C(++) Plattformen möglich sein.
Also wenn du C(++) für Roboterprogrammierung lernen willst, dann fang genau so an:
kauf dir einen Arduino einzeln oder als Starterset, und dann mach einfach die Tutorials durch, Schritt für Schritt, und du wirst sehen: es ist ein Kinderspiel!

Beispiel-Links:
Links zu gängigen Arduino Tutorials:
Arduino Playground
https://www.arduino.cc/en/Tutorial/HomePage

tronixstuff (free tutorials):
http://tronixstuff.com/tutorials/

Sainsmart_Nano-Starter-Kit:
http://www.selloutsoon.com/albums/documents/20-013-120/Nano+kit.rar

Sainsmart_Mega2560-Starter-Kit:
http://www.sainsmart.com/zen/documents/20-013-110-119/SainSmart_Stater_Kit_Tutorals_MEGA2560.rar

Arduino-Kochbuch_Magolis_oReilly:
https://docs.google.com/file/d/0BxbayAAcS8IiaTRjVjJoRG8xVHc/edit?pref=2&pli=1

Arduino-Praxisbuch_Sommer_Franzis
https://www.elo-web.de/electronic/div/common/registration_form.jsp?showLogin=false&downloadID=2455659&afterLogin=http%253A%252F%252Fwww.elo-web.de%252Felektronik%252Fangebot%252Fpraxisbuch-arduino-aktion&downloadMessage=userShouldBeAuthorized

Arduino-Codereferenz in deutsch (Forumslink):
https://www.arduinoforum.de/arduino-Thread-Code-Referenz-komplett-in-deutsch?pid=32885#pid32885

Funduino Tutorial
http://funduino.de/wp-content/uploads/2016/11/Anleitungen-deutsch-12-2016.pdf

Funduino Anleitung deutsch (Internet):
https://funduino.de/

Wolle62
10.06.2018, 14:05
Mein erstes Problem ist grundsätzlicher Natur.
Ich wollte nun Atmel Studio 7 benutzen. Soweit klappt das auch.
Selbst erstellte "Mini-Test-Programme" laufen und lassen sich "builden". Der erstellte Hex-File lässt sich flashen und macht im Asuro das was er soll.

Jetzt will ich weiter mit den Asuro Libs arbeiten. Aber ich verstehe die Voraussetzungen / Pfade für das Atmel Studio 7 nicht.
(Im WIKI ist die Anleitung etwas veraltet: http://www.asurowiki.de/pmwiki/pmwiki.php/Main/AVRStudio)

Soll Heißen: Ich habe zur Übung aus dem "Examples" Ordner der Libs, den Code eines Beispiels in ein neues Projekt kopiert.
Das lässt sich dann mit "F7" nicht "builden" Es hagelt Errors, klar, weil die nötigen Asuro Libs nicht da sind, wo sie hingehören, oder das Makefile sie erwartet?

Also wo müssen die Asuro Libs hin? Ich will sie, sagen wir auf "D:/asurolib" legen, so dass ich die bei jedem Projekt nur mit "#include D:/asurolib/lib/inc/asuro.h" eingebunden habe ???
Im Augenblick geht das so nicht ?
Unter dem benannten Pfad ist die "asuro.h" jedenfalls.

Da fehlt wieder Grundwissen ich weiß...

HaWe
11.06.2018, 12:03
Mein erstes Problem ist grundsätzlicher Natur.
Ich wollte nun Atmel Studio 7 benutzen. Soweit klappt das auch.
Selbst erstellte "Mini-Test-Programme" laufen und lassen sich "builden". Der erstellte Hex-File lässt sich flashen und macht im Asuro das was er soll.

Jetzt will ich weiter mit den Asuro Libs arbeiten. Aber ich verstehe die Voraussetzungen / Pfade für das Atmel Studio 7 nicht.
(Im WIKI ist die Anleitung etwas veraltet: http://www.asurowiki.de/pmwiki/pmwiki.php/Main/AVRStudio)

Soll Heißen: Ich habe zur Übung aus dem "Examples" Ordner der Libs, den Code eines Beispiels in ein neues Projekt kopiert.
Das lässt sich dann mit "F7" nicht "builden" Es hagelt Errors, klar, weil die nötigen Asuro Libs nicht da sind, wo sie hingehören, oder das Makefile sie erwartet?

Also wo müssen die Asuro Libs hin? Ich will sie, sagen wir auf "D:/asurolib" legen, so dass ich die bei jedem Projekt nur mit "#include D:/asurolib/lib/inc/asuro.h" eingebunden habe ???
Im Augenblick geht das so nicht ?
Unter dem benannten Pfad ist die "asuro.h" jedenfalls.

Da fehlt wieder Grundwissen ich weiß...

musst du dann nicht das makefile entsprechend erstellen bzw. anpassen und per -lxxxx u/o -Ixxxx gegen die libs linken? (Das alles finde ich bei gcc extrem lästig und verwirrend, und genau deshalb verwende ich Arduino, da braucht man es nicht: das übernimmt alles automatisch die IDE).

edit:

für die sourcecode preprocessor Direktive
#include "D:/asurolib/lib/inc/asuro.h"

dann fürs Linken im makefile beispielsweise zusätzlich (unter Vorbehalt):
-lD:/asurolib/lib/inc

evtl müssen das auch Backslashs sein statt Schrägstriche=slashs, zumindest unter Windows

Wolle62
07.08.2018, 17:38
Still learning....
Inzwischen doch noch einen Arduino gekauft.
Und auch ein Steckbrett mit Zubehör, damit man auch was sieht. :D

Danke für die Links!

Wolle62
16.08.2018, 14:37
So, der Arduino macht Spass!
Ich habe viel getestet und gelernt. LED, PWM, LCD und Motor und auch alles zusammen...
Die IDE ist auch für mich Anfänger leichter zu handhaben.
Nun wollte ich den Asuro nach dieser Anleitung

http://playground.arduino.cc/Learning/Asurino

auch auf diese Umgebung bringen, aber das Einfügen der Codes in die "Boards.txt" bringt nichts.
Auch nach dem Neustart kein Board mit der Bezeichnung "Asuro w/ ATmega8" auffindbar.
Auch bekomme ich beim Compilieren die Meldung

"Property line '?# See: http://code.google.com/p/arduino/wiki/Platforms' in file C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt is invalid

Fehler beim Kompilieren für das Board Arduino/Genuino Uno."

Die Anleitung ist womöglich veraltet?
Beim MAC klappt das problemlos, da ich aber mit meinem Programmer nur unter Windows flashen kann,
will ich nicht immer zwischen Mac und Windows hin und her pendeln müssen.

Hat jemand einen Tipp wo es klemmt ?

Ceos
16.08.2018, 14:54
du must das PAket für das Board erst laden ... unter Tools -> Board -> Board Manager... Dort kannst du dann Filtern udn versuchen dein Board zu finden. Ggf. liefert dir der Hersteller des Boards auf seiner Webseite einen Link oder das Boardfile und du musst es nur in den passenden Ordner werfen (welcher das ist habe ich leider vergessen, ich benutz nurnoch den Manager)

Wolle62
16.08.2018, 15:07
Ich habe eben im Download des Paketes den "readme.txt" gefunden.
Das hätte ich mal früher finden sollen. Da steht alles genau drin und läuft auch so...
Sorry, ich muss nächstes Mal mehr hinschauen...

Ceos
16.08.2018, 15:08
Still learning....

nix zu entschuldigen, das gehört dazu :)

Wolle62
30.08.2018, 18:47
Nachdem ich nun lange und glücklich mit dem "Arduino Uno" rumgespielt habe, zuletzt mit dem Ultraschall Sensor, wollte ich wieder den Asuro zum laufen bringen.
Wie gesagt, Die Arduino IDE erkennt das Board als "Asuro with ATMega8" ich kann auch die Demo Sketche für den Asuro kompilieren und mit meinem externen Brenner per ISP flashen, läuft.

Jetzt das Problem:
Der erste eigene Sketch für den Asuro mit der Arduino IDE erstellt > nix geht
nur die Teile, die aus der "Asurino" Biblithek kommen laufen, das selbst dazu addierte macht nicht was es soll.

Nach längerem Suchen fand ich nun raus, dass die Pinzuordnung nach dem Kompilieren nicht stimmt!
Zum Testen habe ich einfach das "Basics" "Blink" Sketch auf den Asuro geflasht, und alle vorhandenen LEDs nacheinander versucht anzusteuern.

Nehme ich z.B. die eingebaute Dual LED auf PIN 14, blinkt die linke Rückfahr LED an PIN23 !!??

Ich dachte, ich kann mit der Arduino Software einfach Software für den Asuro schreiben? Irre ich da ? Gehen da nur die Befehle aus der dazugehörigen Bibliothek?

Also "asuro.setStatusLED(RED);" das geht! Die Status LED leuchtet rot...
nur "digitalWrite(led, HIGH);" mit der Definition "int led = 14" und "pinMode(led, OUTPUT);"also an Pin 14 des Atmega 8 landet geflasht auf Pin 23 .

Weiß jemand noch Rat bei dem alten Ding?

HaWe
30.08.2018, 19:05
Nachdem ich nun lange und glücklich mit dem "Arduino Uno" rumgespielt habe, zuletzt mit dem Ultraschall Sensor, wollte ich wieder den Asuro zum laufen bringen.
Wie gesagt, Die Arduino IDE erkennt das Board als "Asuro with ATMega8" ich kann auch die Demo Sketche für den Asuro kompilieren und mit meinem externen Brenner per ISP flashen, läuft.

Jetzt das Problem:
Der erste eigene Sketch für den Asuro mit der Arduino IDE erstellt > nix geht
nur die Teile, die aus der "Asurino" Biblithek kommen laufen, das selbst dazu addierte macht nicht was es soll.

Nach längerem Suchen fand ich nun raus, dass die Pinzuordnung nach dem Kompilieren nicht stimmt!
Zum Testen habe ich einfach das "Basics" "Blink" Sketch auf den Asuro geflasht, und alle vorhandenen LEDs nacheinander versucht anzusteuern.

Nehme ich z.B. die eingebaute Dual LED auf PIN 14, blinkt die linke Rückfahr LED an PIN23 !!??

Ich dachte, ich kann mit der Arduino Software einfach Software für den Asuro schreiben? Irre ich da ? Gehen da nur die Befehle aus der dazugehörigen Bibliothek?

Also "asuro.setStatusLED(RED);" das geht! Die Status LED leuchtet rot...
nur "digitalWrite(led, HIGH);" mit der Definition "int led = 14" und "pinMode(led, OUTPUT);"also an Pin 14 des Atmega 8 landet geflasht auf Pin 23 .

Weiß jemand noch Rat bei dem alten Ding?
hat denn dein Arduino überhaupt einen pin 14 nach Arduino-Nummerierung bzw. stimmt es überein mit deinen originalen asuro libs?

die digitalen vom Uno gehen (per Arduino-API) nur von 0-13, allerdings die analogen A0-A6 werden auch mit 14-19 identifiziert (gilt nicht für Mega2560).

Wolle62
30.08.2018, 21:39
Verstanden, die Pins in der IDE beziehen sich auf die Nummern der Buchsenleisten und nicht auf den IC selbst.
Durch die Schaltung des Uno habe ich begriffen, das die ja gar nicht identisch sind.
Mein Fehler, das wusste ich nicht. Also eine kleine Tabelle anfertigen, damit ich das auf den Asuro übertragen kann.

DANKE!

EDIT: Super alles läuft nun . Der Asuro fährt mit Ultraschallmodul und stoppt vor der Wand. Nun geht es weiter mit Wendeschleife und Odometrie zwecks Geradeauslauf.
Das wird wesentlich schwieriger...

Wolle62
15.09.2018, 18:38
Da gehts schon los. Irgendwas habe ich wohl wieder nicht richtig verstanden.
Es geht um die "Asurino" Bibliotheken und die damit verbundenen "Befehle".

Also der Codeauszug für die Motorsteuerung hier macht was er soll :


if(entfernung <=30) {
asuro.setStatusLED(RED);
asuro.setMotorSpeed(100,50);
asuro.setMotorDirection (0,0);
delay (1500);

}

else {
asuro.setStatusLED(GREEN);
asuro.setMotorDirection (1, 1);
asuro.setMotorSpeed(120,100);

}

Das Problem ist der markierte Teil.
Vertausche ich die beiden Zeilen, also erst die "Direction" und dann den "Speed" gehts nicht mehr ??
Die Laufrichtung der Motore ändert sich dann nicht mehr.
gemerkt habe ich das in neuen Sketches, die alle nicht liefen, wie sie sollten.
Im "else" Teil ists aber genau umgekehrt und da geht es problemlos.

Wo ist da der Denkfehler? Oder ist da ein Bug?

Ich werde wohl den Asuro ausschlachten und mir den AAR-04 teilweise mit nem gesteckten Arduino auf Lochraster nachbauen.
Das Material habe ich ohnehin.

Ceos
16.09.2018, 09:55
ganz blöde frage, welche asuro lib VVersion nutzt du, wenn ich die doku der neueren so ansehe ergibt sich relativ klar warum das nicht geht



[in]
left_dir
Richtung des linken Motors [ FWD | RWD | BREAK | FREE ]





#define
FWD _BV(PB5)





#define
RWD _BV(PB4)





#define
BREAK 0x00





#define
FREE _BV(PB4) | _BV(PB5)




































Wenn du also Dir 0,0 sagst stehen beide Motoren auf BREAK also Bremse (Vorrausgesetzt dasds es in deiner AsuroLib Version auch so ist)

verwende lieber die definierten Makros ... warum sind das in der lib überhaupt Makros? Warum sind das keine ordentlichen Enums?! Das schreit ja geradezu nach totaler Verwirrung :(

oberallgeier
16.09.2018, 10:34
.. verwende lieber die definierten Makros ... warum sind das in der lib überhaupt Makros? .. Das schreit ja geradezu nach totaler Verwirrung ..Mit den asuro-Libs bin ich nie wirklich klar gekommen. Ich hatte mich damals entschieden die Programmierung "richtig"/"zu Fuß" in C zu machen. War für mich schwierig, weil ich kein C konnte (kann ich heute immer noch nicht wirklich/richtig) - aber man lernt ja nie aus. Und damals hatte ich mit asuro wirklich gute Fortschritte gemacht die mir später nützten.

Nur so, als ne Art Ergänzung: ich hatte bei der IR-Programmierung immer wieder Störungen und hatte das damals dann mit ner üblichen ISP geflasht (siehe hier - rechtes Bild (https://www.roboternetz.de/community/threads/48271-ISP-zum-Aufklippen-f%C3%BCr-THT-Controller?p=464833&viewfull=1#post464833)).

Wolle62
16.09.2018, 12:00
Ich habe die letzte verfügbare Asurino lib von hier:
https://github.com/Dirk-/Asurino-Library
benutzt.
Im Example Ordner dieser Lib war ein Motortest.

Auszug daraus:

// test engines backward and forward
asuro.setMotorSpeed(255, 255);
//forward
asuro.setMotorDirection (1, 1);
delay (500);
asuro.setMotorDirection (0,0);
delay (500);
asuro.setMotorSpeed(0,0);

Den habe ich als Grundlage benutzt. Daher die Erkenntnis, das " ...Direction(0,0);"> "Rückwärts" ist.

Wie dem auch sei, ich bin auch auf die Idee gekommen, alles mit der Arduino IDE selbst zu programmieren und auf diese "Sonderbefehle" zu verzichten.
Und siehe da, alle geht wie es soll.
Ich musste nur eine Tabelle der Pins vom Atmega8 des Asuro auf die Pins des Arduino machen, um den Überblick
zu haben, was beim Asuro wo dran ist im Verhältnis zum Arduino.

Achso, mein Asuro ist umgebaut und hat ne ISP Schnittstelle. Kein IR Problem deshalb.

Ceos
16.09.2018, 12:29
gute entscheidung :D

RIN67630
07.01.2019, 19:31
Ich würde nicht lange mit dem Originalchip machen: für wenige €s bekommt man AT Megas 328P mit Arduino boot loader. Dann gleich in der wesentlich komfortablere Arduino-welt weitermachen...