Hallo, anbei Assemblercode für einen Programmierer auf Basis AVR AT90S4433 (bzw. 2333). Das ganze orientiert sich stark an avr910.asm von Atmel, allerdings ist UART und SPI über Hardware implementiert. Getestet ist es bis jetzt nur mit 4433 --> 4433. Gedacht ist es für den Fall, daß Programmier-AVR und Ziel-AVR auf dem gleichen Steckbrett sitzen und gemeinsame Ressourcen teilen (im Header steht noch mehr dazu). Gerhard
Hi Gerhard, nette Sache, so was ähnliches wollte ich auch schon machen. Was mich daran nur stört ist das die AVRprog Software nur die älteren Controller unterstützt. Ich zweifle nicht das man die Controllersoftware für die Mega's anpassen kann, aber die Windowssoftware muß man wohl selber schreiben :( Gruß Markus http://www.elektronik-projekt.de/
Hallo Markus, bis jetzt hab ich mich nur mit dem 4433 beschäftigt. Zu den (neuen) Megas kann ich daher nichts sagen. Kannst Du das mal testen, daß Du einen MEGA8 programmierst und in AVRProg irgendeinen anderen MEGA angibst ? Wenn es so ist, daß alle MEGAs in Write Page Mode geflasht werden, dann müßte das eigentlich gehen. Wenn das ganze mit AVRProg.exe funktioniert, wäre es halt zumindest fürs erste einfacher, weil das in AVRStudio bereits dabei ist. Ansonsten ist das Byte-Protokoll über die serielle Schnittstelle vergleichsweise einfach, der Programmieraufwand für einen Client wäre überschaubar. Den Ansatz des Programmierens über AVR halte ich für ausbaufähig, das STK500 funktioniert ja letztendlich auch so ... Gerhard
AVR progger fuer Linux und Windows : mit Java auf serielle Schnittstelle zugreifen ------------------------------------------------- Die benoetigten Dateien befinden sich auf http://www.gnomsoft.de/RS232-1.0.zip Am einfachsten ist folgende Vorgehensweise, wenn die .asm Assembler-Dateien im Verzeichnis /home/knoppix/avr stehen: 1) obige ZIP-Datei in das Verzeichnis /home/knoppix/avr kopieren und dort entpacken 2) den Assembler gavrasm besorgen von http://www.avr-asm-tutorial.net/gavrasm/index_de.html An dieser Stelle moechte ich mich bei Gerhard Schmidt fuer den Assembler bedanken, der sowohl unter Windows und Linux funktioniert. 3) die ausfuehrbare Datei gavrasm bzw. gavrasm.exe nach /home/knoppix/avr kopieren 4) zB. buttons.asm assemblieren mit ./gavrasm buttons.asm 5) testen ob Java richtig installiert ist mit : java HalloWelt 6) AVR programmieren mit : java AVRprog buttons 7) AVR schneller programmieren mit : java AVRprog -b wasgrosses Mit der -b Option wird blockweise uebertragen. Damit lassen sich recht kurze Programmierzeiten erreichen. Das STK500 programmiert noch etwas schneller, da dort mit 115200 Baud gearbeitet wird und einem Datenpuffer von 256 Byte (AVRprog nutzt 19200 Baud und 64 Byte Puffer). Da die Spezifikation des STK500 mittlerweile von Atmel offengelegt wordem ist, kann AVRprog.java und progger.asm auch als Vorlage benutzt werden, ein STK-Pendant zu entwickeln. Die C-Bibliotheksdateien zum Zugriff auf die serielle Schnittstelle (libRS232.so und RS232.dll) sind fertig kompiliert und werden automatisch in das passende Verzeichnis kopiert, wenn AVRprog.class zum ersten mal ausgefuehrt wird. Ich hatte mich entschlossen, diese C-Bibliotheken selbst zu programmieren, da die "javax.comm.*" Bibliotheken von SUN zu langsam sind (Faktor 10) und mir die verfuegbaren Linux-Bibliotken zu kompliziert zu installieren waren. Auch hatte mich JNI interessiert, mit denen die Moeglichkeiten von Java mit C-Bibliotheken beliebig erweitert werden koennen. Dokumentation dazu steht auf http://java.sun.com/docs/books/jni/ Um mit Linux die seriellen Schnittstellen zu nutzen muss man entweder root-Rechte haben oder in der Benutzergruppe uucp sein oder sonstwie Zugriffsrechte auf /dev/ttyS? und /var/lock haben. Terminalprogramme: ------------------ Wer die C-Bibliotheken benutzen will, um mit eigenen Java-Programmen auf die serielle Schnittstelle zuzugreifen, der kann das unter Linux mit "minicom" machen und unter Windows mit "Hyperterminal". Beide sind jeweils auf Baudrate, Schnittstelle etc. zu konfigurieren. minicom ist normalerweise bei Linux bereits installiert, hat eine eigene man page und wird am besten gestartet mit Angabe einer vorher gespeicherten Konfigurationsdatei: minicom meine.dfl Hyperterminal ist zu erreichen ueber Menueoptionen Start->Zubehoehr->Hyperterminal->Hyperterminal Auch hier kann die Konfiguration gesichert werden und dann laesst sich Hyperterminal auch von der Konsole aus starten mit start Hypertrm meine.ht Zum Selber-Kompilieren : ------------------------ Unter Linux wird die Client-Software fuer den progger folgendermassen kompiliert, wobei der Pfad zu Java entsprechend anzupassen ist. Das Ergebnis ist dann libRS232.so gcc -shared -I/usr/local/bin/j2sdk.4.1_01/include -I/usr/local/bin/j2sdk.4.1_01/include/linux RS232linux.c Unter Windows ist so zu verfahren (die Verzeichnisse fuer Visual C++ und Java sind wieder anzupassen): C:\Program Files\Microsoft Visual Studio\VC98\BIN Damit sind alle Umgebungsvariablen gesetzt und es kann RS232.dll erstellt werden mit : cl -Ic:\java\include -Ic:\java\include\win32 -LD RS232windows.c -FeRS232.dll Der Java-Client wird kompiliert wird javac AVRprog Damit werden auch automatisch die RS232*.java Dateien kompiliert. Die progger-Software wird assembliert mit ./gavrasm progger.asm Dateiliste der ZIP-Datei: --------------------------------------------- 28833 02-16-03 14:14 progger.asm 2311 02-16-03 14:17 dbg115.inc 4092 02-16-03 14:17 progger.hex 45056 01-29-03 00:04 RS232.dll 8247 02-01-03 00:21 libRS232.so 3337 02-15-03 12:37 RS232.class 988 02-01-03 00:16 RS232InputStream.class 1078 01-30-03 15:07 RS232OutputStream.class 9628 02-15-03 12:31 AVRprog.class 896 01-30-03 13:07 HalloWelt.class 1811 02-06-03 12:41 RS232Native.h 6476 02-16-03 13:16 RS232linux.c 4811 02-16-03 13:30 RS232windows.c 4042 02-15-03 12:37 RS232.java 1597 02-01-03 00:16 RS232InputStream.java 1626 01-30-03 14:13 RS232OutputStream.java 181 02-15-03 21:08 liesmich.txt Der Vollstaendigkeit hier noch ein kleines Java-Programm, mit dem ich den Zugriff auf die serielle Schnittstelle getestet hatte: Ping.java import java.io.*; import java.util.*; public class Ping { static InputStream in = null; static OutputStream out = null; /** * */ static public RS232 openRS232(String portName) { RS232 port = RS232.open(portName, 19200, 8, 0); in = port.getInputStream(); out = port.getOutputStream(); return port; } static public void main(String[] params) { String portName = null; int loops = 10; byte[] outBuffer = "ping".getBytes(); byte[] inBuffer = new byte[4]; long startTime = 0; long endTime = 0; long diff = 0; switch (params.length) { case 0 : System.out.println("Ping.java: !!! specify port name ! ") ; return; case 1 : portName = params[0]; break ; case 2 : portName = params[0]; loops = Integer.parseInt(params[1]); break ; default : System.out.println("Ping.java: wrong parameter count !!!") ; return; } RS232 port1 = openRS232(portName); // RS232 port2 = RS232.open("/dev/ttyS1", 19200, 8, 0); startTime = System.currentTimeMillis(); try { for (int i= 0; i < loops; i++) { out.write(outBuffer); System.out.println("Ping.java: outBuffer "+new String(outBuffer)) ; in.read(inBuffer); System.out.println("Ping.java: inBuffer "+new String(inBuffer)) ; } } catch (Exception ex) { System.out.println("Ping.java: ex: "+ex) ; } endTime = System.currentTimeMillis(); diff = endTime - startTime ; System.out.println("Ping.java: for "+loops+" loops: "+diff) ; port1.close(); } }
Hier die Schaltung und die Software AVR 910 (scrollen) http://www.atmel.com/dyn/products/app_notes.asp?family_id=607 Hier die erweiterte Software. Man muß sich zwar anmelden, aber dafür bleiben denn auch Spielekonsolenbauer aus dem Forum. Es wäre natürlich leichter gewesen das File hier reinzustellen aber ich verstehe die Bitte von Andreas, nur zu linken. http://www.avrfreaks.net/Freaks/freakshow.php Tip: Studio 3.55 <Project> <Project Settings...> <Output file formats> Intel Intellec 8/MDS (Intel Hex) Es wird ein HEX file erzeugt <Tools> AVR Prog Pfad vom HEX file Wenn der Programmer funktioniert meldet er sich.
Hallo AVR Programmierer, hier ist der Thread aus dem AVR Forum zur Änderung für Mega8: http://www.avrfreaks.net/phorum/read.php?f=3&i=27124&t=27094#27124 Hir noch mal das wesentliche für alle die nicht registriert sind: Add the following constants under the "Device Codes" section: .equ m8 = 0x76 ; ATmega8 .equ m8b = 0x77 ; ATmega8 BOOT Also, under "w3:": ldi u_data,m8 ; putc (mega8); rcall putc ldi u_data,m8b ; putc (mega8 BOOT); rcall putc and under "w7:": cpi device,m8 ; (device != m8) && breq w72 cpi device,m8b ; (device != m8 BOOT) && breq w72 Finally, under "writeFLASHdelay:": cpi device,m8 breq w92 cpi device,m8b breq w92
Hallo, für den GNU Java Compiler bzw. Interpreter (gcj bzw. gij) ist die libRS232.so Bibliothek vorher händisch in das Verzeichnis zu kopieren, das in LD_LIBRARY_PATH spezifiziert ist. Dann funktioniert das ganze auch mit GNU Java. Das automatische Installieren der lib durch die RS232-Klasse geht leider nicht, da gij die Systemvariable "java.library.path" (noch) nicht kennt. Vielen Dank an die AVRfreaks-Leser für die Hinweise auf die notwendigen Änderungen für den MEGA8. Habt Ihr zufällig bei den freaks gelesen, daß jemand das STK500 protokoll implementiert ? Die Spezifikation an sich ist zwar von Atmel offengelegt, aber mir ist momentan nicht bekannt, daß jemand was konkretes dazu programmiert. Ich meine also, daß entweder von Linux aus das STK500 programmiert werden kann und/oder daß ein AVR so programmiert wird, daß er sich wie ein STK500 verhält (ggfls. auf Steckbrett) und mit STK500.exe bzw. AVR Studio kommunizieren kann. Danke, Gerhard
hi...i am working on a data logger using ATMEGA16L. I need to interface a keypad with my microcontroller..wheer can i find monitor program for the ATMEGA16L
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.