Forum: Mikrocontroller und Digitale Elektronik Max3392 Pegelwandler, BlueNiceCom 4


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ange (Gast)


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

von Ange (Gast)


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

von Ange (Gast)


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

von Ange (Gast)


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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Marco (Gast)


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.

von Marco (Gast)


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

von Ange (Gast)


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?

von Marco (Gast)


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?

von Ange (Gast)


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);    
            }    
  }  
}

von Marco (Gast)


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.