Hallo,
Ich habe ein echt merkwürdiges Problem!
Ich habe mir einen Programmer gebaut, an welchen man vier
Controller programmieren kann....
Man kann diese per Knopfdruck über Multiplexer durchschalten.
Dazu sitzt ein ATmega8 drauf.
Der muss lediglich zwei Leitungen binär von 0-3 ausgeben (für die Multiplexer)
und vier LEDs schalten.
Und einen Taster als Eingang.
Das Ganze habe ich so geschrieben:
Code:
// -=> AVR Includes <=-
#include <avr/io.h>
int main (void){
DDRC = 0b00111100;
DDRD = 0b00011000;
PORTD |= (1<<PD2)|(1<<PD5);
uint8_t channel = 0;
uint8_t flag = 0;
uint8_t prell = 0;
// -=> Hauptschleife <=-
while(1){
if(bit_is_clear (PIND, PIND2)){
if( (!prell) && (!flag) ){ channel++; flag = 1; }else{ prell--; }
}else{
prell = 255;
flag = 0;
}
if( channel > 3 ){ channel = 0;}
switch(channel){
case 0: PORTC = ( PORTC & ~0x3C) | (0x04 & 0x3C); PORTD = ( PORTD & ~0x18 )|(0x00 & 0x18); break;
case 1: PORTC = ( PORTC & ~0x3C) | (0x08 & 0x3C); PORTD = ( PORTD & ~0x18 )|(0x08 & 0x18); break;
case 2: PORTC = ( PORTC & ~0x3C) | (0x10 & 0x3C); PORTD = ( PORTD & ~0x18 )|(0x10 & 0x18); break;
case 3: PORTC = ( PORTC & ~0x3C) | (0x20 & 0x3C); PORTD = ( PORTD & ~0x18 )|(0x18 & 0x18); break;
}
}
}
Lade ich das Programm, ist der Controller weg!
Er lässt sich nicht mehr ansprechen.
An den FUSES wurde nichts geändert. NUR geflasht!
Als ich das erste mal geflacht habe, war es das selbe Programm, nur ohne den "if(bit..." Teil. Lade ich diese, so kann man nichts mehr machen...
Controller hinüber sozusagen...
Ich flashe sonst immer ATmega32 und 128... da gabs nie sowas.
Mit dem ATmega8 stell ich mich immer so blöd an anscheinend!
Der mag mich einfach nicht hab ich das Gefühl.
Ich kann mir das nicht erklären. Ich hab ihn jetzt schon das dritte mal gewechselt. Und immerwieder kommt das Problem!
Ich hoffe Ihr könnt mir helfen.. Ich zweifle schön langsam an meinem Verstand! DAS GIBDS DOCH NICHT ODER?
Und schön langsam geht es auch ins Geld
Bild hier
Lesezeichen