• 4 odgovora
  • 2.693 pregleda
AtMega8 bitwise (bit toggle) 07.04.2013. u 16:51 · pre 164 meseci #1
Drugari, potrebna mi je pomoc, trivijalan program ali ne vidim gde gresim...
Naime, imam 2xCA 7seg. displeje i radim multipleks sa 2xBC557 (PNP)
Jedna baza je vezana na PORTD.7 a druga na PORTB.0.
Na jednom treba da se ispisuje "1" a na drugom "2".
Meni se desava da se na prvom ispisuje "1", dok se na drugom menjaju "1" -> "2" -> "1" -> "2"...
Kôd je ispod, molio bih da mi neko kaze gde gresim.
Code:

#include <avr/io.h>
#include <util/delay.h>

#ifndef F_CPU
#define F_CPU 12000000UL
#endif

int main(void){

    DDRD=0xFF;        //svi izlazni
    PORTD=0xFF;        //svi na 1 (5V)
    
    DDRB=0x3F;        //izlazni PB0-5
    PORTB=0x3F;        //svi na 1 PB0-5 (5V)
    
    while(1){
    
        PORTD=0xff;
        PORTD=0xf9;    //1
        PORTD&=0b01111111;
        _delay_ms(100);
        PORTD|=0b10000000;
        _delay_ms(100);
        
        
        PORTD=0xff;
        PORTD=0xa4;    //2
        PORTB|=(1<<PINB0);
        _delay_ms(100);
        PORTB=~(1<<PINB0);
        _delay_ms(100);    
        
    }//while
}//main

Ignorisati sto je jos pinova PORTB definisano kao izlazno, na ova dva se vezuju displeji.

Unapred hvala na odgovoru.
Potpis
There are only 10 types of people in the world:
those who understand binary, and those who don't.
Re: AtMega8 bitwise (bit toggle) 07.04.2013. u 17:48 · pre 164 meseci #2
Mislim da se ne varam u sledećem:

ovom naredbom:
PORTD=0xa4; //2
palis i portd.7 cime se aktivira i displej jedan dok je na data bus-u kod za broj 2.
Re: AtMega8 bitwise (bit toggle) 07.04.2013. u 18:40 · pre 164 meseci #3
0xA4 (hex) je isto sto i 0b10100100 (binarno).
PORTD.7 je 1 (8. bit), znaci dispej treba da je iskljucen (ponavljam, displeje ukljucujem/iskljucujem PNP tranzistorima -> kad je na pinu 1 -> tranz. iskljucen i obrnuto, a displeji su sa zajednickom anodom).
Potpis
There are only 10 types of people in the world:
those who understand binary, and those who don't.
Re: AtMega8 bitwise (bit toggle) 07.04.2013. u 19:23 · pre 164 meseci #4
Mislim da ovde

PORTB|=(1<<PINB0);
_delay_ms(100);
PORTB=~(1<<PINB0);
_delay_ms(100);

PORTB|=(1<<PINB0); i PORTB=~(1<<PINB0); treba da zamene mesta.

U svakom slučaju bi stavio i PORTB&=~(1<<PINB0); umesto PORTB=~(1<<PINB0); mada to u ovom slučaju nije bitno.

Re: AtMega8 bitwise (bit toggle) 07.04.2013. u 21:37 · pre 164 meseci #5
To je to uart! :) Veliko hvala. Rekoh da je trivijalno, al kad mozak stane stao je.

Jos jednom hvala na odgovorima! Pozdrav.
Potpis
There are only 10 types of people in the world:
those who understand binary, and those who don't.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme