mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Max3392 Pegelwandler, BlueNiceCom 4


Autor: Ange (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,
ich habe gelesen, dass der Max3392 ein Pegelwandler von 5V auf 3,3V ist.
Es ist so, dass ich das Bluetooth-Modul BlueNiceComIV über die SPI 
Schnittstelle anschließen möchte. Nun dachte ich den 5V Pegel(Mosi, 
Miso)des Atmega128 über den Max3392-Baustein von Maxim auf den vom 
Bluetoothmodul benötigten von 3,3V anzupassen.Nur werde ich aus dem 
Datenblatt nicht ganz schlau, dort steht Vl 1,8V und Vcc 3,3V.
Wieso nicht 5V? Oder muss ich die Spannung für Vl auf 1,8V mit einem 
Spannungsregler anpassen?
Gruß Angelika

Autor: Ange (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Oh, sorry,
ich habe vergessen das Datenblatt anzuhängen.
außerdem habe ich fälschlicherweise SPI Schnittstelle geschrieben,
ich habe vor das Modul über die ISP-Schnittstelle anzuschließen.
Angelika

Autor: Ange (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
weiss jemand etwas dazu, oder bin ich mit dem Pegelwandler komplett auf 
der falschen Fährte?
Angelika

Autor: Ange (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder ... brauche ich gar keinen Pegelwandler?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun, die Präambel des Datenblatts nennt die möglichen Spannungsbereiche,
und ein Betrieb mit V[L] = 3,3 V und V[CC] = 5 V ist da auf jeden Fall
im Bereich des möglichen.  Im weiteren Verlauf gehen die Beispiele
allerdings dann sehr oft von V[L] = 1,8 V und V[CC] = 3,3 V aus,
offenbar war diese Wandlung die wesentliche Motivation bei Maxim beim
Entwurf dieser Pegelwandler.

Ob du einen brauchst oder nicht, hängt vom Rest ab.  3,3-V-Logik wird
häufig mit 5-V-festen Eingängen ausgeführt, dann benötigt man für
diese Richtung keine Pegelwandler.  Das Ausgangspotenzial eines
3,3-V-CMOS-Bausteins genügt in der Regel, um über die für 5-V-TTL-
Pegel geforderten 2,2 V als high sicher hinaus zu kommen.  Ist die
nachgeschaltete 5-V-Logik aber nicht TTL-kompatibel, sondern reines
CMOS, dann sind die knapp 3,3 V Ausgangspegel u. U. nicht für eine
sichere Erkennung als high ausreichend.

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende zwischen meinem AT90CAN und dem BNC IV einen 74HC4050 als 
Pegelwandler. Allerdings benutze ich den USART, nicht SPI.

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meinst du mit ISP Schnittstelle auch den USART?
Das BlueNiceCom kann nämlich nur über UART angesprochen werden...

Autor: Ange (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die ISP-Schnittstelle(in system programming) wird normalerweise dazu 
verwendet AVR Mikrocontroller zu programmieren.

Signal:     Pin:
MISO        1
Vcc         2
SCK         3
MOSI        4
/RESET      5
GND         6

ich habe bereits eine ISP auf seriell getestet, d.h. einen PC über 
serielle Schnittstelle mit der ISP-Schnittstelle eines Controllerboards 
verbunden.
Nun möchte ich das gleiche mit Hilfe von Bluetooth machen,
also ohne Kabel.
noch eine Frage:
Mit was verbinde ich die Rx-Leitung des Bluetooth-Moduls?
Mit Mosi oder Miso?

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MISO liegt an TX
MOSI an RX

Da du die Verbindungen kreuzen musst, muss RX vom BNC an MISO vom AVR.

Du benutzt also USART0...
Scheibar ohne zu Wissen das du USART benutzt. Wie hast du das mit der 
Software gemacht?

Autor: Ange (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ein Beispiel,sendet Zahlen von 1-9
#include <stdio.h>
#include <util/delay.h>

#include "qfixSoccerBoard.h"

/* CPU frequency */
#ifndef F_CPU
  #define F_CPU 16000000
#endif

/* UART baud rate */
#define UART_BAUD  9600


/*
 * Initialize the UART.
 */
void uart_init(void)
{
  UBRR0H = 0;
  UBRR0L = (F_CPU / (16UL * UART_BAUD)) - 1;

  UCSR0A = 0x00;
  UCSR0B = _BV(RXCIE0) | _BV(TXEN0); /* tx/rx enable */
  /* Set frame format: 8data, 2stop bit;*/
  UCSR0C = _BV(USBS0)|_BV(UCSZ00)|_BV(UCSZ01);
}

void USART_transmit(unsigned char a){
  while(!(UCSR0A &(1<<UDRE0))){}  
  UDR0 = a;    
  _delay_ms(500);
}

int main (void){

  uart_init();    
  for(;;){
      char c; 
      for (uint8_t i=0; i<=9; ++i) {
    c = i + '0';
    USART_transmit(c);    
            }    
  }  
}

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, wie ich vermutet habe, du benutzt den USART0...

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.