www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Mac wie?


Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: pst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was fuer ein Board? Was fuer ein USB-Chip? Hast du ueberhaupt einen 
Treiber dafuer?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was fürn Tutorial, was fürn Exboard???

Beschreib mal Dein Problem, ohne daß man Deine Gedanken lesen können 
muß.


Peter

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieses Board:

http://www.ulrichradig.de/
->avr
->Experimentierboard

Treiber???

Hoffe ihr könnt was damit anfangen

Flo

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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=20061...

(selbst nicht getestet, man wird gegebenenfalls den Devicenamen anpassen 
müssen, wie man den herausfindet, steht da aber auch)

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch wenn da steht, wie man den rausfindet... (seh ich nicht) was muss 
ich den eingeben, speziell für dieses Problem?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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
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.

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: mitleser ( gast) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Tiny2313 ist korrekt programmiert?

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht mit ZTerm.
Jetzt werd ich mal das Tutorial weiter machen.

Danke für die viele Hilfe

Flo

Autor: mitleser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo flo,

schau mal hier: 
http://wiki.openmoko.org/wiki/MacOS_X#Connecting_a...

dann unter /dev nachschauen ob cu.xxxx oder tty.xxxx vorhanden ist.

lass dich nicht entmutigen, der Mac ist eine sehr gute 
Entwicklungsplattform.

Mitleser

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Winfried J. (Firma: Nisch-Aufzüge) (winne)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schice per copy was du willst an das neu gerät oder per console

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
???
???
???
so klappts nicht
???
???
???

Flo

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab jetzt dieses Programm geflasht:
#include <avr/io.h> 

#define USART_BAUDRATE 9600 
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) 

int main (void) 
{ 
   char ReceivedByte; 

   UCSRB |= (1 << RXEN) | (1 << TXEN);   // Turn on the transmission and reception circuitry 
   UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // Use 8-bit character sizes 

   UBRRL = BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register 
   UBRRH = (BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register 

   for (;;) // Loop forever 
   { 
      while ((UCSRA & (1 << RXC)) == 0) {}; // Do nothing until data have been recieved and is ready to be read from UDR 
      ReceivedByte = UDR; // Fetch the recieved byte value into the variable "ByteReceived" 

      while ((UCSRA & (1 << UDRE)) == 0) {}; // Do nothing until UDR is ready for more data to be written to it 
      UDR = ReceivedByte; // Echo back the received byte back to the computer 
   }    
}

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

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keiner ne idee?

Flo

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>  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?

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ES GEHT!!! Danke
.include "m8def.inc"
 
.def temp = R16
 
.equ F_CPU = 12000000                            ; Systemtakt in Hz
.equ BAUD  = 9600                               ; Baudrate
 
; Berechnungen
.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))     ; Reale Baudrate
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille
 
.if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))       ; max. +/-10 Promille Fehler
  .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!"
.endif
 
.org 0x00
        rjmp main
 
.org URXCaddr
        rjmp int_rxc
 
; Hauptprogramm
main:
    
    ; Stackpointer initialisieren
 
    ldi     temp, LOW(RAMEND)
    out     SPL, temp
    ldi     temp, HIGH(RAMEND)
    out     SPH, temp
 
    ; Port B = Ausgang
 
    ldi     temp, 0xFF
    out     DDRB, temp
 
    ; Baudrate einstellen
 
    ldi     temp, HIGH(UBRR_VAL)
    out     UBRRH, temp
    ldi     temp, LOW(UBRR_VAL)
    out     UBRRL, temp
 
    ; Frame-Format: 8 Bit
 
    ldi     temp, (1<<URSEL)|(3<<UCSZ0)
    out     UCSRC, temp
 
    sbi     UCSRB, RXCIE                ; Interrupt bei Empfang
    sbi     UCSRB, RXEN                 ; RX (Empfang) aktivieren
    
    sei                                 ; Interrupts global aktivieren
    
loop:
    rjmp loop                           ; Endlosschleife
 
; Interruptroutine: wird ausgeführt sobald ein Byte über das UART empfangen wurde
 
int_rxc:
    push    temp                        ; temp auf dem Stack sichern
    in      temp, sreg                  ; SREG sichern
    push    temp
    
    in      temp, UDR                   ; UART Daten lesen
    cpi     temp, '1'                   ; empfangenes Byte mit '1' vergleichen
    brne    int_rxc_1                   ; wenn nicht gleich, dann zu int_rxc_1
    cbi     PORTB, 0                    ; LED einschalten, low aktiv
    rjmp    int_rxc_2                   ; Zu int_rxc_2 springen
int_rxc_1:
    cpi     temp, '0'                   ; empfangenes Byte mit '0' vergleichen
    brne    int_rxc_2                   ; wenn nicht gleich, dann zu int_rxc_2
    sbi     PORTB, 0                    ; LED ausschalten, low aktiv
int_rxc_2:
 
    pop     temp
    out     sreg, temp                  ; SREG wiederherstellen
    pop     temp                        ; temp wiederherstellen
    reti

Ich kann null und eins eingeben und die lampe geht an und aus.

Danke

Flo

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.