- fchao-Sinus-Wechselrichter AliExpress         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 38

Thema: Gameboy Kamera an rs232

  1. #21
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    38
    Beiträge
    674
    Anzeige

    Praxistest und DIY Projekte
    hier der Code aus TWI.h:
    Code:
    #ifndef TWI_H
    #define TWI_H
    
    #include <avr/io.h>
    #include <stdint.h>
    
    #define SEND 0
    #define READ 1
    
    void TWI_init(uint8_t);
    uint8_t TWI_start(uint8_t);
    void TWI_sendbyte(uint8_t);
    uint8_t TWI_readbyte(void);
    void TWI_stop(void);
    
    #endif
    TWI.c
    Code:
    #include "TWI.h"
    
    
    /*  TWI initialisieren  */
    
    void TWI_init(uint8_t ownaddr)
    {
    	TWAR = ownaddr;
    	TWSR &= 0xFC;
    	TWBR = 0x0;
    }
    
    
    /*  Start und Slaveaddresse senden  */
    
    uint8_t TWI_start(uint8_t ndevaddr)
    {
     	TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
    	while(!(TWCR & (1<<TWINT)));
     	TWDR = ndevaddr;
    	TWCR = (1<<TWINT) | (1<<TWEN);
    	while(!(TWCR & (1<<TWINT)));
    }
    
    
    /*  Byte senden  */
    
    void TWI_sendbyte(uint8_t nbyte)
    {
    	TWDR = nbyte;
    	TWCR = (1<<TWINT) | (1<<TWEN);
    	while(!(TWCR & (1<<TWINT)));
    }
    
    
    /*  Byte lesen  */
    
    uint8_t TWI_readbyte(void)
    {
    	TWCR |= (1<<TWINT) | (1<<TWEA);
    	while(!(TWCR & (1<<TWINT)));
    
    	return TWDR;
    }
    
    
    /*  Stop senden  */
    
    void TWI_stop(void)
    {
    	TWCR = (1<<TWINT) | (1<<TWSTO) | (1<<TWEN);
    }
    sram.h
    Code:
    #ifndef SRAM_H
    #define SRAM_H
    
    #include <inttypes.h>
    #include <avr/io.h>
    
    #define 	WE_PIN 		0		//  WriteEnable
    #define		WE_PORT		PORTB
    
    #define		CS_PIN		2		//  ChipSelect
    #define		CS_PORT		PORTB
    
    #define		LE_PIN		3		//  LatchEnable
    #define		LE_PORT		PORTB
    
    #define		ADDR		PORTA		//  Addressport
    
    void sram_write_byte(uint16_t, uint8_t);
    uint8_t sram_read_byte(uint16_t);
    void Latch(uint8_t);
    
    #endif
    sram.c
    Code:
    #include "sram.h"
    
    
    /*  Byte in sram speichern  */
    void sram_write_byte(uint16_t address, uint8_t data)
    {
    /*  Addresse anlegen  */
    	Latch(address & 0x00FF);
    	ADDR = ((address & 0xFF00) >> 8);
    
    /*  Byte anlegen  */
    	DDRC |= 0xFC;
    	DDRD |= 0x30;
    	PORTC = (data & 0xFC);
    
    	PORTD &= ~0x30;
    	PORTD |= ((data<<4) & 0x30);
    
    /*  Byte speichern  */
    	WE_PORT &= ~(1<<WE_PIN);
    	delay(2);
    	WE_PORT |= (1<<WE_PIN);
    }
    
    
    /*  Byte aus sram lesen  */
    uint8_t sram_read_byte(uint16_t address)
    {
    
    /*  Addresse anlegen  */
    	Latch(address & 0x00FF);
    	ADDR = ((address & 0xFF00) >> 8);
    
    /*  Byte lesen und zurückgeben  */
    	DDRC = 0x0;
    	DDRD &= ~0x30;
    	delay(2);
    	return ((PINC & 0xFC) | ((PIND & 0x30)>>4)); 
    }
    
    void Latch(uint8_t wert)
    {
    	ADDR = wert;
    	LE_PORT |= (1<<LE_PIN);
    	delay(2);
    	LE_PORT &= ~(1<<LE_PIN);
    }
    der Code zum Ansteuern des sram sieht ein wenig komisch aus, weil ich keinen freien Port mehr für die Daten übrig hatte, so habe ich 6Pins vom PortC und 2 Pins vom PortD verwendet, was das ganze komplizierter macht

    da ist dies bestimmt auch drin: sram_write_byte(counter, TWI_readbyte());
    ja, das wirst du auch finden, aber es erklärt sich doch von fast selbst: es wird eine Funktion namens sram_write_byte aufgerufen, die ein Byte in den sram schreibt, als Argumente gibts einmal eins vom Typ uint16_t, was die Addresse im Ram sein wird und einen 8 Bit-Wert, in dem die Daten stehen

  2. #22
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    der at90s8515 müsste doch zum ansteuern gehen. er hat die pins a0-a15 oder???.
    mfg pebisoft

  3. #23
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    38
    Beiträge
    674
    dann müsste er auch ein externes Speicherinterface haben, womit du externen sram wie internes verwenden kannst

    allerdings, wenn es auf die Geschwindigkeit nicht ganz so sehr ankommt, kann man den sram auch an jeden AVR anschließen(so hab ich das auch gemacht)

  4. #24
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    welche pins vom sram schliest du wo am at90s8515 an und welche brauchen nicht angeschlossen werden.
    mfg oebisoft

  5. #25
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.11.2003
    Beiträge
    136
    Hallo,
    hier mal der Schaltplan von Daniel Herrington (ist leider nicht mehr im Netz), der funzt bei mir mit einen anderen AD-Wandler einwandfrei.

    @pebisoft das Programm dafür haste ja schon
    Angehängte Dateien Angehängte Dateien
    Gruß
    -=jens=-

  6. #26
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.05.2004
    Ort
    Detmold
    Alter
    37
    Beiträge
    557
    Öhm... das ganze wurde auch schon erfolgreich in Bascom gelöst von Mr. Nobody oder so...

    Gruß, Trabukh
    "Der Mensch wächst am Widerstand" (Werner Kieser)

  7. #27
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    09.12.2004
    Beiträge
    485
    Zitat Zitat von pebisoft
    kondensatoren, die die vorgegebene toleranz , die der hersteller vorgibt auch einhalten. und das ist nicht immer der fall, condensatoren kann man nicht so einfach mit einem messgerät prüfen wie einen widerstand.
    mfg pebisoft
    Hallo Pebisoft

    Also ich hatte noch nie Probleme mit einer Pegelanpassung bei dem Max232 aufgrund von Fertigungstoleranzen bei Kondensatoren.

    Und das mit dem Messen stimmt eigentlich auch nicht.
    Du kannst mit einem normalen Wiederstandsmeßgerät nachmessen ob der Kondensator noch brauchbar ist (ist der C hochomig genug ? ).
    Außerdem besitzen die meißten Multimeter mittlerweile auch ein Kapazitätsmeßgerät. Da wird dann zb mit einer bekannten Induktivität ein Schwingkreis gebildet und die Frequenz nachgemessen, ...

    Mittlerweile bin ich auf den Max202 umgestiegen, der braucht nur mehr 100nF C. Und auch mit dem habe ich noch nie Probleme gehabt.
    Und das noch dazu wo ich einen Nachbau verwende (HIN202EBN) der viel billiger ist.


    LG
    Rubi

  8. #28
    Benutzer Stammmitglied
    Registriert seit
    05.05.2005
    Ort
    ZH-Winterthur
    Beiträge
    99
    Ich bin im Moment dabei eine Materialliste zu erstellen wobei ich noch etwas Hilfe brauche da ich zur zeit noch nicht all zu fiel über den ATMega weiss.

    Materialliste:
    ATMega16-16
    ADC: PCF8591
    SRAM: 62256-80
    ?-RS232: Max232
    ?-Quarze und dazugehörige Kondensatoren
    ?-Sonstige Teile die zum betrieb notwendig sind.
    Und jede menge Fassungen, Spannungsregler, Kabel,...

    Zudem Suche ich noch einen geeigneten Shop der in die Schweiz liefert und nicht zu teuer ist. Musste feststellen das Distrelec fast vier mal Teurer ist als Reichelt. Kennt jemand einen Shop der meinen Anforderungen entspricht? Reichelt liefert erst ab 150€ in die Schweiz.

    Ist der Grundaufbau auf dem Bild korrekt? Frage ich nur weil ich noch nie mit einem ATMega gearbeitet habe. Die restlichen Teile anzuschliessen ist dann kein Problem mehr.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken th_atmega16-programmer.png  

  9. #29
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    hallo rubi, herzlichen glückwunsch...........
    es können aber nicht alle so schlau nachmessen wie du schilderst..........
    oder kannst du einen laien klar machen wie 5% toleranzunterschied von 0,01 us gemessen werden kann und wie gross dazu der schwingkreis sein muss.
    mfg pebisoft

  10. #30
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    09.12.2004
    Beiträge
    485
    Zitat Zitat von pebisoft
    hallo rubi, herzlichen glückwunsch...........
    es können aber nicht alle so schlau nachmessen wie du schilderst..........
    oder kannst du einen laien klar machen wie 5% toleranzunterschied von 0,01 us gemessen werden kann und wie gross dazu der schwingkreis sein muss.
    mfg pebisoft
    Hallo Pebisoft

    Ich möchte hier mal behaupten, das dem MAX232 egal ist, ob man jetzt einen 1uF, 4,7uf oder 10uF C anschließt, er wird ohne Problem funktionieren.
    Aber ich, möchte eigentlich nicht mit Dir streiten.
    Habe das nur erwähnt, damit man nicht einen Fehler an der falschen Stelle vermutet und ich schon dutzende Max232 verwendet habe und nicht einer ein Problem mit Kapazitäten hatte.
    Habe einmal sogar uralte 1uF C genommen, die sicher weit von ihrem soll Wert entfernt waren und dennoch hat alles gefunzt.
    Glaubs mir bitte oder probier es einmal aus, dieser IC ist wirklich absolut unkritisch was die Lade C betrifft.

    LG
    Rubi

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests