Mit welchem Programm kann ich den im Tutorial beschriebenen UART abfragen? (Mac 10.5) ZTerm erkennt nicht, dass das Exboard nativen USB Support hat und zeigt gar nichts an... wie soll ich vorgehen? Muss ich noch irgendwas einstellen? Mein Quarz hat 12Mhz. Danke Guten Rutsch Flo
Was fuer ein Board? Was fuer ein USB-Chip? Hast du ueberhaupt einen Treiber dafuer?
Was fürn Tutorial, was fürn Exboard??? Beschreib mal Dein Problem, ohne daß man Deine Gedanken lesen können muß. Peter
Dieses Board: http://www.ulrichradig.de/ ->avr ->Experimentierboard Treiber??? Hoffe ihr könnt was damit anfangen Flo
Da ist ein in Software auf einem Atiny2313 implementiertes USB-CDC drauf. Der Mac sollte das unterstützen, allerdings bedarf es noch eines Terminalprogrammes. Hier wird beschrieben, wie man das mit Bordmitteln hinbekommen kann: http://www.macosxhints.com/article.php?story=20061109133825654 (selbst nicht getestet, man wird gegebenenfalls den Devicenamen anpassen müssen, wie man den herausfindet, steht da aber auch)
Auch wenn da steht, wie man den rausfindet... (seh ich nicht) was muss ich den eingeben, speziell für dieses Problem?
> You may also need to customize the screen command with a > different device name if you are using something other > than the Keyspan Serial Adapter > (do an ls tty* of the dev directory to get the right name). Im Terminal musst Du also
1 | ls /dev/tty* |
eingeben, dann siehst Du alle Devices, deren Name mit tty anfängt. Mit Terminal ist die MacOS-Applikation gemeint, die der Windows-"Eingabeaufforderung" entspricht, nicht das die serielle Schnittstelle bedienende Terminalprogramm.
uiuiui wenn ich das mal nicht gewusst hab... echt :( das man das so macht ist klar. Nur kommt da nichts, was mit USB zu tun hat... Flo
Hallo flo, nach dem Lesen der Webseite http://www.ulrichradig.de und dem Link http://www.obdev.at/products/avrusb/projects-de.html brauchst du nur das Board mit Strom zu versorgen. Treiber sind nicht nötig. Im Terminal kannst du mit folgendem Befehl tail -f /var/log/system.log den Anschlussversuch beobachten, auch eventuelle Fehler werden dort gelistet. Auch findest du dort die Bezeichnung der Schnittstelle. Bitte den Mac mit der Platine verbinden. weiteres Vorgehen nach Rufus t. Firefly erstem Artikel. Mitleser
Es hat so weit funktioniert: IOUSBFamily is having trouble enumerating a USB device that has been plugged in. It will keep retrying. (Port 1 of hub @ location: 0x1d000000) Jan 1 15:24:34 Macintosh kernel[0]: USBF: 14738.285 [0x2b74d00] The IOUSBFamily was not able to enumerate a device. Habt ihr noch ne Idee, woran es liegen könnte? Was für Fuses muss ich nehmen? Danke schonmal Flo
ich glaub ich habs jetzt: Jan 1 16:02:04 Macintosh kernel[0]: AppleUSBCDCACMData: start: InterfaceMappings dictionary not found for this device. Assume CDC Device... Jan 1 16:02:04 Macintosh kernel[0]: AppleUSBCDC::createSerialStream NON WAN CDC Device Jan 1 16:02:04 Macintosh kernel[0]: AppleUSBCDC::createSerialStream using default naming and suffix... Jan 1 16:02:04 Macintosh kernel[0]: AppleUSBCDCACMData: Version number - 3.2.12, Input buffers 8, Output buffers 16 was muss ich jetzt für tty angeben? Danke Flo
Wenn man das Gerät an nen Windows PC (XP) anschließt kommt: Neue Hardware gefunden USB-R232 Device Nur das mit den Treibern klappt noch nicht so. Also ich denke, dass der richtig Programmiert ist... Hoffe, dass es auch bald am Mac läuft. Danke Flo
Es geht mit ZTerm. Jetzt werd ich mal das Tutorial weiter machen. Danke für die viele Hilfe Flo
hallo flo, schau mal hier: http://wiki.openmoko.org/wiki/MacOS_X#Connecting_a_Mac_and_an_Openmoko_device dann unter /dev nachschauen ob cu.xxxx oder tty.xxxx vorhanden ist. lass dich nicht entmutigen, der Mac ist eine sehr gute Entwicklungsplattform. Mitleser
So läufts: tell application "Terminal" do script with command "screen /dev/cu.usbmodem1d11 9600" set number of rows of window 1 to 100 set number of columns of window 1 to 80 set background color of window 1 to "black" set normal text color of window 1 to "green" set custom title of window 1 to "SerialOut" end tell wie kann ich jetzt was senden? so wie im Tut beschrieben? Danke Flo
Ich hab jetzt dieses Programm geflasht:
1 | #include <avr/io.h> |
2 | |
3 | #define USART_BAUDRATE 9600
|
4 | #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)
|
5 | |
6 | int main (void) |
7 | {
|
8 | char ReceivedByte; |
9 | |
10 | UCSRB |= (1 << RXEN) | (1 << TXEN); // Turn on the transmission and reception circuitry |
11 | UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // Use 8-bit character sizes |
12 | |
13 | UBRRL = BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register |
14 | UBRRH = (BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register |
15 | |
16 | for (;;) // Loop forever |
17 | {
|
18 | while ((UCSRA & (1 << RXC)) == 0) {}; // Do nothing until data have been recieved and is ready to be read from UDR |
19 | ReceivedByte = UDR; // Fetch the recieved byte value into the variable "ByteReceived" |
20 | |
21 | while ((UCSRA & (1 << UDRE)) == 0) {}; // Do nothing until UDR is ready for more data to be written to it |
22 | UDR = ReceivedByte; // Echo back the received byte back to the computer |
23 | }
|
24 | }
|
mit screen kann ich jetzt darauf zugreifen aber wie kann ich zum Beispiel eine eins senden? weil man kann in dem Fenster nichts eingeben? Flo
> weil man kann in dem Fenster nichts eingeben?
Nicht? Focus auf Fenster setzen, auf der Tastatur die Taste 1 drücken
... das gibt natürlich nur dann ein sichtbares Echo, wenn Dein Programm
im µC korrekt funktioniert.
Sind denn die "Fuses" korrekt gesetzt, so daß die Takterzeugung auch
wirklich das macht, was Du mit F_CPU sicherlich auch irgendwo angibst?
ES GEHT!!! Danke
1 | .include "m8def.inc" |
2 | |
3 | .def temp = R16 |
4 | |
5 | .equ F_CPU = 12000000 ; Systemtakt in Hz |
6 | .equ BAUD = 9600 ; Baudrate |
7 | |
8 | ; Berechnungen |
9 | .equ UBRR_VAL = ((F_CPU+BAUD*8)/(BAUD*16)-1) ; clever runden |
10 | .equ BAUD_REAL = (F_CPU/(16*(UBRR_VAL+1))) ; Reale Baudrate |
11 | .equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000) ; Fehler in Promille |
12 | |
13 | .if ((BAUD_ERROR>10) || (BAUD_ERROR<-10)) ; max. +/-10 Promille Fehler |
14 | .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!" |
15 | .endif |
16 | |
17 | .org 0x00 |
18 | rjmp main |
19 | |
20 | .org URXCaddr |
21 | rjmp int_rxc |
22 | |
23 | ; Hauptprogramm |
24 | main: |
25 | |
26 | ; Stackpointer initialisieren |
27 | |
28 | ldi temp, LOW(RAMEND) |
29 | out SPL, temp |
30 | ldi temp, HIGH(RAMEND) |
31 | out SPH, temp |
32 | |
33 | ; Port B = Ausgang |
34 | |
35 | ldi temp, 0xFF |
36 | out DDRB, temp |
37 | |
38 | ; Baudrate einstellen |
39 | |
40 | ldi temp, HIGH(UBRR_VAL) |
41 | out UBRRH, temp |
42 | ldi temp, LOW(UBRR_VAL) |
43 | out UBRRL, temp |
44 | |
45 | ; Frame-Format: 8 Bit |
46 | |
47 | ldi temp, (1<<URSEL)|(3<<UCSZ0) |
48 | out UCSRC, temp |
49 | |
50 | sbi UCSRB, RXCIE ; Interrupt bei Empfang |
51 | sbi UCSRB, RXEN ; RX (Empfang) aktivieren |
52 | |
53 | sei ; Interrupts global aktivieren |
54 | |
55 | loop: |
56 | rjmp loop ; Endlosschleife |
57 | |
58 | ; Interruptroutine: wird ausgeführt sobald ein Byte über das UART empfangen wurde |
59 | |
60 | int_rxc: |
61 | push temp ; temp auf dem Stack sichern |
62 | in temp, sreg ; SREG sichern |
63 | push temp |
64 | |
65 | in temp, UDR ; UART Daten lesen |
66 | cpi temp, '1' ; empfangenes Byte mit '1' vergleichen |
67 | brne int_rxc_1 ; wenn nicht gleich, dann zu int_rxc_1 |
68 | cbi PORTB, 0 ; LED einschalten, low aktiv |
69 | rjmp int_rxc_2 ; Zu int_rxc_2 springen |
70 | int_rxc_1: |
71 | cpi temp, '0' ; empfangenes Byte mit '0' vergleichen |
72 | brne int_rxc_2 ; wenn nicht gleich, dann zu int_rxc_2 |
73 | sbi PORTB, 0 ; LED ausschalten, low aktiv |
74 | int_rxc_2: |
75 | |
76 | pop temp |
77 | out sreg, temp ; SREG wiederherstellen |
78 | pop temp ; temp wiederherstellen |
79 | reti |
Ich kann null und eins eingeben und die lampe geht an und aus. Danke Flo
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.