- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 4 von 4

Thema: GBCam Problem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von avrrobot
    Registriert seit
    12.01.2011
    Beiträge
    210
    Blog-Einträge
    9
    Schade, ich hatte gedacht, dass hier schon mal Leute mit der Kamera gebastelt haben.
    Sonst muss ich mich wohl um was andres bemühen.

  2. #2

  3. #3
    Erfahrener Benutzer Begeisterter Techniker Avatar von avrrobot
    Registriert seit
    12.01.2011
    Beiträge
    210
    Blog-Einträge
    9
    Falls jemand darin Fehler findet, hier ist mein aktueller Quellcode:
    Code:
    #include <stdint.h>
    #include <avr/io.h>
    #include <util/delay.h>
    void delay_us(uint16_t us);
    void gbcam_load_register(uint8_t address, uint8_t data);
    
    void ports_init()
    {
        DDRB |= (1<<PB0);
        DDRB |= (1<<PB1);
        DDRB |= (1<<PB5);
        DDRB |= (1<<PB6);
        DDRB |= (1<<PB7);
        DDRB  &= ~(1<<DDB4);
        PORTB |= (1<<PB4);
    }
    
    void cam_reset(void)
    {
        PORTB &= ~(1<<PB0);
        delay_us(2);
        PORTB |= (1<<PB6);
        delay_us(11);
        PORTB |= (1<<PB0);
        delay_us(2);
        PORTB &= ~(1<<PB6);
        delay_us(2);
    }
    
    void delay_us(uint16_t us)
    {
        uint16_t zaehler;
        while (us)
        {
            zaehler = F_CPU / 5000000;
            while (zaehler)
            {
                asm volatile ("nop");
                zaehler--;
            }
            us--;
        }
    }
    
    static uint8_t gbcam_register[8];
    
    void gbcam_load_register(uint8_t address, uint8_t data)
    {
        uint8_t i;
        address &= 0x07;
        gbcam_register[address] = data;
        for (i=0;i<3;i++)
        {
            if ( ( address & 0x04 ) > 0 ) {
                PORTB |= (1<<PB5);
            }
            address <<= 1;
    
            PORTB |= (1<<PB6);
            delay_us(11);
            PORTB &= ~(1<<PB6);
            delay_us(2);
            PORTB &= ~(1<<PB5);
            delay_us(2);
        }
        for (i=0;i<8;i++)
        {
            if ( ( data & 0x80 ) > 0 )
                PORTB |= (1<<PB5);
            data <<= 1;
            PORTB |= (1<<PB6);
            delay_us(6);
            if (i == 7) {
                PORTB |= (1<<PB7);
            }
            delay_us(6);
            PORTB &= ~(1<<PB6);
            delay_us(2);
            PORTB &= ~((1<<PB5)|(1<<PB7));
            delay_us(2);
        }
    }
    void gbcam_init(void)
    {
        cam_reset();
        gbcam_load_register( 0,0x80);
        gbcam_load_register( 1,0x04);
        gbcam_load_register( 2,0x06);
        gbcam_load_register( 3,0x00);
        gbcam_load_register( 4,0x01);
        gbcam_load_register( 5,0x00);
        gbcam_load_register( 6,0x01);
        gbcam_load_register( 7,0x2A);
    }
    void gbcam_start(void)
    {
        PORTB |= (1<<PB1);
        delay_us(2);
        PORTB |= (1<<PB6);
        delay_us(10);
        PORTB &= ~(1<<PB1);
        delay_us(2);
        PORTB &= ~(1<<PB6);
        delay_us(2);
    }
    
    int main()
    {
        ports_init();
        gbcam_init();
        gbcam_start();
        while(1)
        {
        }
    }
    Wenn ich das gbcam_init und gbcam_start auch noch mit warten in die Schleife schreibe,
    dann kommt zwar das im ersten Beitrag beschriebene Signal,
    aber READ geht nie auf High,
    auch nicht beim obigen Quelltext.
    Ach ja, der Quelltext ist natürlich nicht von mir, ich hab nur angeglichen.

Ähnliche Themen

  1. ATMega32 UART problem --> Problem gelöst
    Von ChristophB im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 12.03.2010, 18:45
  2. Problem mit Atmega644P Erkennung (Bascom-Versions-Problem)
    Von Rohbotiker im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 11.08.2008, 18:52
  3. Simple Anschaltung von GBCam an AVR (Mega 32)
    Von xanadu im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 01.02.2006, 20:59

Berechtigungen

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

12V Akku bauen